1、内部文档采购、接收、应付业务和会计分录财务模块分录整理文档作者: 巩学伟创建日期: 2009-07-15更新日期: 2009-07-15文档编号: 当前版本: 1.0审批签字:第 2 页共 16 页 文档控制变更记录3日期 作者 版本 变更说明08/10/15 巩学伟 1.0 初版审阅姓名 职位分发拷贝编号 姓名 位置/岗位1234第 3 页共 16 页 目录文档控制 ii企业采购业务 .4采购接收4交货入库5应付发票6应付贷项通知单7应付借项通知单8付款8其他应付业务 .11费用报表11手工应付发票11应付发票导入固定资产11预付款发票12子模块追溯 .13附 :R12 中子模块的帐是如何产
2、生的。 14更改历史 .16第 4 页共 16 页 企业采购业务采购业务是一般企业都会有的业务,主要包括请购、采购、接收、入库、发票、付款几个步骤。分别对应采购、库存、成本、应付以及总账模块。Oracle 是财务业务一体化的系统,只要录入了相应的业务,则会自动生成相应的财务信息。本文档基于 Oracle EBS R12 版本测试。采购接收采购模块主要功能是帮助业务部门管理采购订单,控制采购流程,审批层次,在请购单、和采购订单录入审批阶段是不产生财务信息的。现假设企业采购两批原材料,价格 50*2=100 元。企业当前的银行存款为 100 元,库存成本为 0。在采购订单接收时,实际上表示物料采购
3、已既成事实,我们将因此产生一笔因采购产生的应计负债,同时记一笔帐到我们的采购接收帐户。采购接收的会计分录为:商品采购 DR 100¥应付帐款-应付暂估 CR 100¥商品采购和应付帐款-应付暂估都是中转科目,相关科目的余额变化如下:科目 初 发生 末商品采购 0 +100 100¥应付帐款-应付暂估 0 +100 100¥入库和创建发票分录后,这两个科目余额将会结平为 0。这里为了更直观显示财务变化境况,而实时计算了各科目的余额,并同时假设所有科目的期初金额为 0,这样做的目的仅仅是为了更好理解一些中转科目的余额变化情况,EBS 实际业务中科目余额的变动都是要在子模块传送至总账,并过账以后才发
4、生的。具体的分录产生流程如下:1) 接收事务处理器采购接收以后会自动运行“接收事务处理器”。接收事务处理器会在rcv_receiving_sub_ledger 中产生采购接收的会计分录。11i 和 R12 中都会在 rcv_receiving_sub_ledger 中产生分录,可以通过如下po_rcv_ledger.sql 查询 。po_rcv_ledger.sql这也就是我们“接收事务处理汇总”界面查看到的分录。第 5 页共 16 页 2) 传送总账此时,R12 中运行“创建会计科目 - 成本管理”请求,会产生子模块的会计分录,可以通过如下 po_rcv_xla_ledger.sql 查询
5、。po_rcv_xla_ledger.sql再提交“将日记帐分录传送至 GL - 成本管理”请求,则会插入分录信息至总账接口,则可以导入日记账过账。注意:11i 中,采购接收在总账日记账中的来源是 “Purchasing”,类别是 “Receiving”;而在 R12 中,采购接收在总账日记账的来源为 “Cost Management”,类别是“Receiving”。交货入库采购接收以后则可以进一步交货入库。同样会执行“接收事务处理器”,不过这一次做的事情更多,取成本(成本核算方式不同,取成本的逻辑亦不同),插入记录至mtl_material_transactions 表等。此时还不会立刻产生
6、入库的分录,成本管理器运行以后,则会产生库存模块的分录, 将商品采购科目的余额转移至库存成本帐户。同时,如果采用标准成本,采购价格和入库成本的不同则可能产生 PPV(采购价格差异 Purchase Price Variance)。假设物料的成本为 80¥,分录如下:库存商品成本 DR 80¥PPV DR 20¥商品采购 CR 100¥相关科目的余额变化如下:科目 初 发生 末库存商品成本 0 +80 80¥PPV 0 +20 20¥商品采购 100 -100 0¥中转科目商品采购科目的余额已结平为 0。具体如何查询分录参考如下 sql。1) 子模块所有的库存物料事务处理(包括采购收货、字库转移
7、、组织间转移、销售发放等等)的会计分录信息都在 mtl_transaction_accounts 表中,采购收货的分录信息则可以如下查询。po_rcv_inv_ledger.sql 。po_rcv_inv_ledger.sql第 6 页共 16 页 同时,xla 中的分录可以从如下 sql 查看。po_rcv_inv_xla_ledger.sql 。po_rcv_inv_xla_ledger.sql2) 总账提交请求“将日记帐分录传送至 GL - 成本管理”,将子模块分录传送至总账。此时总账将生成来源为 je_source=Cost Management and je_category=Inv
8、entory的日记账分录。到这里,东西已经买到并入库计入成本,接下来到付钱了。应付发票应付发票可以手工录入。与采购有关的发票需要通过匹配采购订单生成应付发票。 根据采购项目的税码,会自动或手工产生税行。如果收到的发票价格与采购价格有差异,还将产生 IPV(发票价格差异 Invoice Price Variance)。这里我们假设供应商给我们开出发票的价格为 80¥,与我们的采购价格产生了 20¥的 IPV。税码为 VAT17。因此采购匹配的应付发票会计分录为:应付帐款-应付暂估 DR 100¥暂估与发票差异(IPV) DR -20¥进项税 DR 80*0.17¥应付帐款-发票款 CR 93.6
9、相关科目的余额变化如下:科目 初 发生 余额应付帐款-应付暂估 100 -100 0¥暂估与发票差异(IPV) 0 -20 -20¥进项税 0 -13.6 -13.6¥(应交税费属于负债类科目)应付帐款-发票款 0 +93.6 93.6¥中转科目应付帐款-应付暂估科目的余额已结平为 0。同时,由于供应商开出的发票价格为 80,存在-20 的 IPV,因此我们实际的应付账款为 80+80*1.17。1) 录入发票AP 发票的分配记录了所有应付暂估和预付款核销的科目,再加上应付发票本身的应付账款科目,此时可以如下查询分录:ap_inv_ledger.sql 。ap_inv_ledger.sql第
10、7 页共 16 页 2) 创建会计分录创建会计分录后,会在 xla 中产生分录信息,可以通过如下 sql 查询:ap_inv_xla_ledger.sqlap_inv_xla_ledger.sql3) 传送总账接下来,运行请求”将日记帐分录传送至 GL”,将在总账产生日记账分录。来源为je_source= Payables and je_category=Purchase Invoices。应付贷项通知单应付贷项通知单与应付借项通知单与对应应收的概念并不等同,可以参照我之前的文档。应付贷项通知单,指供应商开给我们的表示应付减少的通知,负数,冲原始发票,可用 0 支付结清应付贷项通知单常用于做采
11、购退货业务,发生采购退货业务后,在应付录入应付贷项通知单,同时匹配退货生成贷项通知单行。为了更容易理解,我们结合整个退货流程来认识贷项通知单业务。退货流程:1) 接收- 退货假设我们交货后发现 2 批原材料中一批由于某种原因需要退货,通过接收-退货导航录入采购订单,执行退货业务。保存以后触发接收事务处理器,生成如下分录(与采购接收的分录方向恰恰相反):商品采购 CR 50应付帐款-应付暂估 DR 50减少商品采购中转科目的余额,减少应付暂估中转科目的余额。相关科目的余额变化如下:科目 初 发生 余额商品采购 0 -50 -50¥应付帐款-应付暂估 0 -50 -50¥以上分录可以通过前面的 p
12、o_rcv_ledger.sql 和 po_rcv_xla_ledger.sql 查询。同时,在成本管理器运行以后,退货产生库存成本变动的分录,如下(与采购接收入库的分录方向恰恰相反):第 8 页共 16 页 库存商品成本 CR 40¥PPV CR 10¥商品采购 DR 50¥减少库存成本和 PPV,增加商品采购,相关科目的余额变化如下:科目 初 发生 余额库存商品成本 80 -40 40¥PPV 20 -10 10¥商品采购 -50 +50 0¥中转科目商品采购科目的余额已结平为 0。以上分录可以通过前面的 po_rcv_inv_ledger.sql 和 po_rcv_inv_xla_led
13、ger.sql 查询。2) 贷项通知单匹配退货通过应付款发票界面录入类型为贷项通知单的应付发票,然后通过匹配采购退货产生贷项通知单行。对于采购退货业务的分录如下(与应收发票的分录方向恰恰相反 ):应付帐款-应付暂估 CR 50¥暂估与发票差异(IPV) CR -10¥进项税 CR 40*0.17¥(应交税费属于负债类科目)应付帐款-发票款 DR 93.6/2¥相关科目的余额变化如下:科目 初 发生 余额应付帐款-应付暂估 -50 +50 0¥暂估与发票差异(IPV)-20 +10 -10¥进项税 -13.6 +6.8 -6.8¥应付帐款-发票款 93.6 -46.8 46.8¥中转科目应付帐款
14、-应付暂估科目的余额已结平为 0。这样,退货的最终结果就是使库存成本和应付账款-发票款相应减少。可以通过上面 ap_inv_ledger.sql 和 ap_inv_xla_ledger.sql 查询贷项通知单有关的分录信息。应付借项通知单借项通知单,指我们自己开出的表示应付减少的通知,同样是负数,冲原始发票,可用 0 支付结清。我个人的理解是,应付借项通知单,适用于发票做错后的反冲。功能上它与贷项通知单基本相似。也可用于退货业务。在采购退货界面有是否生成借项通知单的复选框,通过采购系统选项控制是否启用。第 9 页共 16 页 付款发票生成并验证通过以后,可以对发票进行付款。可以在发票界面通过快
15、速付款,付款界面录入人工付款,或者进行批付款对发票进行批量付款。批付款常应用于员工报销付款。在付款界面,将蓝票(应付发票)和红票(贷项通知单)选入到同一个付款,进行付款。对发票付款,实际上就是用现金支付应付欠款,现金与应付款都减少,由于我们产生过退货业务,因此,产生分录如下:应付帐款-发票款 DR 46.8¥银行存款 CR 46.8¥相关科目的余额变化如下:科目 初 发生 余额应付帐款-发票款 46.8 -46.8 0¥银行存款 100 -46.8 53.2¥可以看到,经过各个阶段的业务流程,最终形成的分录实际上等效于如下分录,在企业仅上线财务而没上线业务模块的时候,需要手工做如下分录,由此可
16、见,财务业务一体化提供了很大的便捷性:库存商品成本 DR 40¥PPV DR 10¥IPV DR -10¥进项税 DR 6.8¥银行存款 CR 46.8¥最后,到月底,企业结账,手工做如下两笔分录调整 IPV 和 PPV 差异1)库存商品成本 DR 10¥PPV CR 10¥2)库存商品成本 CR 10¥IPV DR 10¥调整后 PPV 和 IPV 分别结平为 0。1) 对发票付款创建会计分录以后,可以通过如下 sql 查询到分录信息。第 10 页共 16 页 ap_pay_xla_ledger.sqlap_pay_xla_ledger.sql2) 传送总账。接下来,运行请求” 将日记帐分录
17、传送至 GL”,将在总账产生日记账分录。来源为je_source= Payables and je_category= Payments 。第 11 页共 16 页 其他应付业务其他应付业务,以及部分 FA 业务。费用报表费用报表是网上报销模块导入的一种类型的应付发票,当网上报销流程结束并审核通过后,可以通过请求“导入费用报表”导入应付发票。除了与标准应付发票的科目有所不同。其他作用等同于标准应付发票。企业报销的分录通常如下:员工报销科目 DR其他应付款-报销 CR具体如何查询分录信息参考前面标准发票通过 ap_inv_ledger.sql 和ap_inv_xla_ledger.sql 查询。
18、手工应付发票应付除了用于与采购模块集成外,还可以通过应付发票做些其他的杂项业务。记录些与采购无关的业务。例如,企业招待客户时,员工张某代为支付客户招待费 100 元,为了之后偿还该员工供应商张某这 100 元,可以如下建应付发票:直接用手工录入发票分配:招待费 100 元;并指定负债帐户为:其他应付款。产生分录如下:招待费 DR 100¥其他应付款 CR 100¥未上线网上报销模块时常常如上手工建立应付发票实现员工报销。具体如何查询分录信息参考前面标准发票通过 ap_inv_ledger.sql 和ap_inv_xla_ledger.sql 查询。应付发票导入固定资产应付发票可以成批增加为固定
19、资产。有两种方式建立应付发票:1) 直接定义固定资产型物料,其属性不可库存,并制定它的销售费用科目为固定资产中转科目。该种类型物料接收、交货通常不会产生会计分录,然后通过正常采购并匹配应付发票。这时候,应付发票的分录应为:第 12 页共 16 页 DR 固定资产中转CR 应付帐款它的分录信息可以通过上面的 ap_inv_ledger.sql 和 ap_inv_xla_ledger.sql 查询。2) 手工录入应付发票,并指定发票分配科目为固定资产中转科目。它的分录同上。最后,在应付模块提交请求“创建成批增加”后,则可以在 FA 模块成批增加资产。最终过账后,会形成如下分录。DR 固定资产CR
20、固定资产中转固定资产中转科目结清为 0.FA 创建会计分录后,有关固定资产的分录信息,可以通过fa_add_derp_ledger.sql 查询。fa_add_derp_ledger.sql预付款发票预付款发票可以用以核销标准发票,他与标准发票的分录有所不同,不过技术实现上是一样的。它的分录通常是:DR 预付账款CR 应付帐款当核销时,他的分录为DR 应付账款CR 预付账款它的分录信息可以通过上面的 ap_inv_ledger.sql 和 ap_inv_xla_ledger.sql 查询。第 13 页共 16 页 子模块追溯R12 R12 下总账追溯子模块比 11i 简单统一了很多,通过 gl
21、_import_reference 表,如下蓝色部分 sql 为关键点:SELECT h.je_source,h.je_category,fnd_flex_ext.get_segs(SQLGL, GL#, 50328, ael.code_combination_id) acct,xla_oa_functions_pkg.get_ccid_description(50328,ael.code_combination_id) acct_descr,ael.entered_dr,ael.entered_crFROM gl_je_headers h,gl_je_lines l,gl_code_comb
22、inations gcc,gl_period_statuses gps,gl_import_references ir,xla_ae_lines aelWHERE h.je_header_id = l.je_header_idAND l.code_combination_id = gcc.code_combination_idAND l.period_name = gps.period_nameAND gps.application_id = 101AND gps.set_of_books_id = 2022AND h.actual_flag = AAND h.period_name = 20
23、09-01AND ir.je_header_id = l.je_header_idAND ir.je_line_num = l.je_line_numAND ael.gl_sl_link_id = ir.gl_sl_link_idAND ael.gl_sl_link_table = ir.gl_sl_link_table; 11i附上以前写的一个 11i 的总账追溯子模块的三栏明细账的sql:11i_gl_journal_drill.sql, 11i 下测试通过,可以参考。11i_gl_journal_drill.sql第 14 页共 16 页 附 :R12 中子模块的帐是如何产生的。1) 在
24、 FORM:ARXRWMAI 的按钮 SLACEXEC.OK_BP 触发器中有提交创建的代码 :arp_sla_submit.which_case;2)包 arp_sla_submit 在 pll 文件 ARSLAOLS.pll 中。3)在 arp_sla_submit.which_case 中执行以下过程,将 FORM 界面上的信息传入过程submit_xla_accounting4) submit_xla_accounting 过程调用以下数据库 package 创建会计科目XLA_ACCOUNTING_PUB_PKG.accounting_program_document5)在 XLA_
25、ACCOUNTING_PUB_PKG 中根据 p_offline_flag 的取值,分别调用xla_accounting_pkg.accounting_program_document或者调用创建会计科目的请求6)在 xla_accounting_pkg 中调用下面过程xla_accounting_pkg.accounting_program_events7)在 events_processor 在调用 handle_accounting_hook 调根据 application_id 分别调用CASE WHEN p_application_id = 200 THEN xla_ap_acct_
26、hooks_pkg.main WHEN p_application_id = 222 THENxla_ar_acct_hooks_pkg.main WHEN p_application_id = 140 THEN xla_fa_acct_hooks_pkg.main WHEN p_application_id = 260 THEN xla_ce_acct_hooks_pkg.mainWHEN p_application_id = 555 THEN xla_gmf_acct_hooks_pkg.main WHEN p_application_id = 801 THEN xla_pay_acct_hooks_pkg.main 第 15 页共 16 页 ELSE END CASE; 其中 event_name 为 extract。然后调用 arp_xla_extract_main_pkg.extract 来取子模块的分配。其主要作用是将来自子模块的分配。AR 的发票、调整、收款、核销等子模块的帐的分配插入 ar_xla_lines_extract 临时表,在这个 package 中可以看到 xla 是如何从业务模块数据取数的。 第 16 页共 16 页 更改历史