Vietnam Journal Voucher Report
The Vietnamese statutory journal voucher — each accounting voucher in the local format with accounts, amounts, and the chart-of-accounts detail Vietnamese bookkeeping requires.
Run note · BIP run High-volume GL extracts can exceed BI Publisher's online output limit and time out. Run it as a scheduled process (ESS) with output bursted to file or email rather than online preview, and bound it by ledger and period.
Sample build of the Vietnam Journal Voucher Report — reconciled, and rendered tool-neutral so it runs in Power BI, ThoughtSpot, or Tableau.
| Voucher No | Date | Account | Description | Debit | Credit |
|---|---|---|---|---|---|
| 1001 | 2026-04-30 | 1000-2100-000 | Sample | $1,240,500.00 | $1,240,500.00 |
| 1002 | 2026-03-31 | 1000-5400-000 | — | $842,150.75 | $842,150.75 |
| 1003 | 2026-02-28 | 1000-1410-000 | Sample | $96,400.00 | $96,400.00 |
| 1004 | 2026-01-31 | 2000-2100-000 | — | $1,005,233.10 | $1,005,233.10 |
| 1005 | 2025-12-31 | 1000-6300-000 | Sample | $58,720.40 | $58,720.40 |
| 1001 | 2026-04-30 | 1000-2100-000 | Sample | $1,240,500.00 | $1,240,500.00 |
The report reads GL_JE_LINES per voucher with the Vietnamese chart-of-accounts segments.
Nine vouchers are missing a required chart-of-accounts segment value, so the statutory voucher won't validate.
Make the segment mandatory at entry for Vietnamese ledgers; a blank required segment is the usual voucher-rejection cause.
This is the report's BI Publisher data model — the SQL data set BI Publisher runs against Oracle tables to produce the output. The same SQL becomes a dbt model in your warehouse, so one definition drives both the formatted report and the analytics layer.
Data sources
Show / hide SQL
-- CUSTOM Vietnam Journal Voucher Report SQL
select /*+parallel(12)*/
gjh.posting_acct_seq_value
,to_char(gjh.default_effective_date, 'DD-MON-YYYY','nls_date_language=American') Accounting_Date
,gl.chart_of_accounts_id
,ffv.flex_value||' - '||ffvtl1.description||' / '||ffv.description Account, gjh.description Journal_Description
,gjh.je_source
,gjs.user_je_source_name
,gjh.je_category
,gjc.user_je_category_name
,gjl.currency_code entered_curr
,gjl.entered_dr
,gjl.entered_cr
,gl.currency_code account_curr
,gjl.accounted_dr
,gjl.accounted_cr
,gjl.je_line_num
,gjh.je_header_id
from gl_je_headers gjh
, gl_je_lines gjl
, gl_code_combinations gcc
, gl_ledgers gl
, fnd_id_flex_segments_vl ffs
, fnd_flex_values_vl ffv
, fnd_flex_values_tl ffvtl1
, gl_je_sources gjs
, gl_je_categories gjc
where 1=1
and gjh.STATUS ='P'
and gjh.je_header_id = gjl.je_header_id
and gjl.code_combination_id= gcc.code_combination_id
and gl.ledger_id=gjl.ledger_id
and ffs.segment_name ='Account' and ffs.enabled_flag='Y'
and ffs.flex_value_set_id = ffv.flex_value_set_id
and gl.chart_of_accounts_id = ffs.id_flex_num
and ffv.flex_value = gcc.segment4
and ffv.FLEX_VALUE_ID = ffvtl1.FLEX_VALUE_ID
and ffvtl1.LANGUAGE ='VN'
and gjh.je_source = gjs.je_source_name
and gjh.je_category =gjc.je_category_name
--and gl.ledger_category_code ='PRIMARY'
--and gl.name ='PL VIETNAM VND GAAP'
and gl.ledger_category_code ='SECONDARY'
and gl.name ='SL VIETNAM VND LOCAL'
AND gjh.default_effective_date BETWEEN :p_from_date AND :p_to_date
AND (:p_source IS NULL OR gjh.je_source IN (:p_source))
AND (:p_category IS NULL OR gjh.je_category IN (:p_category))
AND (:p_voucher_Number IS NULL OR nvl(gjh.posting_acct_seq_value, 0) = :p_voucher_Number)
and gl.ledger_id in (
select distinct le.ledger_id
from fusion.fun_user_role_data_asgnmnts role
,fusion.gl_access_sets gl
,fusion.per_users pu
,fusion.per_roles_dn_vl pr
,fusion.gl_access_set_ledgers ac
,gl_ledgers le
where gl.access_set_id = role.access_set_id
and pu.user_guid = role.user_guid
and pr.role_common_name = role.role_name
and role.ACTIVE_FLAG ='Y'
and ac.access_set_id = gl.access_set_id
and le.ledger_id=ac.ledger_id
and pu.username = fnd_global.user_name
--and le.name ='PL VIETNAM VND GAAP'
--and le.ledger_category_code ='PRIMARY'
and le.name ='SL VIETNAM VND LOCAL'
and le.ledger_category_code ='SECONDARY'
)
--and gjh.description like '%1060914%'
--and gjh.je_header_id=100069
--and gjh.je_batch_id=99109
ORDER BY gjh.posted_date ,gjh.JE_HEADER_ID, gjl.je_line_numThe data-warehouse model — one fact surrounded by conformed dimensions (what you slice by) and measures (what you aggregate), expressed as dbt so it migrates with you. Grain: one row per source transaction.
| Element | Type | Definition |
|---|---|---|
| GL_JE_LINES | dimension | dimension |
| GL_CODE_COMBINATIONS | dimension | dimension |
| GL_LEDGERS | dimension | dimension |
| FND_FLEX_VALUES_VL | dimension | dimension |
| Debit | measure | measure |
| Credit | measure | measure |
Every source object behind this report. Each linked table has its own page with full column descriptions, drawn from the Oracle BICC lineage and articulated for practitioners.
| Table | Reporting columns | Subject areas |
|---|---|---|
| GL_JE_HEADERS | 34 | 2 |
| GL_JE_LINES | 26 | 2 |
| GL_CODE_COMBINATIONS | 7 | 61 |
| GL_LEDGERS | 10 | 104 |
| FND_FLEX_VALUES_VL | 72 | 0 |