应付付款导入
- 格式:docx
- 大小:60.21 KB
- 文档页数:17
教学过程讨论: 在现实中企业采购与付款的基本流程。
课程导入第一节采购与应付系统概述一、一、采购与付款过程概述采购与付款过程是企业物资供应部门取得企业生产经营活动所需要的各种物资, 并支付货款的过程。
1. 采购与付款过程的目标2. 采购与付款过程的内容二、采购和应付核算概述1.按实际成本计价与核算2.按计划成本计价与核算三、采购与应付的管理1.采购量的控制2.采购成本的控制3.资金流的控制4.物流的控制第三节采购与应付系统功能模块应用一、采购与应付系统功能模块结构二、采购与应付系统功能模块应用(一)相关子系统与相互接口在K3系统中, 赊购业务处理涉与到多个子系统, 主要包括采购管理、仓存管理、存货核算、应付款管理、现金管理、总账、应收款管理、主生产计划、物料需求计划、质量管理。
各子系统实现数据共享, 协作完成流程中各业务和财务处理工作。
(二)主要功能模块1. 采购管理子系统的功能模块⑧⑤③存货核算子系统⑥质量管理子系统①主生产计划子系统/物料需求计划子系统④应付款管理子系采购管理子系统⑦总账子系统应收款管理子系统仓存管理子系② 销售管理子系统现金管理子系统 采购管理子系统2. 应付款管理子系统的功能模块应付款管理子系统(三)采购管理系统初始化1.采购管理系统的参数设置(1)核算参数设置系统需要设置的核算参数包括以下内容:①启用年度和启用期间②核算方式③库存结余控制④库存更新控制(2)系统参数设置系统参数是定义业务操作的基本信息、操作原则和方法。
1. 2. 录入基础资料供应链管理涉与到的基础资料主要包括会计科目、核算项目、凭证字、币别、计量单位、仓库和仓位、客户、部门、职员、物料、供应商、结算方式等。
其中会计科目、核算项目、凭证字、币别、部门、职员、结算方式等资料的录入参见总账子系统, 仓库和仓位资料的录入参见仓存管理子系统, 客户资料的录入参见销售管理子系统。
3. 输入期初数据为了保证经营运作的连贯性和启用期前、后业务处理的平滑连接, 实现初始设置与正常业务的融合, 需要将启用期前未完成的业务处理或存在的结余逐笔反映到信息系统中。
应付款管理业务的操作流程如下:1、应付单据审核2、付款单据录入及审核3、付款4、核销处理5、取消核销业务6、月末结帐一、应付单审核1.根据下图选择相应的过滤条件,点击上图中的“确定”按钮财务会计—应付款管理—应付单据审核—过滤—确定2. 根据上图选择相应的应付单据,确认无误后,点击下图中的“审核”按钮,对应付单据进行审核。
应付单据审核操作完毕。
3.生成凭证财务会计—应付款管理—转帐—制单处理注意:选择后,点制单;若多张,点合并,可以合并制单,形成应付款图32、付款单据录入企业实际给输入“摘要”,会计科目,保存即可。
图4二、付款单据录入及审核1、供应商开出付款后,需要在应付款管理中录入付款单据,形成应付款项财务会计—应付款管理—付款单据处理—付款单据录入—增加新增一张付款单,输入这张付款单的具体内容,如金额、款项类型、结算方式、供应商等。
2、付款单录入正确无误后,点击上图中的“保存”及“审核”按钮。
三、对付款单生成凭证。
1、财务会计—应付款管理—制单处理选择收付款单制单,生成付款凭证。
2、其他转帐处理1)应付冲应付:指将一家供应商的应付款转到另一家供应商中。
通过本功能将应付款业务在客商之间进行转入、转出,实现应付业务的调整,解决应付款业务在不同客商间入错户或合并户问题。
在货款、其他应付款和预收款复选框中选择需要处理的单据。
输入转出户、转入户等过滤条件,单击〖过滤〗按钮。
2)预付冲应付:3)红票对冲:用某供应商的红字发票与其蓝字发票进行冲抵,分为手工冲销和自动冲销◆手工冲销:输入需要进行红票对冲的供应商、币种、方向。
输入红票过滤条件、蓝票过滤条件后,点击“确定”按钮。
◆自动冲销:输入进行红票对冲的过滤条件如日期、供应商、币种。
输入后,点击〖确认〗按钮,进行自动对冲。
图略4)应付冲应收:用应付款冲抵应收款,则须选中“应付冲应收”。
选择“预收冲预付”,则可选择预收款冲抵预付款操作。
5)制单:用鼠标单击左边选择“制单类型”,制单类型包括发票制单和应付单制单、结算单制单、核销制单、票据处理制单、并账制单、现结制单、坏账处理制单、转账制单、汇兑损益制单。
一、实训目的本次实训旨在通过实际操作,让学生熟悉和掌握应付款管理系统的基本操作流程,提高学生对企业应付款管理工作的认识,培养实际操作能力和数据分析能力。
二、实训时间2023年10月1日至2023年10月10日三、实训内容本次实训主要围绕应付款管理系统的以下功能模块展开:1. 系统初始化2. 供应商管理3. 采购订单管理4. 应付账款管理5. 付款管理6. 报表分析四、实训步骤(一)系统初始化1. 启用系统:在系统管理模块中,启用应付款管理系统。
2. 设置参数:根据企业实际情况,设置系统参数,如币种、汇率、结算方式等。
3. 初始化数据:将企业现有的供应商、采购订单、应付账款等数据导入系统。
(二)供应商管理1. 添加供应商:在供应商管理模块中,添加供应商信息,包括供应商名称、地址、联系方式等。
2. 维护供应商信息:对供应商信息进行修改、删除等操作。
(三)采购订单管理1. 创建采购订单:根据采购需求,创建采购订单,填写采购商品信息、数量、单价等。
2. 审核采购订单:对采购订单进行审核,确认订单信息无误后,提交订单。
3. 生成采购发票:根据审核通过的采购订单,生成采购发票。
(四)应付账款管理1. 生成应付账款:根据采购发票,生成应付账款,记录应付金额、付款期限等信息。
2. 维护应付账款:对应付账款进行修改、删除等操作。
3. 生成付款计划:根据应付账款,生成付款计划,安排付款时间。
(五)付款管理1. 创建付款申请:根据付款计划,创建付款申请,填写付款金额、付款方式等信息。
2. 审核付款申请:对付款申请进行审核,确认无误后,提交付款申请。
3. 生成付款凭证:根据审核通过的付款申请,生成付款凭证。
(六)报表分析1. 应付账款报表:查看应付账款汇总表、明细表等,了解企业应付账款情况。
2. 付款报表:查看付款汇总表、明细表等,了解企业付款情况。
3. 供应商报表:查看供应商汇总表、明细表等,了解供应商信息。
五、实训总结通过本次实训,我深刻认识到应付款管理系统在企业财务管理中的重要作用。
应付模块基础资料设定序:本章主要讲解应付模块基础资料设定一、流程图二、作业内容1)、维护应付管理参数2)、维护应付单据性质1、7101材料采购应付单2、7102委外应付单3、7103庶务应付单4、7104固定资产应付单5、7105期初开账应付单6、7106应付发票不进行控制7、7301其他应付单8、7401付款单9、7501退款单10、7601应付转销单11、7801应付调汇单12、7B01材料暂估单13、7B02委外暂估单3)、维护账龄分析模板4)、维护其他收付项目5)、查询会计期间6)、设置启用期间7)、期初开账料品建立8)、维护应付单期初数据录入9)、修改后台不让生成分录维护应付管理参数维护应付单据性质维护账龄分析模板维护其他收付项目查询会计期间设置启用期间维护应付单期初数据录入期初开账料品建立修改后台不让生成分录三、维护应付管理参数首页此作业由资讯室统一期初设定,设定一次就行1)、作业路径“集团公共管理系统\系统参数\维护应付管理参数”1、在左边的树状图,找到维护应付管理参数单击打开它,或者在右边的流程图找到单击打开,如图1图12)、操作步聚1、双击打开维护应付管理参数窗口2、选择公司东莞泉声公司,双击打开它如图2图23、单击“”修改按钮,勾选“暂估单流程”,选择“月初冲回”,单击“”保存按钮,如图3图3相关说明内容:暂估冲回方式:月初冲回、单到冲回、单到补差1.月初冲回:将上月底的暂估凭证,在本月初时,原数冲回,生成暂估冲回凭证。
2.单到冲回:采购发票到达时,按暂估原数生成暂估冲回凭证,并按发票数重新生成凭证。
3.单到补差:采购发票到达时,按发票与暂估的差异生成凭证默认与带值: 1.月初冲回。
四、维护应付单据性质首页此作业由资讯室统一期初设定,设定一次就行<1>、7101材料采购应付单1)、作业路径“集团财务管理系统\应付管理\基础数据\维护应付单据性质”1、在左边的树状图,找到维护应付单据性质单击打开它,或者在流程图找到打开它,如图4图42)、操作步聚1、在“浏览-维护应付单据性质”窗口,单击“”新增按钮,如图5图52、“单据性质”选择71.应付单,“单据类型”输入7101,“单据名称”输入材料采购应付单3、在“基本信息”栏区,“核销方式”选择明细,勾选税务发票控制,在编码规则区,“编码方式”选择日编,“年位数”为公元四码,“流水号位数”为3码,如图6图63、单击“打印设置”,给此单据类型选择打印凭证样式,之后单击“”保存按钮,7101材料采购应付单单据类型就设好了。
应付模块操作手册一、应付模块1.应付单据的操作1)登陆到应付款管理系统,打开“应付单录入”,如图3-1-1:图3-1-1:选择单据名称、单据类型、方向,确定。
进入应付单录入界面,如图3-1-2如图3-1-2注意:若启用“采购管理”,这里只包含其他应付单,若未启用“采购管理”,包含其他应付单及采购发票。
2)录入应付单信息后,点。
如下:3)审核无误后点,系统会调出生成凭证的窗口,具体如下图:4)点,出现如下凭证窗口:5)确认无误后,点,系统自动生成凭证,并标明,如下图:6)这样“应付单”制作完毕。
7)对于采购传递过来的发票,同样要审核并制单。
如下图:双击打开发票,并审核,如下:点,并制单,如下:点,退出该张单据,审核制单完成。
2.付款单据的操作1)打开付款单录入,如下:2)点,并录入付款信息,并点,如下,3)确认无误后,点,如下:4)点,关闭凭证,回到付款单界面,点,进入核销窗口,如下:5)在下方栏目中的中录入核销的金额,,然后点,如下图:6)核销窗口,付款单窗口,付款单据操作完毕。
扣除10000后剩余的未核销金额3.核销、转帐3.1 核销处理:包括:手工核销、自动核销手工核销:1)登陆到应付系统,打开“手工核销”,并选择供应商,点,如图:以下操作与付款核销方式相同。
自动核销1)登陆到应付系统,点自动核销,如下:2)选择供应商名称,以及付款单据、应付单据后,点,系统便会自动将应付与付款核销掉。
注意:批量核销不支持异币种核销,若有异币种,必须通过付款单据核销。
3.2 转帐处理1)进入应付系统,选择“应付冲应付”,如下图:输入转出户与转入户,点,系统会在表格中显示出转出户的应付信息,如下:输入并帐金额,点确定,系统便会自动完成001向002的转帐,并提示制单,如下:点“是”,进入制单窗口:审核无误后,点生成凭证,如下:2)登陆应付系统,选择“预付冲应付”,并录入预付信息、应付信息,如下图:点“确定”,并制单,如下:3)登陆应付系统,进入“应付冲应收”,并录入供应商及客户信息,如下:输入金额后,确定制单:如下:。
应付管理模块操作手册应付管理模块操作路径:业务工作-》财务会计-》应付款管理1、应付单据处理1)进入应付款管理模块,打开“应付单录入”,如图:2)选择需要输入单据名称、单据类型、方向,确定。
进入发票或其他应付单的录入界面(以其他应付单为例):3)依次输入应付单相关信息后,点击。
4)确认输入的单据无误后,点击,完成单据的审核确认,系统将提示是否生成相应的财务凭证,点击确认可以生成相应的财务凭证。
5)凭证生成后,点击,后退出。
2、付款单据处理1)点击付款单据处理-》付款单录入:依次输入付款单表头信息。
输入完成后,点击2)预付处理时,可对表体款项类型进行修改:3)确认单据录入无误后,点击审核,进入到制单提示界面:4)点击,确认生成对应的财务凭证。
5)确认凭证无误后,直接点击生成财务凭证。
3、核销处理1)点击核销处理-》手工核销(自动核销用于付款单和应付单据一一对应的情况,手工核销可以自己选择对应的单据进行核销),选择需要进行核销处理的供应商及相应的核销条件,如下:2)核销条件输入完成后,点击确定进入核销界面:3)根据付款单的本次结算金额,选择需要进行核销的单据,输入对应的结算金额(必须保证付款的结算金额和应付的结算金额一致)4)结算金额分配完成后,点击,完成本次核销处理,核销处理后的界面:4、转账处理1)转账处理的操作包括:应付冲应付,预付冲应付,应付冲应收以及红票对冲。
●红票对冲的操作同核销处理。
●其他3中转账处理的方式基本一样。
这里以(应付冲应付为例):点击转账-》应付冲应付,进入转账处理界面:2)在转账界面,输入需要转出以及转入的供应商后,点击,过滤出转出供应商对应的应付单据:2)在过滤出来的应付单据界面:输入需要进行转账处理的金额后,点击确定。
3)确定完成后,可以对转账业务进行凭证的生成:5、汇兑损益处理1)点击汇兑损益菜单,进入月末汇兑损益计算界面,双击选择需要进行汇兑损益的币种后,点击下一步:2)系统将根据月末汇率进行汇兑损益的自动计算:3)点击完成完成汇兑损益的计算,同时生成对应的汇兑损益凭证:6、取消处理1)对于部分错误的业务操作,可以进行取消操作:(如:核销,汇兑损益及转账处理),点击其他处理-》取消操作:2)选择需要进行取消操作的操作类型,点击确定进入取消界面:3)选择需要进行取消操作的单据,点击进行取消操作。
会计操作技能教案应付账款的管理与付款流程会计操作技能教案应付账款的管理与付款流程一、概述应付账款是指企业购买商品、接受服务或从供应商借款后尚未付款的金额。
作为会计工作者,了解和掌握应付账款的管理与付款流程是十分重要的。
本教案旨在介绍应付账款的管理方法和付款流程,并提供相应的操作技巧。
二、应付账款的管理1. 建立供应商档案供应商档案是用于记录和管理所有供应商信息的重要工具。
档案应包含供应商的名称、地址、联系方式、结算方式等基本信息,并方便地进行分类和检索。
2. 确认应付账款当企业收到供应商的发票或对账单时,应及时核对商品或服务的数量、价格以及其他相关信息,并确认应付账款的准确性。
在确认过程中,务必实施严格的审批流程,确保账款信息的准确性和合法性。
3. 记账处理确认应付账款后,根据企业的会计准则和规定,进行相应的记账处理。
一般情况下,应付账款会记录在负债科目下,并根据付款的频率进行相应的账务处理。
4. 定期与供应商对账为了确保企业与供应商之间的账务准确和一致,应定期与供应商进行对账。
对账时,要逐项核对发票、结算单、付款凭证等相关资料,确保应付账款的准确性,并及时解决账务差异和疑问。
三、付款流程1. 审批付款当确认应付账款准确无误后,需要进行付款审批。
付款审批的流程可以根据企业的内部要求进行制定,例如,一般需要经过部门经理审批、财务主管审批和总经理审批等。
2. 准备付款获得付款审批后,财务人员需要准备付款所需的相关材料。
这些材料包括付款申请单、付款凭证、发票复印件等。
3. 执行付款根据企业的付款政策和要求,完成付款操作。
一般情况下,企业会选择网银、支票或电汇等方式进行付款,并及时记录付款的相关信息,以备日后查阅和审计需要。
4. 记账处理在付款完成后,需要及时进行记账处理。
将付款金额从应付账款科目中划出,并记录在银行存款科目下,确保账务准确和一致。
四、操作技巧1. 建立科学的应付账款管理体系,包括供应商档案管理、账务处理流程、对账流程等。
应付付款程序实现Author: 孙令朝Creation Date: 2017-08-12Last Updated: 2017-08-12Document Ref:Version: 1.0Approvals:<Approver 1>孙令朝<Approver 2>Copy No. _____Document ControlChange Record17ReviewersDistributionNote To Holders:If you receive an electronic copy of this document and print it out, please write yourname on the equivalent of the cover page, for document control purposes.If you receive a hard copy of this document, please write your name on the frontcover, for document control purposes.ContentsDocument Control _____________________________________________________________________ 2 Contents _____________________________________________________________________________ 3总体说明_____________________________________________________________________________ 4文档目的 ______________________________________________________________________________________ 4内容 __________________________________________________________________________________________ 4参考文档____________________________________________________________________________ 16 Open and Closed Issues for this Deliverable ______________________________________________ 17 Open Issues __________________________________________________________________________________ 17 Closed Issues ________________________________________________________________________________ 17总体说明文档目的由于应付付款在R11上面没有提供现有的api或者接口表的方式,做应付付款的时候模拟了form操作,已在R11上完成测试。
内容背景:三方抵账需要做应付的付款导入。
系统版本:应用版本:11.5.9程序实现创建ap付款,需要关联要付款的发票。
目前已知的是应付付款没有api和接口表,故如果要做付款的话就需要模拟form的操作。
生成付款的步骤大致分为:1.将数据插入到ap_checks_all种2.更新表AP_CHECK_STOCKS_ALL3.创建付款的event4.匹配付款的发票应付付款的核心表:ap_checks_all下面存储过程已在R11上测试通过。
Procedure Import_Ap_Check(p_Init_Msg_List In Varchar2 Default Fnd_Api.g_False, p_Commit In Varchar2 Default Fnd_Api.g_False, x_Return_Status Out Nocopy Varchar2,x_Msg_Count Out Nocopy Number,x_Msg_Data Out Nocopy Varchar2,p_Org_Id In Number,p_Vendor_Num In Varchar2,p_Date_f In Date,p_Date_t In Date) Isl_Api_Name Constant Varchar2(30) := 'Import_Ap_check';l_Savepoint_Name Constant Varchar2(30) := 'Import_Ap_check_Sp';l_Progress Varchar2(200);l_Err_Flag Varchar2(10) := 'S';l_Process_Flag Varchar2(32);l_Process_Msg Varchar2(240);--l_Line_Number Number := 0;l_Invoice_Num Varchar2(32);l_Invoice_Id Number;l_Invoice_Line_Id Number;l_Dist_Ccid Number;x_Std_Invoice_Id Number;x_Std_Invoice_Num Varchar2(50);--l_Check_Id Number;l_Check_Number Number;l_Check_Amount Number;l_Checked_Amount Number;l_Payment_Amount Number;x_Accounting_Event_Id Number;l_Payment_Type Varchar2(32);l_Check_Stock_Id Number;l_Check_Format_Id Number;l_Document_Num Number;l_Bank_Account_Id Number;l_Bank_Account_Name Varchar2(50);l_Bank_Account_Num Varchar2(50);l_Bank_Acc_Type Varchar2(32);l_Bank_Currency Varchar2(32);l_Bank_Mutl_Currency Varchar2(32);l_Vendor_Id Number;l_Vendor_Name Varchar2(50);l_Vendor_Site_Id Number;l_Vendor_Site_Code Varchar2(50);l_Vendor_City Varchar2(50);l_Vendor_Country Varchar2(50);l_Vendor_Province Varchar2(50);l_Address_Line1 Varchar2(240);l_Address_Line2 Varchar2(240);l_Address_Line3 Varchar2(240);l_Address_Type Varchar2(240);l_Vendor_County Varchar2(50);l_Vendor_State Varchar2(50);l_Invoice_Payment_Id Number;l_Conversion_Rate Number := 0;l_Conversion_Type Varchar2(120);l_Conversion_Date Date;l_Period_Name Varchar2(32);Ap_Checks_Rec Ap_Checks_All%Rowtype;--Cursor Crs_Check IsSelect Cdc.Interface_Id,Cdc.Vendor_Number,Cdc.Vendor_Name,Cdc.Vendor_Site_Code,Cdc.Payment_Amount,Cdc.Currency_Code,Cdc.Payment_Date,Cdc.Audit_Name,Cdc.Checked_AmountFrom Cux_Ed_Ap_Check_Iface CdcWhere Cdc.Synchro_Flag = 'Y'And Cdc.Ebs_Process_Flag In ('E', 'N')And Cdc.Vendor_Number = Nvl(p_Vendor_Num, Cdc.Vendor_Number) And (p_Date_f Is Null Or(p_Date_f Is Not Null And Cdc.Payment_Date >= p_Date_f)) And (p_Date_t Is Null Or(p_Date_t Is Not Null And Cdc.Payment_Date <= p_Date_t)) Order By Cdc.Vendor_Number;Cursor Crs_Vendor_Remain(l_Vendor_Num Varchar2, l_Payment_Date Date) IsSelect Aia.Invoice_Id,Aia.Invoice_Num,Aia.Invoice_Type_Lookup_Code,Aia.Invoice_Amount,Aps.Amount_Remaining,Aia.Gl_Date,Aia.Invoice_Currency_Code,Aia.Vendor_IdFrom Ap_Invoices_All Aia,Po_Vendors Pv,Ap_Payment_Schedules_All ApsWhere Aia.Attribute1 = '043'_Id = g_Org_IdAnd (Ap_Invoices_Pkg.Get_Approval_Status(Aia.Invoice_Id,Aia.Invoice_Amount,Aia.Payment_Status_Flag,Aia.Invoice_Type_Lookup_Code) In ('UNPAID', 'APPROVED'))And Aia.Payment_Status_Flag In ('N', 'P')And Aia.Invoice_Amount <> 0And Aia.Vendor_Id = Pv.Vendor_IdAnd Pv.Enabled_Flag = 'Y'And (Pv.End_Date_Active Is Null OrPv.End_Date_Active >= Trunc(Sysdate))And Aps.Invoice_Id = Aia.Invoice_Id_Id = _IdAnd Aps.Amount_Remaining <> 0And Pv.Segment1 = l_Vendor_NumAnd Aia.Gl_Date <= l_Payment_DateOrder By Aia.Gl_Date;Begin--Program startx_Return_Status := Cux_Api.Start_Activity(p_Pkg_Name => g_Pkg_Name,p_Api_Name => l_Api_Name,p_Savepoint_Name => l_Savepoint_Name, p_Init_Msg_List => p_Init_Msg_List); Raise_Exception(x_Return_Status);Fnd_Global.Apps_Initialize(User_Id => 0,Resp_Id => 50257,Resp_Appl_Id => 200);l_Progress := 'Start...';For Rec_Check In Crs_Check Loopl_Progress := 'A: Check_Interface';Log(l_Progress);Check_Interface(x_Return_Status => x_Return_Status,x_Msg_Count => x_Msg_Count,x_Msg_Data => x_Msg_Data,p_Interface_Id => Rec_Check.Interface_Id);Log('Interface_Id:' || Rec_Check.Interface_Id);If x_Return_Status = Fnd_Api.g_Ret_Sts_Success Thenl_Process_Flag := 'Y';--创建保留点Dbms_Transaction.Savepoint('Create_ap_check_Sp');BeginSelect Ap_Checks_s.Nextval Into l_Check_Id From Dual;l_Progress := 'B :get_bank_info';Select Apcs.Check_Stock_Id,Apcs.Check_Format_Id,st_Document_Num + 1,Apba.Bank_Account_Id,Apba.Bank_Account_Name,Apba.Bank_Account_Num,Apba.Account_Type,Apba.Currency_Code,Apba.Multi_Currency_FlagInto l_Check_Stock_Id,l_Check_Format_Id,l_Document_Num,l_Bank_Account_Id,l_Bank_Account_Name,l_Bank_Account_Num,l_Bank_Acc_Type,l_Bank_Currency,l_Bank_Mutl_CurrencyFrom Ap_Bank_Accounts_All Apba, Ap_Check_Stocks_All ApcsWhere Apba.Bank_Account_Num = g_Bank_Account_Num_Id = g_Org_IdAnd Apba.Set_Of_Books_Id = g_Sob_Id_Id = _IdAnd Apcs.Bank_Account_Id = Apba.Bank_Account_Id;Select Last_Document_Num + 1Into l_Check_NumberFrom Ap_Check_Stocks_AllWhere Check_Stock_Id = l_Check_Stock_Id;Update Ap_Check_Stocks_AllSet Last_Document_Num = l_Check_Number,Last_Update_Date = Sysdate,Last_Updated_By = g_User_IdWhere Check_Stock_Id = l_Check_Stock_Id;l_Progress := 'C :get_vendor_info';Select Pv.Vendor_Id,Pv.Vendor_Name,Pvs.Vendor_Site_Id,Pvs.Vendor_Site_Code,Pvs.City,Pvs.Country,Pvs.Province,Pvs.County,Pvs.State,Pvs.Address_Line1,Pvs.Address_Line2,Pvs.Address_Line3,Pvs.Address_StyleInto l_Vendor_Id,l_Vendor_Name,l_Vendor_Site_Id,l_Vendor_Site_Code,l_Vendor_City,l_Vendor_Country,l_Vendor_Province,l_Vendor_County,l_Vendor_State,l_Address_Line1,l_Address_Line2,l_Address_Line3,l_Address_TypeFrom Po_Vendors Pv, Po_Vendor_Sites_All PvsWhere Pv.Segment1 = Rec_Check.Vendor_Number/* And Pv.Enabled_Flag = 'Y'And (Pv.End_Date_Active Is Null OrPv.End_Date_Active > Sysdate)*/And Pv.Vendor_Id = Pvs.Vendor_Id_Id = g_Org_IdAnd Pvs.Vendor_Site_Code = g_Vendor_Site_Code;/*And (Pvs.Inactive_Date Is Null Or Pvs.Inactive_Date > Sysdate)*/Select Al.Displayed_FieldInto l_Payment_TypeFrom Ap_Lookup_Codes AlWhere Al.Lookup_Type = 'PAYMENT TYPE'And Al.Lookup_Code = g_Payment_Type;If Rec_Check.Currency_Code <> 'CNY' ThenBeginSelect Dr.Conversion_Rate,Dr.Conversion_Date,er_Conversion_TypeInto l_Conversion_Rate,l_Conversion_Date,l_Conversion_TypeFrom Gl_Daily_Rates_v DrWhere Dr.From_Currency = Rec_Check.Currency_CodeAnd Dr.To_Currency = 'CNY'And er_Conversion_Type = '公司'And Dr.Conversion_Date = Rec_Check.Payment_Date;ExceptionWhen Others Thenl_Err_Flag := 'U';l_Process_Flag := 'E';Log('对应币种、汇率类型、汇率日期的汇率不存在!');Raise Fnd_Api.g_Exc_Unexpected_Error;End;/*l_Conversion_Type := 'User'; --rec_data.exchange_rate_type;l_Conversion_Date := p_Payment_Rec.Payment_Date;l_Conversion_Rate := Rec_Data.Exchange_Rate;*/Elsel_Conversion_Type := Null; --rec_data.exchange_rate_type;l_Conversion_Date := Null; --p_payment_rec.payment_date;l_Conversion_Rate := Null;End If;l_Period_Name := Get_Cur_Period(Rec_Check.Payment_Date,Fnd_Global.Application_Short_Name, g_Sob_Id);l_Progress := 'D :insert_into_ap_check';l_Check_Amount := Rec_Check.Payment_Amount -Nvl(Rec_Check.Checked_Amount, 0);Ap_Checks_Rec := Null;--whoAp_Checks_Rec.Created_By := g_User_Id;Ap_Checks_Rec.Creation_Date := Sysdate;Ap_Checks_st_Updated_By := g_User_Id;Ap_Checks_st_Update_Date := Sysdate;Ap_Checks_st_Update_Login := g_Login_Id;--Ap_Checks_Rec.Payment_Type_Flag := g_Payment_Type;Ap_Checks_Rec.Check_Voucher_Num := Null; --凭证编号Ap_Checks_Rec.Check_Date := Rec_Check.Payment_Date;Ap_Checks_Rec.Check_Id := l_Check_Id;Ap_Checks_Rec.Check_Number := l_Check_Number;Ap_Checks_Rec.Checkrun_Name := '配件DMS付款''' || l_Payment_Type || ':标识 = ' || l_Check_Id; --批名--Ap_Checks__Id := g_Org_Id;Ap_Checks_Rec.Amount := l_Check_Amount;Ap_Checks_Rec.Currency_Code := Rec_Check.Currency_Code;Ap_Checks_Rec.Exchange_Rate := l_Conversion_Type;Ap_Checks_Rec.Exchange_Date := l_Conversion_Date;Ap_Checks_Rec.Exchange_Rate_Type := l_Conversion_Rate;Ap_Checks_Rec.Base_Amount := l_Check_Amount *Nvl(l_Conversion_Rate,1); --本位币金额Ap_Checks_Rec.Maturity_Exchange_Rate_Type := 'User';Ap_Checks_Rec.Check_Format_Id := l_Check_Format_Id;Ap_Checks_Rec.Check_Stock_Id := l_Check_Stock_Id;Ap_Checks_Rec.Bank_Account_Id := l_Bank_Account_Id;Ap_Checks_Rec.Bank_Account_Num := l_Bank_Account_Num;Ap_Checks_Rec.Bank_Account_Type := l_Bank_Acc_Type;Ap_Checks_Rec.Bank_Account_Name := l_Bank_Account_Name;--Ap_Checks_Rec.Vendor_Id := l_Vendor_Id;Ap_Checks_Rec.Vendor_Name := l_Vendor_Name;Ap_Checks_Rec.Vendor_Site_Id := l_Vendor_Site_Id;Ap_Checks_Rec.Vendor_Site_Code := l_Vendor_Site_Code;Ap_Checks_Rec.Address_Style := l_Address_Type;Ap_Checks_Rec.Address_Line1 := l_Address_Line1;Ap_Checks_Rec.Address_Line2 := l_Address_Line2;Ap_Checks_Rec.Address_Line3 := l_Address_Line3;Ap_Checks_Rec.City := l_Vendor_City;Ap_Checks_Rec.Country := l_Vendor_Country;Ap_Checks_Rec.County := l_Vendor_County;Ap_Checks_Rec.Province := l_Vendor_Province;Ap_Checks_Rec.State := l_Vendor_State;--Ap_Checks_Rec.Status_Lookup_Code := 'NEGOTIABLE';Ap_Checks_Rec.Payment_Method_Lookup_Code := g_Payment_Method_Code; --从哪里取--Ap_Checks_Rec.Attribute_Category := Null;Ap_Checks_Rec.Attribute1 := Rec_Check.Audit_Name;Ap_Checks_Rec.Attribute3 := g_Attribute3;Ap_Checks_Rec.Attribute4 := g_Attribute4;Insert Into Ap_Checks_All Values Ap_Checks_Rec;-- Events Project ---------------------------------------------------- The call below will create a Payment Event when a row is inserted-- into the table AP_CHECKS. This is applicable for a NEW payment-- and Pay-In-Full. This code will not be invoked for when we make-- an adjustment to an existing payment.-- -----------------------------------------------------------------l_Progress := 'E :Create_Events';Ap_Accounting_Events_Pkg.Create_Events(p_Event_Type => 'PAYMENT',p_Doc_Id => l_Check_Id,p_Accounting_Date => Trunc(Sysdate),p_Accounting_Event_Id => x_Accounting_Event_Id,p_Checkrun_Name => Null,p_Calling_Sequence => 'Pay Invoice Forms<- Pre_inser trigger');-- We want to stamp the Accounting_Event_ID for the Payment-- Event on all the AWT distributions that have been created-- as a result of this check.------------------------------------------------------------l_Progress := 'F :Update_Awt_Int_Dists';Ap_Accounting_Events_Pkg.Update_Awt_Int_Dists(p_Event_Type => 'PAYMENT',p_Check_Id => l_Check_Id,p_Accounting_Event_Id =>x_Accounting_Event_Id,p_Calling_Sequence => 'Pay Invoice Forms <- Pre_insert trigger');ExceptionWhen Others ThenDbms_Transaction.Rollback_Savepoint('Create_ap_check_Sp');l_Err_Flag := 'E';l_Process_Flag := 'E';l_Process_Msg := '创建付款失败!' || Substr(Sqlerrm, 1, 200);Log(l_Process_Msg);End;--如果insert Ap_Checks_All 正常进行下一步If l_Process_Flag <> 'E' Thenl_Checked_Amount := 0;For Rec_Vendor_Remain In Crs_Vendor_Remain(Rec_Check.Vendor_Number,Rec_Check.Payment_Date) LoopSelect Ap_Invoice_Payments_s.NextvalInto l_Invoice_Payment_IdFrom Dual;l_Progress := 'G :Ap_Pay_Invoice ' ||Rec_Vendor_Remain.Invoice_Num;If Rec_Vendor_Remain.Amount_Remaining <=Rec_Check.Payment_Amount - l_Checked_Amount Thenl_Payment_Amount := Rec_Vendor_Remain.Amount_Remaining;Elsel_Payment_Amount := Rec_Check.Payment_Amount -l_Checked_Amount;End If;BeginAp_Pay_Invoice_Pkg.Ap_Pay_Invoice(p_Invoice_Id =>Rec_Vendor_Remain.Invoice_Id,p_Check_Id => l_Check_Id,p_Payment_Num => 1,p_Invoice_Payment_Id => l_Invoice_Payment_Id,p_Old_Invoice_Payment_Id => '',p_Period_Name => l_Period_Name,p_Invoice_Type => Rec_Vendor_Remain.Invoi ce_Type_Lookup_Code,p_Accounting_Date => Rec_Check.Payment_Date, p_Amount => l_Payment_Amount,p_Discount_Taken => 0,p_Discount_Lost => '',p_Invoice_Base_Amount => '',p_Payment_Base_Amount => '',p_Accrual_Posted_Flag => 'N',p_Cash_Posted_Flag => 'N',p_Posted_Flag => 'N',p_Set_Of_Books_Id => g_Sob_Id,p_Last_Updated_By => g_User_Id,p_Last_Update_Login => g_Login_Id,p_Currency_Code => 'CNY',-- p_base_currency_code => 'CNY',p_Exchange_Rate => 1,p_Exchange_Rate_Type => 'USER',p_Exchange_Date => Sysdate,p_Bank_Account_Id => l_Bank_Account_Id,p_Bank_Account_Num => l_Bank_Account_Num,p_Bank_Account_Type => l_Bank_Acc_Type,--p_bank_num => l_bank_num,--p_future_pay_posted_flag=> :p_future_pay_posted_flag,--p_exclusive_payment_flag=> :p_exclusive_payment_flag,--p_accts_pay_ccid => :p_accts_pay_ccid,p_Gain_Ccid => '',p_Loss_Ccid => '',--p_future_pay_ccid => :p_future_pay_ccid,--p_asset_ccid => :p_asset_ccid,p_Payment_Dists_Flag => 'N',p_Payment_Mode => 'PAY',p_Replace_Flag => 'N',--p_global_attribute_category=> :p_global_attribute_category,p_Calling_Sequence => 'Pay Invoice Forms<- Pre_inser trigger',p_Accounting_Event_Id => x_Accounting_Event_Id);l_Checked_Amount := l_Checked_Amount + l_Payment_Amount;l_Process_Flag := 'Y';l_Process_Msg := Null;ExceptionWhen Others Thenl_Err_Flag := 'U';l_Process_Flag := 'E';l_Process_Msg := '付款关联发票时出错 ' || Sqlerrm;Log(l_Process_Msg);End;--记录付款发票Cux_Ap_Dms_Check_Imp_Pkg.Insert_Check_Record(p_Interface_Id =>Rec_Check.Interface_Id,p_Invoice_Id => Rec_Vendor_Remain.In voice_Id,p_Invoice_Num => Rec_Vendor_Remain.In voice_Num,p_Invoice_Date =>Rec_Vendor_Remain.Gl_Date,p_Vendor_Id =>Rec_Vendor_Remain.Vendor_Id,p_Remaining_Amount=> Rec_Vendor_Remain.Amount_Remaining,p_Payment_Amount => l_Payment_Amount,p_Process_Flag => l_Process_Flag,p_Process_Msg => l_Process_Msg);Exit When Rec_Check.Payment_Amount <= l_Checked_Amount;End Loop;--If l_Checked_Amount = 0 Then--一笔发票也没有关联,就回退Dbms_Transaction.Rollback_Savepoint('Create_ap_check_Sp');l_Process_Flag := 'E';l_Err_Flag := 'E';l_Process_Msg := '关联发票出错:' || x_Msg_Data;Log(l_Process_Msg);l_Check_Id := Null;Elsif l_Checked_Amount > 0 ThenIf l_Checked_Amount <> Rec_Check.Payment_Amount Thenl_Process_Flag := 'E';l_Err_Flag := 'U';l_Process_Msg := '关联发票出错:' || x_Msg_Data;Log(l_Process_Msg);Elsel_Process_Flag := 'Y';l_Process_Msg := Null;End If;End If;Elsel_Check_Id:= Null;l_Check_Number :=Null;End If; --l_Process_Flag<>'E'Elsel_Err_Flag := 'U';l_Process_Flag := 'E';l_Process_Msg := '记录验证失败:' || x_Msg_Data;Log(l_Process_Msg);l_Check_Id := Null;End If; --end if 数据验证--更新状态Update Cux_Ed_Ap_Check_Iface CpdSet Cpd.Checked_Amount = l_Checked_Amount,Cpd.Check_Id = l_Check_Id,Cpd.Check_Num = l_Check_Number,Cpd.Ebs_Process_Flag = l_Process_Flag,Cpd.Ebs_Process_Date = Sysdate,Cpd.Error_Message = l_Process_Msg,st_Update_Login = g_Login_Id,st_Updated_By = g_User_Id,st_Update_Date = Sysdate,Cpd.Program_Application_Id = g_Prog_Appl_Id,Cpd.Program_Id = g_Program_Id,Cpd.Program_Update_Date = Sysdate,Cpd.Request_Id = g_Request_IdWhere Cpd.Interface_Id = Rec_Check.Interface_Id;Commit;End Loop;Raise_Exception(l_Err_Flag);l_Progress := 'End...';x_Return_Status := Cux_Api.End_Activity(p_Pkg_Name => g_Pkg_Name,p_Api_Name => l_Api_Name,p_Commit => p_Commit,x_Msg_Count => x_Msg_Count,x_Msg_Data => x_Msg_Data);Raise_Exception(x_Return_Status);ExceptionWhen Fnd_Api.g_Exc_Error ThenFnd_Msg_Pub.Add_Exc_Msg(g_Pkg_Name,l_Api_Name,'Execute Error at: ' || l_Progress);x_Return_Status := Cux_Api.Handle_Exceptions(p_Pkg_Name => g_Pkg_Name,p_Api_Name => l_Api_Name,p_Savepoint_Name => l_Savepoint_Name,p_Exc_Name => Cux_Api.g_Exc_Name_Error, x_Msg_Count => x_Msg_Count,x_Msg_Data => x_Msg_Data);When Fnd_Api.g_Exc_Unexpected_Error ThenFnd_Msg_Pub.Add_Exc_Msg(g_Pkg_Name,l_Api_Name,'Unexception Error at: ' || l_Progress);x_Return_Status := Cux_Api.Handle_Exceptions(p_Pkg_Name => g_Pkg_Name,p_Api_Name => l_Api_Name,p_Savepoint_Name => l_Savepoint_Name,p_Exc_Name => Cux_Api.g_Exc_Name_Unexp, x_Msg_Count => x_Msg_Count,x_Msg_Data => x_Msg_Data);When Others ThenFnd_Msg_Pub.Add_Exc_Msg(g_Pkg_Name,l_Api_Name,'Other Error at: ' || l_Progress || ' ' ||Sqlerrm);x_Return_Status := Cux_Api.Handle_Exceptions(p_Pkg_Name => g_Pkg_Name,p_Api_Name => l_Api_Name,p_Savepoint_Name => l_Savepoint_Name,p_Exc_Name => Cux_Api.g_Exc_Name_Others, x_Msg_Count => x_Msg_Count,x_Msg_Data => x_Msg_Data);End Import_Ap_Check;注意事项:1.保证付款的金额和发票匹配的金额相同,最好在匹配之前完成校验2.付款金额要和发票的余额相同,如果不相同也不会报错,但是会出现发票的会计分录出问题,具体表现为:付款多出来的金额出现在汇率转换的科目上,同时数据借贷方金额为0,造成传总账出错。