insert all
when(line_id = 1) then
into
xla_transaction_entities
(upg_batch_id
,entity_id
, ……)
values
(……)
into
xla_events
(upg_batch_id
,entity_id
,event_id
,……)
values(……)
into
xla_ae_headers
(upg_batch_id
,entity_idnt_id
,ae_header_id
, ……)
values
(……)
when
(1 = 1) then
into
xla_ae_lines
(upg_batch_id
,ae_header_id
,ae_line_num, ……)
values
(……)
into
xla_distribution_links
(upg_batch_id
,event_id
,ae_header_id
,ae_line_num
, ……)
values
(……)
select …… from ……;
上面提到的gl_import_references.gl_sl_link_id字段就是和xla_ae_lines.gl_sl_link_id字段关联,在这些表中和子模块关联的字段在xla_transaction_entities中,该表中有如下形式的字段
源表关联字段
source_id_int_num
source_id_char_num
这两个字段是用来和源模块关联,该字段的设置是在各个子模块:
路径是:设置>>会计科目设置>>子分类帐会计设置>>会计方法生成器>>事件>>事件模型
界面如下:该界面的实体代码就是对应xla_transaction_entities表中的ENTITY_CODE字段,每个来源就标示了该子分类帐是哪个模块产生的。
下载 (36.44 KB)
2009-2-19 20:58
点击[标示]进入如下界面:该界面中的实体表列字段时子模块相关源表的字段,标示列就是SLA中
xla_transaction_entities表的列,SLA和字模块的联系就是通过该界面的设置来完成的。
下载 (46.95 KB)
2009-2-19 20:58
安全性控制字段
security_id_char_num
security_id_int_num
这两个字段是用来进行安全验证,数据屏蔽使用
xla_transaction_entities是有VDP验证的表,各个模块使用的策略函数是
通过设置>>会计科目设置>>子分类帐会计设置>>子分类帐应用产品 来设置的,
如AP模块使用的是:XLA_SECURITY_POLICY_PKG.MO_POLICY,在该方法中有一句很重要
FUNCTION MO_Policy
(p_obj_schema
IN
VARCHAR2
,p_obj_name
IN
VARCHAR2)
RETURN
VARCHAR2
IS
l_mo_policy
VARCHAR2(4000);
l_log_module
VARCHAR2(240);
BEGIN
IF g_log_enabled THEN
l_log_module := C_DEFAULT_MODULE||'.MO_Policy';
END
IF;
IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
trace('MO_Policy.Begin',C_LEVEL_PROCEDURE,l_log_module);
END
IF;
l_mo_policy := mo_global.org_security
( obj_schema => null
,obj_name
=> null
);
IF (C_LEVEL_STATEMENT >= g_log_level) THEN
trace('l_mo_policy after calling
mo_global.org_security = ' || l_mo_policy,C_LEVEL_STATEMENT,l_log_module);
END
IF;
l_mo_policy := REGEXP_REPLACE(l_mo_policy, 'org_id', 'security_id_int_1',1,1);
-- Security identifiers are not populated. In case of, manual journal entires
-- or third party merge events.
-- bug 4717192, add the if condition
IF(l_mo_policy is
not
null) THEN
l_mo_policy := l_mo_policy || ' OR security_id_int_1 IS NULL ';
END
IF;
xla_utility_pkg.print_logfile
('l_mo_policy after replace = ' || l_mo_policy);
IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
trace('MO_Policy.End',C_LEVEL_PROCEDURE,l_log_module);
END
IF;
RETURN(l_mo_policy);
END MO_Policy;
一般的MOAC
VPD使用的字段时ORG_ID该处是将ORG_ID替换为security_id_int_1,很明显了
现在分析了GL和SLA以及 SLA和字模块之间联系,在加上上面的那段插值代码中对应的表关系,就很容易整理
出常见的追溯关系了,可能也有特殊情况没有涉及到。
下面是一个实例 :
首先看**这边的分配,该分配是对应于SLA中的表xla_distribution_links
在该情况下可以查询出每个会计帐户的明细来历,这是AP**的分配
select aid.invoice_distribution_id "分配ID"
,aid.invoice_line_number "**行号"
,distribution_line_number 分配行号
,aid.rcv_transaction_id 接收事务id
,aid.amount "金额"
from ap_invoice_distributions aid
,ap_invoices
api
where api.invoice_id = aid.invoice_id
and aid.invoice_id = 10140
order
by aid.invoice_line_number
,distribution_line_number;
分配ID
|
**行号
|
分配行号
|
接收事务ID
|
金额
|
15000
|
1
|
1
|
4
|
5000
|
15003
|
1
|
2
|
4
|
-5000
|
15001
|
2
|
1
|
|
0
|
15002
|
2
|
2
|
|
0
|
15004
|
2
|
3
|
|
0
|
15005
|
2
|
4
|
|
0
|
15007
|
2
|
5
|
|
0
|
15008
|
2
|
6
|
|
0
|
15010
|
2
|
7
|
|
0
|
15011
|
2
|
8
|
|
0
|
15006
|
3
|
1
|
4
|
1500
|
15009
|
3
|
2
|
4
|
-1500
|
该分配在SLA中每行会生成两行数据
select xte.source_id_int_1
"**ID"
,xdl.source_distribution_id_num_1
"源分配ID"
,xdl.ae_line_num
"SLA行号"
,xdl.unrounded_entered_dr
"借"
,xdl.unrounded_entered_cr
"贷"
,xdl.applied_to_source_id_num_1
"没清楚"
,gjl.code_combination_id
"GL帐户"
from xla_ae_lines
xal
,xla_distribution_links
xdl
,xla_transaction_entities xte
,xla_events
xe
,gl_import_references
gir
,gl_je_lines
gjl
where xal.ae_header_id = xdl.ae_header_id(+)
and xal.ae_line_num = xdl.ae_line_num(+)
and xte.application_id = xdl.application_id
and xte.entity_id = xe.entity_id
and xe.event_id = xdl.event_id
and xe.application_id = xdl.application_id
and gir.gl_sl_link_id = xal.gl_sl_link_id
and gjl.je_header_id = gir.je_header_id
and gjl.je_line_num = gir.je_line_num
and xal.ae_header_id = 14012
and xdl.application_id = 200
order
by xdl.source_distribution_id_num_1;
**ID
|
源分配ID
|
SLA行号
|
借
|
贷
|
没清楚
|
GL帐户
|
10140
|
15000
|
1
|
5000
|
|
61
|
1004
|
10140
|
15000
|
3
|
|
5000
|
10140
|
1009
|
10140
|
15001
|
2
|
|
0
|
10140
|
1009
|
10140
|
15001
|
5
|
0
|
|
10140
|
1028
|
10140
|
15002
|
4
|
0
|
|
10140
|
1004
|
10140
|
15002
|
2
|
|
0
|
10140
|
1009
|
10140
|
15003
|
1
|
|
5000
|
61
|
1004
|
10140
|
15003
|
3
|
5000
|
|
10140
|
1009
|
10140
|
15004
|
5
|
0
|
|
10140
|
1028
|
10140
|
15004
|
2
|
|
0
|
10140
|
1009
|
10140
|
15005
|
4
|
0
|
|
10140
|
1004
|
10140
|
15005
|
2
|
|
0
|
10140
|
1009
|
10140
|
15006
|
1
|
1500
|
|
61
|
1004
|
10140
|
15006
|
3
|
|
1500
|
10140
|
1009
|
10140
|
15007
|
2
|
|
0
|
10140
|
1009
|
10140
|
15007
|
5
|
0
|
|
10140
|
1028
|
10140
|
15008
|
4
|
0
|
|
10140
|
1004
|
10140
|
15008
|
2
|
|
0
|
10140
|
1009
|
10140
|
15009
|
1
|
|
1500
|
61
|
1004
|
10140
|
15009
|
3
|
1500
|
|
10140
|
1009
|
10140
|
15010
|
2
|
|
0
|
10140
|
1009
|
10140
|
15010
|
5
|
0
|
|
10140
|
1028
|
10140
|
15011
|
2
|
|
0
|
10140
|
1009
|
10140
|
15011
|
4
|
0
|
|
10140
|
1004
|
分析:应付分配中的账户,在SLA中会产生两行数据,并且这两行数据借贷相反 金额相同。
从GL查行数据,在GL的一个header下的行有可能是经过合并后的行,因此GL的行并不能准确的表示出帐户源的帐户信息,在GL的同一个帐户行可能对应着AP这边很多张**的帐户信息,但会计行中的子分类帐日记帐分录行的每一行则一定对应着同一张**。
如下代码是整理的追溯一般代码
select
'_^_' "KEY"
--======xla_transaction_entities=========--------
,xte.application_id "应用"
,xte.entity_id
,xte.ledger_id "分类帐SOB"
,xte.entity_code
,xett.name "事务实体类型"
,le.name "法人主体"
,le.legal_entity_identifier "人主体所得税纳税登记" --legal_entity_tax
------------------------------
--AP_INVOICES
AP**
INVOICE_ID
--AP_PAYMENTS
AP付款
CHECK_ID
--RECEIPTS
收款
CASH_RECEIPT_ID
--TRANSACTIONS 事务处理
销售** CUSTOMER_TRX_ID
,xte.source_id_int_1 "事务源对应ID"
------------------------------
/*--下面两个字段折旧的时候会有值
,xte.source_id_int_2
,xte.source_id_int_3*/
,xte.security_id_int_1
"ORG_ID"
,xte.source_application_id "源对应应用"
--======xla_event=========--------
,xe.event_type_code --Event type code
,xent.name "事件类型"
-- ,xe.event_status_code --Event status code
-- ,xe.process_status_code --Processing status code
/*This flag indicates whether the event is on hold or not.
possible values: (Y)--yes, (N)--No*/
-- ,xe.on_hold_flag
--==============xla_ae_headers=======-----
,xah.ledger_id "SOB"
,xah.je_category_name --General Ledger category name
,xah.accounting_date
,xah.period_name "期间"
/* ,xah.balance_type_code --Balance type (Actual, Budget, or Encumbrance)
,xah.gl_transfer_date
,xah.accounting_entry_status_code
,xah.accounting_entry_type_code
,xah.zero_amount_flag*/
--==============xla_ae_line=======-----
,xal.ae_line_num
"行号"
,xal.code_combination_id "账户ID"
,gjl.code_combination_id "日记帐gcc"
/* ,xal.gl_transfer_mode_code
,xal.accounting_class_code "会计分类"*/
,xlp.meaning
"会计分类"
,xal.accounted_dr
"入账借项(本位币)"
,xal.accounted_cr
"入账贷项(本位币)"
,xal.currency_code "币种"
,xal.entered_dr
"账户原币借项"
,xal.entered_cr
"账户原币贷项"
,gir.je_line_num "日记帐行号"
,xte.entity_id
,xte.application_id
,xe.event_id
,xah.ae_header_id
,xal.ae_line_num
from xla_transaction_entities xte
,xla_entity_types_tl
xett
,xle_entity_profiles
le
,xla_events
xe
,xla_event_types_tl
xent
,xla_ae_headers
xah
,xla_ae_lines
xal
,xla_lookups
xlp
,gl_import_references
gir
,gl_je_lines
gjl
where
1 = 1
and xte.entity_id = xe.entity_id
and xte.application_id = xe.application_id
and xte.legal_entity_id = le.legal_entity_id(+)
and xah.event_id = xe.event_id
and xah.application_id = xe.application_id
and xent.event_type_code = xe.event_type_code
and xent.application_id = xe.application_id
and xent.language = 'ZHS'
and xah.ae_header_id = xal.ae_header_id
and xah.application_id = xal.application_id
and xlp.lookup_type(+) = 'XLA_ACCOUNTING_CLASS'
and xlp.lookup_code(+) = xal.accounting_class_code
and gir.gl_sl_link_id = xal.gl_sl_link_id
and gir.gl_sl_link_table = xal.gl_sl_link_table
and gjl.je_header_id = gir.je_header_id
and gjl.je_line_num = gir.je_line_num
and xett.entity_code = xte.entity_code
and xett.application_id = xte.application_id
and xett.language = 'ZHS'
and gir.je_batch_id = 3008;
xte_id
|
inc_ID
|
event_id
|
SLA hd_id
|
SLA行
|
GL行
|
SLA_gccID
|
GL_gccID
| edr
| ecr
|
17024
|
10180
|
47028
|
14013
|
1
|
1
|
1004
|
1004
|
3000
|
|
17024
|
10180
|
47028
|
14013
|
2
|
3
|
1009
|
1009
|
|
510
|
17024
|
10180
|
47028
|
14013
|
3
|
3
|
1009
|
1009
|
|
3000
|
17024
|
10180
|
47028
|
14013
|
4
|
1
|
1004
|
1004
|
0
|
|
17024
|
10180
|
47028
|
14013
|
5
|
5
|
1028
|
1028
|
510
|
|
17024
|
10180
|
47035
|
14018
|
1
|
2
|
1009
|
1009
|
2000
|
|
17024
|
10180
|
47035
|
14018
|
2
|
4
|
1010
|
1010
|
|
2000
|
17013
|
10140
|
47017
|
14012
|
1
|
1
|
1004
|
1004
|
0
|
|
17013
|
10140
|
47017
|
14012
|
2
|
3
|
1009
|
1009
|
|
0
|
17013
|
10140
|
47017
|
14012
|
3
|
2
|
1009
|
1009
|
0
|
|
17013
|
10140
|
47017
|
14012
|
4
|
1
|
1004
|
1004
|
0
|
|
17013
|
10140
|
47017
|
14012
|
5
|
5
|
1028
|
1028
|
0
|
|
17004
|
10120
|
47008
|
14011
|
1
|
6
|
6000
|
6000
|
2000
|
|
17004
|
10120
|
47008
|
14011
|
2
|
3
|
1009
|
1009
|
|
0
|
17004
|
10120
|
47008
|
14011
|
3
|
3
|
1009
|
1009
|
|
2000
|
17004
|
10120
|
47008
|
14011
|
4
|
6
|
6000
|
6000
|
0
|
|
17004
|
10120
|
47008
|
14011
|
5
|
5
|
1028
|
1028
|
0
|
|
17015
|
10160
|
47019
|
14003
|
1
|
6
|
6000
|
6000
|
2000
|
|
17015
|
10160
|
47019
|
14003
|
2
|
3
|
1009
|
1009
|
|
0
|
17015
|
10160
|
47019
|
14003
|
3
|
3
|
1009
|
1009
|
|
2000
|
17015
|
10160
|
47019
|
14003
|
4
|
6
|
6000
|
6000
|
0
|
|
17015
|
10160
|
47019
|
14003
|
5
|
5
|
1028
|
1028
|
0
|
|
对上面的分析:对同一来源的会计科目,可以多次创建event。一个GL日记帐头对应的源,可以是多个相同来源会计科目的合并,合并原则推测-------来源,类型,会计期相同(同一个头的条件),gccID相同,借贷方向相同。
但愿上面的草草分析应该能满足一般的需要