<ROOT>
 <APPS_INITIALIZE_DATA>
  <USER_NAME>ENGINATICS</USER_NAME>
  <RESPONSIBILITY_KEY>SYSTEM_ADMINISTRATOR</RESPONSIBILITY_KEY>
  <APPLICATION_SHORT_NAME>SYSADMIN</APPLICATION_SHORT_NAME>
 </APPS_INITIALIZE_DATA>
<REPORTS>
<!-- loader xml for Enginatics Blitz Report: GL Balance by Entered Currency -->
 <REPORTS_ROW>
  <GUID>7CFF657443A541A786C8DF9C2BD61CA6</GUID><ENABLED>Y</ENABLED>
  <SQL_TEXT>select
x.*
from
(
select
gl.name ledger,
gb.period_name,
gcck.concatenated_segments account,
gl.currency_code functional_currency,
sum(case when gb.translated_flag is null then nvl(gb.begin_balance_dr,0)-nvl(gb.begin_balance_cr,0)+nvl(gb.period_net_dr,0)-nvl(gb.period_net_cr,0) end) over (partition by gb.ledger_id, gb.period_name, gb.code_combination_id) functional_currency_balance,
case when gb.translated_flag=&apos;R&apos; then gb.currency_code end entered_currency_code,
case when gb.translated_flag=&apos;R&apos; then nvl(gb.begin_balance_dr,0)-nvl(gb.begin_balance_cr,0)+nvl(gb.period_net_dr,0)-nvl(gb.period_net_cr,0) end entered_currency_balance
from
gl_ledgers gl,
gl_balances gb,
gl_code_combinations_kfv gcck
where
gb.ledger_id=gl.ledger_id and
gb.code_combination_id=gcck.code_combination_id and
gb.actual_flag=&apos;A&apos; and
gb.template_id is null and
(gb.translated_flag=&apos;R&apos; or gb.translated_flag is null and gb.currency_code=gl.currency_code) and
gb.period_name=:p_period_name and
&amp;gl_flex_value_security
gl.ledger_id in
(
select gl2.ledger_id from gl_ledgers gl2 where gl2.ledger_id=:p_ledger_id
union all
select glsnav.ledger_id from gl_ledger_set_norm_assign_v glsnav where glsnav.ledger_set_id=:p_ledger_id
)
)
pivot
(
sum(entered_currency_balance)
for entered_currency_code in
(
&amp;entered_currency_pivot
)
) x
order by
x.ledger,
x.period_name,
x.account</SQL_TEXT>
  <VERSION_COMMENTS>Excluded summary account balances via gb.template_id is null (detail balances only), matching the standard GL Balance report restriction. Without it, summary template balances double count on top of the detail accounts.</VERSION_COMMENTS>
  <NUMBER_FORMAT>#,##0.00;[Red]-#,##0.00</NUMBER_FORMAT>
  <REPORT_TRANSLATIONS>
   <REPORT_TRANSLATIONS_ROW>
    <LANGUAGE>US</LANGUAGE>
    <REPORT_NAME>GL Balance by Entered Currency</REPORT_NAME>
    <DESCRIPTION>Lists GL account balances for a ledger or ledger set and an accounting period, showing the functional currency balance alongside one separate column per entered (transaction) currency.

The entered currency columns are generated dynamically at runtime from the currencies actually found in GL_BALANCES for the selected ledger scope and period, so no currency list is hard coded. Selecting a ledger set produces the union of the currencies of all its assigned ledgers.

A ledger and period with no foreign entered currencies completes normally and returns a single empty placeholder column, rather than failing on an empty PIVOT list.

Balances are actual end balances (opening balance plus period net movement) of detail accounts. The functional currency balance is the account&apos;s total ledger currency balance; the entered currency columns show the amounts entered in each foreign currency (gl_balances rows with translated_flag=&apos;R&apos;). Summary account, statistical (STAT) and translated balances are excluded.</DESCRIPTION>
   </REPORT_TRANSLATIONS_ROW>
  </REPORT_TRANSLATIONS>
  <CATEGORY_ASSIGNMENTS>
  </CATEGORY_ASSIGNMENTS>
  <ANCHORS>
   <ANCHORS_ROW>
    <ANCHOR>&amp;entered_currency_pivot</ANCHOR>
   </ANCHORS_ROW>
   <ANCHORS_ROW>
    <ANCHOR>&amp;gl_flex_value_security</ANCHOR>
   </ANCHORS_ROW>
   <ANCHORS_ROW>
    <ANCHOR>:p_ledger_id</ANCHOR>
   </ANCHORS_ROW>
   <ANCHORS_ROW>
    <ANCHOR>:p_period_name</ANCHOR>
   </ANCHORS_ROW>
  </ANCHORS>
  <PARAMETERS>
   <PARAMETERS_ROW>
    <SORT_ORDER>1</SORT_ORDER>
    <DISPLAY_SEQUENCE>-20</DISPLAY_SEQUENCE>
    <ANCHOR>&amp;gl_flex_value_security</ANCHOR>
    <SQL_TEXT>select &apos;xxen_util.flex_ccid_accessible(fnd_global.resp_appl_id,fnd_global.resp_id,gcck.code_combination_id)=&apos;&apos;Y&apos;&apos; and&apos; from dual where xxen_util.has_flex_value_security=&apos;Y&apos;</SQL_TEXT>
    <PARAMETER_TYPE_DSP>Char</PARAMETER_TYPE_DSP>
    <DEFAULT_VALUE>x</DEFAULT_VALUE>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>GL Flex Value Security</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>2</SORT_ORDER>
    <DISPLAY_SEQUENCE>-10</DISPLAY_SEQUENCE>
    <ANCHOR>&amp;entered_currency_pivot</ANCHOR>
    <SQL_TEXT>select
nvl(
listagg(&apos;&apos;&apos;&apos;||x.currency_code||&apos;&apos;&apos; as &quot;&apos;||x.currency_code||&apos;&quot;&apos;,&apos;,&apos;) within group (order by x.currency_code),
&apos;&apos;&apos;XXX&apos;&apos; as &quot;N/A&quot;&apos;
)
from
(
select distinct
gb.currency_code
from
gl_balances gb
where
gb.period_name=:p_period_name and
gb.actual_flag=&apos;A&apos; and
gb.translated_flag=&apos;R&apos; and
gb.template_id is null and
gb.ledger_id in
(
select gl2.ledger_id from gl_ledgers gl2 where gl2.ledger_id=:p_ledger_id
union all
select glsnav.ledger_id from gl_ledger_set_norm_assign_v glsnav where glsnav.ledger_set_id=:p_ledger_id
)
) x</SQL_TEXT>
    <PARAMETER_TYPE_DSP>Char</PARAMETER_TYPE_DSP>
    <DEFAULT_VALUE>x</DEFAULT_VALUE>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>Entered Currency Pivot</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>3</SORT_ORDER>
    <DISPLAY_SEQUENCE>10</DISPLAY_SEQUENCE>
    <ANCHOR>:p_ledger_id</ANCHOR>
    <PARAMETER_TYPE_DSP>LOV custom</PARAMETER_TYPE_DSP>
    <VALIDATE_FROM_LIST_DSP>Y</VALIDATE_FROM_LIST_DSP>
    <LOV_QUERY_DSP>select
gl.ledger_id id,
gl.name value,
gl.description
from
gl_ledgers gl
where
gl.ledger_id in
(
select gasna.ledger_id from gl_access_set_norm_assign gasna where gasna.access_set_id=fnd_profile.value(&apos;GL_ACCESS_SET_ID&apos;)
union
select nvl(glsnav.ledger_id,gasna.ledger_id) from gl_access_set_norm_assign gasna, gl_ledger_set_norm_assign_v glsnav where gasna.access_set_id=fnd_profile.value(&apos;GL_ACCESS_SET_ID&apos;) and gasna.ledger_id=glsnav.ledger_set_id(+)
)
order by
gl.name</LOV_QUERY_DSP>
    <REQUIRED>Y</REQUIRED>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>Ledger</PARAMETER_NAME>
      <DESCRIPTION>Ledger or ledger set. Selecting a ledger set reports all of its assigned ledgers and produces the union of their entered currencies.</DESCRIPTION>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>4</SORT_ORDER>
    <DISPLAY_SEQUENCE>20</DISPLAY_SEQUENCE>
    <ANCHOR>:p_period_name</ANCHOR>
    <PARAMETER_TYPE_DSP>LOV custom</PARAMETER_TYPE_DSP>
    <VALIDATE_FROM_LIST_DSP>Y</VALIDATE_FROM_LIST_DSP>
    <LOV_QUERY_DSP>select
gps.period_name id,
gps.period_name value,
null description,
max(gps.start_date) start_date
from
gl_period_statuses gps
where
gps.application_id=101 and
gps.ledger_id in
(
select gl2.ledger_id from gl_ledgers gl2 where gl2.ledger_id=:$flex$.Ledger
union all
select glsnav.ledger_id from gl_ledger_set_norm_assign_v glsnav where glsnav.ledger_set_id=:$flex$.Ledger
)
group by
gps.period_name
order by
max(gps.start_date) desc</LOV_QUERY_DSP>
    <REQUIRED>Y</REQUIRED>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>Period</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
  </PARAMETERS>
  <TEMPLATES>
  </TEMPLATES>
  <DEFAULT_TEMPLATES>
  </DEFAULT_TEMPLATES>
  <UPLOAD_COLUMNS>
  </UPLOAD_COLUMNS>
  <UPLOAD_PARAMETERS>
  </UPLOAD_PARAMETERS>
  <UPLOAD_SQLS>
  </UPLOAD_SQLS>
 </REPORTS_ROW>
</REPORTS>
</ROOT>
