AP_1.Invoice 的种类

Invoice的种类:

     Standard: 标准类型发票。

     Credit Memo: 供应商开给我们的用来调整的负数发票。

     Debit Memo:我们开给供应商的用来调整的负数发票。

     Mixed: 当为正数时就是相当于Standard 发票,当为负数时就是Credit 或 Debit 发票。

     

请整理出以下程序包中,关于“结算方式”的取值逻辑create or replace PACKAGE BODY cux_ap_schedule_pkg2 IS PROCEDURE main_bak(p1 OUT VARCHAR2, p2 OUT VARCHAR2, p_org_id IN NUMBER, p_vendor_f IN VARCHAR2, p_vendor_t IN VARCHAR2, p_gl_date_f IN VARCHAR2, p_gl_date_t IN VARCHAR2, p_due_date_f IN VARCHAR2, p_due_date_t IN VARCHAR2, p_yn in varchar2) IS -- v_gl_date_f DATE := trunc(fnd_date.canonical_to_date(p_gl_date_f)); v_gl_date_t DATE := trunc(fnd_date.canonical_to_date(p_gl_date_t)); v_due_date_f DATE := trunc(fnd_date.canonical_to_date(p_due_date_f)); v_due_date_t DATE := trunc(fnd_date.canonical_to_date(p_due_date_t)); v_org_name VARCHAR2(300); -- CURSOR cur_schedule IS SELECT pv.vendor_name --供应商名称 , pvsa.vendor_site_code --供应商地址 , aia.invoice_id, aia.invoice_num --发票编号 , b.displayed_field, ats.name term_name --付款方法 , to_char(aia.gl_date, 'YYYY-MM-DD') gl_date --总帐日期 , to_char(aia.invoice_date, 'YYYY-MM-DD') invoice_date --发票日期 , to_char(aia.terms_date, 'YYYY-MM-DD') terms_date --条件日期 , to_char(apsa.due_date, 'YYYY-MM-DD') due_date --到期日 , aia.invoice_currency_code --币种 , aia.invoice_amount --原币 , nvl(aia.invoice_amount, 0) * nvl(aia.exchange_rate, 1) invoice_amount_b --本位币 , apsa.amount_remaining --到期余额原币 , nvl(apsa.amount_remaining, 0) * nvl(aia.exchange_rate, 1) amount_remaining_b --到期余额本币 , aia.description --摘要 , cuxs_std_report_utl_pkg.get_ccid_segment(gcc.code_combination_id) acc_code, cuxs_std_report_utl_pkg.get_ccid_description(gcc.chart_of_accounts_id, gcc.code_combination_id) acc_desc, decode(NVL(apsa.hold_flag, 'N'), 'N', '否', '是') HOLD_FLAG, ppx.EMPLOYEE_NUMBER FROM ap_payment_schedules_all apsa, po_vendors pv, po_vendor_sites_all pvsa, ap_terms ats, ap_invoices_all aia, ap_lookup_codes b, gl_code_combinations gcc, per_people_x ppx WHERE apsa.invoice_id = aia.invoice_id AND aia.terms_id = ats.term_id AND aia.vendor_id = pv.vendor_id(+) AND aia.vendor_site_id = pvsa.vendor_site_id(+) and pv.EMPLOYEE_ID = ppx.PERSON_ID(+) AND apsa.amount_remaining <> 0 -- AND aia.org_id = p_org_id /*AND pv.segment1 >= nvl(pv.segment1, p_vendor_f) AND pv.segment1 <= nvl(pv.segment1, p_vendor_t)*/ AND aia.invoice_type_lookup_code = b.lookup_code AND b.lookup_type(+) = 'INVOICE TYPE' AND AP_INVOICES_PKG.GET_APPROVAL_STATUS(aia.INVOICE_ID, aia.INVOICE_AMOUNT, aia.PAYMENT_STATUS_FLAG, aia.INVOICE_TYPE_LOOKUP_CODE) NOT IN ('NEEDS REAPPROVAL', 'NEVER APPROVED', 'CANCELLED', 'FULL', 'UNAPPROVED') AND aia.accts_pay_code_combination_id = gcc.code_combination_id(+) AND (pv.segment1 >= p_vendor_f OR p_vendor_f IS NULL) AND (pv.segment1 <= p_vendor_t OR p_vendor_t IS NULL) AND trunc(aia.gl_date) >= trunc(nvl(v_gl_date_f, aia.gl_date)) AND trunc(aia.gl_date) <= trunc(nvl(v_gl_date_t, aia.gl_date)) AND trunc(apsa.due_date) >= trunc(nvl(v_due_date_f, apsa.due_date)) AND trunc(apsa.due_date) <= trunc(nvl(v_due_date_t, apsa.due_date)) ORDER BY pv.vendor_name, to_char(aia.invoice_date, 'YYYY-MM-DD'), aia.invoice_num; cursor cur_pro(p_invoice_id number) is select nvl(ppa1.project_id, ppa.PROJECT_ID) project_id, nvl(ppa1.SEGMENT1, ppa.SEGMENT1) pro_num, nvl(ppa1.NAME, ppa.NAME) pro_name, pav.agent_name, (select d.kb from per_people_x ppx, CUX.CUX_HR_EMPLOYEE_T emp, cux_hr_dept d where ppx.EMPLOYEE_NUMBER = emp.emp_no and emp.ou_code = d.ou_code and ppx.PERSON_ID = pav.agent_id and rownum = 1) kb, case when sum(sum(d.AMOUNT)) over(partition by h.INVOICE_ID) = 0 then 0 else sum(d.AMOUNT) / sum(sum(d.AMOUNT)) over(partition by h.INVOICE_ID) end pro_rate from ap_invoices_all h, ap_invoice_distributions_all d, po_distributions_all pd, po_headers_all ph, po_agents_v pav, pa_projects_all ppa, pa_projects_all ppa1 where h.INVOICE_ID = d.INVOICE_ID and d.PO_DISTRIBUTION_ID = pd.PO_DISTRIBUTION_ID(+) and pd.PO_HEADER_ID = ph.PO_HEADER_ID(+) and ph.AGENT_ID = pav.agent_id(+) and nvl(d.PROJECT_ID, h.PROJECT_ID) = ppa1.PROJECT_ID(+) and pd.PROJECT_ID = ppa.PROJECT_ID(+) and h.INVOICE_ID = p_invoice_id and d.LINE_TYPE_LOOKUP_CODE <> 'PREPAY' group by h.INVOICE_ID, nvl(ppa1.project_id, ppa.PROJECT_ID), nvl(ppa1.SEGMENT1, ppa.SEGMENT1), nvl(ppa1.NAME, ppa.NAME), pav.agent_name, pav.agent_id; p_ret_flag VARCHAR2(2); v_sep VARCHAR2(15); --字符串之间的分隔符号,默认为逗号“,” v_line_str VARCHAR2(4000); --输出的字符串,不同的字段之间,使用V_SEP变量表示的分隔符号进行分隔 p_title VARCHAR2(100); lv_pro_attr1 varchar2(200); lv_pro_attr2 varchar2(200); lv_pro_attr3 varchar2(200); lv_pro_attr4 varchar2(200); lv_pro_attr5 varchar2(200); lv_pro_class varchar2(200); lv_pro_class2 varchar2(200); BEGIN -- BEGIN SELECT hou.name INTO v_org_name FROM hr_operating_units hou WHERE hou.organization_id = p_org_id; EXCEPTION WHEN OTHERS THEN v_org_name := NULL; END; -- p_ret_flag := 'Y'; p_title := '付款计划表'; -- --表示以文件形式进行输出,在开发HTML报表时,固定即可,不需修改 -- cux_html_reports_utl.v_report_output_mode := 'F'; v_sep := cux_html_reports_utl.g_delimiter; --输出报表标题 cux_html_reports_utl.html_title(p_program_title => p_title, p_report_title => p_title); --标题输出 cux_html_reports_utl.output_line('<table width=100% style="border-collapse:collapse; border:none; font-family: 宋体; font-size: 10pt" border=1 bordercolor=#000000 cellspacing="0">'); --输出参数 -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '实体:', p_para_value => v_org_name); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '供应商从:', p_para_value => p_vendor_f); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '供应商至:', p_para_value => p_vendor_t); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '总帐日期从:', p_para_value => p_gl_date_f); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '总帐日期至:', p_para_value => p_gl_date_t); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '到期日从:', p_para_value => p_due_date_f); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '到期日至:', p_para_value => p_due_date_t); END IF; --开始进行内容的输出,下行的width=1200,用于进行输出表格的宽度设置 --cux_html_report_pkg.output_line('<table width=100% style="border-collapse:collapse; border:none; font-family: 宋体; font-size: 10pt" border=1 bordercolor=#000000 cellspacing="0">'); --将表格标题,用逗号分隔后,连接成一个字符串,注意:最后一个字段之后,也要有个逗号。 if p_yn = 'N' then v_line_str := /*'序号,*/ '供应商名称,员工工号,地点,发票编号,发票类型,条件日期,付款条件,总帐日期,发票日期,到期日,币种,发票金额原币,发票金额本币,到期余额原币,到期余额本币,摘要,是否暂挂,负债账户,负债说明,'; --输出表格标题 cux_html_reports_utl.line_title(p_title_string => v_line_str); -- FOR rec_schedule IN cur_schedule LOOP cux_html_reports_utl.line_title(p_title_string => rec_schedule.vendor_name || v_sep || rec_schedule.employee_number || '*** nowrap x:str ' || v_sep || rec_schedule.vendor_site_code || v_sep || rec_schedule.invoice_num || '*** nowrap x:str ' || v_sep || rec_schedule.displayed_field || v_sep || rec_schedule.terms_date || v_sep || rec_schedule.term_name || v_sep || rec_schedule.gl_date || v_sep || rec_schedule.invoice_date || v_sep || rec_schedule.due_date || v_sep || rec_schedule.invoice_currency_code || v_sep || rec_schedule.invoice_amount || v_sep || rec_schedule.invoice_amount_b || v_sep || rec_schedule.amount_remaining || v_sep || rec_schedule.amount_remaining_b || v_sep || rec_schedule.description || v_sep || rec_schedule.hold_flag || v_sep || rec_schedule.acc_code || v_sep || rec_schedule.acc_desc || v_sep, p_with_other_attr => 'Y', p_attr_delimiter => '***', p_delimiter => v_sep); END LOOP; else v_line_str := /*'序号,*/ '供应商名称,员工工号,地点,发票编号,发票类型,条件日期,付款条件,总帐日期,发票日期,到期日,币种,项目编码,项目名称,项目大分类,项目分类,项目代码,项目发票金额原币,项目发票金额本币,项目到期余额原币,项目到期余额本币,摘要,是否暂挂,负债账户,负债说明,采购员,组别,'; --输出表格标题 cux_html_reports_utl.line_title(p_title_string => v_line_str); -- FOR rec_schedule IN cur_schedule LOOP for l in cur_pro(rec_schedule.invoice_id) loop SCUX_CST_INVEST_REPORT_PKG.get_project_info2(l.project_id, null, lv_pro_attr1, lv_pro_attr2, lv_pro_attr3, lv_pro_attr4, lv_pro_attr5, lv_pro_class, lv_pro_class2); cux_html_reports_utl.line_title(p_title_string => rec_schedule.vendor_name || v_sep || rec_schedule.employee_number || '*** nowrap x:str ' || v_sep || rec_schedule.vendor_site_code || v_sep || rec_schedule.invoice_num || '*** nowrap x:str ' || v_sep || rec_schedule.displayed_field || v_sep || rec_schedule.terms_date || v_sep || rec_schedule.term_name || v_sep || rec_schedule.gl_date || v_sep || rec_schedule.invoice_date || v_sep || rec_schedule.due_date || v_sep || rec_schedule.invoice_currency_code || v_sep || l.pro_num || v_sep || l.pro_name || v_sep || lv_pro_class2 || v_sep || lv_pro_class || v_sep || lv_pro_attr3 || v_sep || rec_schedule.invoice_amount * l.pro_rate || v_sep || rec_schedule.invoice_amount_b * l.pro_rate || v_sep || rec_schedule.amount_remaining * l.pro_rate || v_sep || rec_schedule.amount_remaining_b * l.pro_rate || v_sep || rec_schedule.description || v_sep || rec_schedule.hold_flag || v_sep || rec_schedule.acc_code || v_sep || rec_schedule.acc_desc || v_sep || l.agent_name || v_sep || l.kb || v_sep, p_with_other_attr => 'Y', p_attr_delimiter => '***', p_delimiter => v_sep); end loop; end loop; end if; END; PROCEDURE main(p1 OUT VARCHAR2, p2 OUT VARCHAR2, p_org_id IN NUMBER, p_vendor_f IN VARCHAR2, p_vendor_t IN VARCHAR2, p_gl_date_f IN VARCHAR2, p_gl_date_t IN VARCHAR2, p_due_date_f IN VARCHAR2, p_due_date_t IN VARCHAR2, p_yn in varchar2 ,P_save In Varchar2 Default 'N' ) IS -- v_gl_date_f DATE := trunc(fnd_date.canonical_to_date(p_gl_date_f)); v_gl_date_t DATE := trunc(fnd_date.canonical_to_date(p_gl_date_t)); v_due_date_f DATE := trunc(fnd_date.canonical_to_date(p_due_date_f)); v_due_date_t DATE := trunc(fnd_date.canonical_to_date(p_due_date_t)); v_org_name VARCHAR2(300); lr_ex_info cux_ap_schd_extra_t %rowtype; ln_request_id number := fnd_global.CONC_REQUEST_ID; ld_crr_date date := sysdate; l_extra9 VARCHAR2(50) :='达标'; l_extra10 VARCHAR2(50) :='正常'; -- CURSOR cur_schedule IS SELECT pv.vendor_name --供应商名称 , pv.VENDOR_ID, aia.GL_DATE gl_date_d, aia.INVOICE_DATE invoice_date_d, aia.TERMS_DATE terms_date_d, apsa.DUE_DATE due_date_d, pvsa.vendor_site_code --供应商地址 , aia.invoice_id, aia.invoice_num --发票编号 , b.displayed_field, ats.name term_name --付款方法 , to_char(aia.gl_date, 'YYYY-MM-DD') gl_date --总帐日期 , to_char(aia.invoice_date, 'YYYY-MM-DD') invoice_date --发票日期 , to_char(aia.terms_date, 'YYYY-MM-DD') terms_date --条件日期 , to_char(apsa.due_date, 'YYYY-MM-DD') due_date --到期日 , aia.invoice_currency_code --币种 , aia.invoice_amount --原币 , nvl(aia.invoice_amount, 0) * nvl(aia.exchange_rate, 1) invoice_amount_b --本位币 , apsa.amount_remaining --到期余额原币 , nvl(apsa.amount_remaining, 0) * nvl(aia.exchange_rate, 1) amount_remaining_b --到期余额本币 , aia.description --摘要 , cuxs_std_report_utl_pkg.get_ccid_segment(gcc.code_combination_id) acc_code, cuxs_std_report_utl_pkg.get_ccid_description(gcc.chart_of_accounts_id, gcc.code_combination_id) acc_desc, decode(NVL(apsa.hold_flag, 'N'), 'N', '否', '是') HOLD_FLAG, ppx.EMPLOYEE_NUMBER FROM ap_payment_schedules_all apsa, po_vendors pv, po_vendor_sites_all pvsa, ap_terms ats, ap_invoices_all aia, ap_lookup_codes b, gl_code_combinations gcc, per_people_x ppx WHERE apsa.invoice_id = aia.invoice_id AND aia.terms_id = ats.term_id AND aia.vendor_id = pv.vendor_id(+) AND aia.vendor_site_id = pvsa.vendor_site_id(+) and pv.EMPLOYEE_ID = ppx.PERSON_ID(+) AND apsa.amount_remaining <> 0 -- and NVL(apsa.hold_flag, 'N')='N' -- AND aia.org_id = p_org_id /*AND pv.segment1 >= nvl(pv.segment1, p_vendor_f) AND pv.segment1 <= nvl(pv.segment1, p_vendor_t)*/ AND aia.invoice_type_lookup_code = b.lookup_code AND b.lookup_type(+) = 'INVOICE TYPE' AND AP_INVOICES_PKG.GET_APPROVAL_STATUS(aia.INVOICE_ID, aia.INVOICE_AMOUNT, aia.PAYMENT_STATUS_FLAG, aia.INVOICE_TYPE_LOOKUP_CODE) NOT IN ('NEEDS REAPPROVAL', 'NEVER APPROVED', 'CANCELLED', 'FULL', 'UNAPPROVED') AND aia.accts_pay_code_combination_id = gcc.code_combination_id(+) AND (pv.segment1 >= p_vendor_f OR p_vendor_f IS NULL) AND (pv.segment1 <= p_vendor_t OR p_vendor_t IS NULL) AND trunc(aia.gl_date) >= trunc(nvl(v_gl_date_f, aia.gl_date)) AND trunc(aia.gl_date) <= trunc(nvl(v_gl_date_t, aia.gl_date)) AND trunc(apsa.due_date) >= trunc(nvl(v_due_date_f, apsa.due_date)) AND trunc(apsa.due_date) <= trunc(nvl(v_due_date_t, apsa.due_date)) ORDER BY pv.vendor_name, to_char(aia.invoice_date, 'YYYY-MM-DD'), aia.invoice_num; cursor cur_pro(p_invoice_id number) is select nvl(ppa1.project_id, ppa.PROJECT_ID) project_id, nvl(ppa1.SEGMENT1, ppa.SEGMENT1) pro_num, nvl(ppa1.NAME, ppa.NAME) pro_name, nvl(pt1.ATTRIBUTE1,pt.ATTRIBUTE1) CU, pav.agent_name, (select d.kb from per_people_x ppx, CUX.CUX_HR_EMPLOYEE_T emp, cux_hr_dept d where ppx.EMPLOYEE_NUMBER = emp.emp_no and emp.ou_code = d.ou_code and ppx.PERSON_ID = pav.agent_id and rownum = 1) kb, case when sum(sum(d.AMOUNT)) over(partition by h.INVOICE_ID) = 0 then 0 else sum(d.AMOUNT) / sum(sum(d.AMOUNT)) over(partition by h.INVOICE_ID) end pro_rate from ap_invoices_all h, ap_invoice_distributions_all d, po_distributions_all pd, po_headers_all ph, po_agents_v pav, pa_projects_all ppa, pa_projects_all ppa1, pa_tasks pt, pa_tasks pt1 where h.INVOICE_ID = d.INVOICE_ID and d.PO_DISTRIBUTION_ID = pd.PO_DISTRIBUTION_ID(+) and pd.PO_HEADER_ID = ph.PO_HEADER_ID(+) and ph.AGENT_ID = pav.agent_id(+) and nvl(d.PROJECT_ID, h.PROJECT_ID) = ppa1.PROJECT_ID(+) and pd.PROJECT_ID = ppa.PROJECT_ID(+) and ppa.PROJECT_ID= pt.PROJECT_ID(+) and ppa1.PROJECT_ID = pt1.PROJECT_ID(+) and h.INVOICE_ID = p_invoice_id and d.LINE_TYPE_LOOKUP_CODE <> 'PREPAY' group by h.INVOICE_ID, nvl(ppa1.project_id, ppa.PROJECT_ID), nvl(ppa1.SEGMENT1, ppa.SEGMENT1), nvl(ppa1.NAME, ppa.NAME), nvl(pt1.ATTRIBUTE1,pt.ATTRIBUTE1), pav.agent_name, pav.agent_id; p_ret_flag VARCHAR2(2); v_sep VARCHAR2(15); --字符串之间的分隔符号,默认为逗号“,” v_line_str VARCHAR2(4000); --输出的字符串,不同的字段之间,使用V_SEP变量表示的分隔符号进行分隔 p_title VARCHAR2(100); lv_pro_attr1 varchar2(200); lv_pro_attr2 varchar2(200); lv_pro_attr3 varchar2(200); lv_pro_attr4 varchar2(200); lv_pro_attr5 varchar2(200); lv_pro_class varchar2(200); lv_pro_class2 varchar2(200); ln_bill_months number; ln_pay_months number; BEGIN -- BEGIN SELECT hou.name INTO v_org_name FROM hr_operating_units hou WHERE hou.organization_id = p_org_id; EXCEPTION WHEN OTHERS THEN v_org_name := NULL; END; -- p_ret_flag := 'Y'; p_title := '付款计划表'; -- --表示以文件形式进行输出,在开发HTML报表时,固定即可,不需修改 -- cux_html_reports_utl.v_report_output_mode := 'F'; v_sep := cux_html_reports_utl.g_delimiter; --输出报表标题 cux_html_reports_utl.html_title(p_program_title => p_title, p_report_title => p_title); --标题输出 cux_html_reports_utl.output_line('<table width=100% style="border-collapse:collapse; border:none; font-family: 宋体; font-size: 10pt" border=1 bordercolor=#000000 cellspacing="0">'); --输出参数 -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '实体:', p_para_value => v_org_name); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '供应商从:', p_para_value => p_vendor_f); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '供应商至:', p_para_value => p_vendor_t); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '总帐日期从:', p_para_value => p_gl_date_f); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '总帐日期至:', p_para_value => p_gl_date_t); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '到期日从:', p_para_value => p_due_date_f); END IF; -- IF p_org_id IS NOT NULL THEN cux_html_reports_utl.output_para(p_para_name => '到期日至:', p_para_value => p_due_date_t); END IF; --开始进行内容的输出,下行的width=1200,用于进行输出表格的宽度设置 --cux_html_report_pkg.output_line('<table width=100% style="border-collapse:collapse; border:none; font-family: 宋体; font-size: 10pt" border=1 bordercolor=#000000 cellspacing="0">'); --将表格标题,用逗号分隔后,连接成一个字符串,注意:最后一个字段之后,也要有个逗号。 if p_yn = 'N' then v_line_str := /*'序号,*/ '供应商名称,员工工号,地点,发票编号,发票类型,条件日期,付款条件,总帐日期,发票日期,到期日,币种,发票金额原币,发票金额本币,到期余额原币,到期余额本币,摘要,是否暂挂,负债账户,负债说明,'; --输出表格标题 cux_html_reports_utl.line_title(p_title_string => v_line_str); -- FOR rec_schedule IN cur_schedule LOOP cux_html_reports_utl.line_title(p_title_string => rec_schedule.vendor_name || v_sep || rec_schedule.employee_number || '*** nowrap x:str ' || v_sep || rec_schedule.vendor_site_code || v_sep || rec_schedule.invoice_num || '*** nowrap x:str ' || v_sep || rec_schedule.displayed_field || v_sep || rec_schedule.terms_date || v_sep || rec_schedule.term_name || v_sep || rec_schedule.gl_date || v_sep || rec_schedule.invoice_date || v_sep || rec_schedule.due_date || v_sep || rec_schedule.invoice_currency_code || v_sep || rec_schedule.invoice_amount || v_sep || rec_schedule.invoice_amount_b || v_sep || rec_schedule.amount_remaining || v_sep || rec_schedule.amount_remaining_b || v_sep || rec_schedule.description || v_sep || rec_schedule.hold_flag || v_sep || rec_schedule.acc_code || v_sep || rec_schedule.acc_desc || v_sep, p_with_other_attr => 'Y', p_attr_delimiter => '***', p_delimiter => v_sep); END LOOP; else v_line_str := /*'序号,*/ '供应商名称,员工工号,地点,发票编号,发票类型,条件日期,付款条件,总帐日期,发票日期,到期日,币种,BU,CU,项目编码,项目名称,项目大分类,项目分类,项目代码,项目发票金额原币,项目发票金额本币,项目到期余额原币,项目到期余额本币,摘要,是否暂挂, 负债账户,负债说明,采购员,组别,物料类型,采购地点,结算账期,付款方式,结算方式,支付账期,付款说明,限额,是否达标,备注,'; --输出表格标题 cux_html_reports_utl.line_title(p_title_string => v_line_str); if P_save='Y' then delete from cux_ap_schd_extra_t; end if; FOR rec_schedule IN cur_schedule LOOP for l in cur_pro(rec_schedule.invoice_id) loop lr_ex_info := null; lr_ex_info.gl_date := rec_schedule.gl_date_d; lr_ex_info.vendor_name := rec_schedule.vendor_name; lr_ex_info.emp_num := rec_schedule.employee_number; lr_ex_info.site_name := rec_schedule.vendor_site_code; lr_ex_info.invoice_num := rec_schedule.invoice_num; lr_ex_info.invoice_type := rec_schedule.displayed_field; lr_ex_info.term_date := rec_schedule.terms_date_d; lr_ex_info.term_name := rec_schedule.term_name; lr_ex_info.gl_date := rec_schedule.gl_date_d; lr_ex_info.invoice_date := rec_schedule.invoice_date_d; lr_ex_info.due_date := rec_schedule.due_date_d; lr_ex_info.currency_code := rec_schedule.invoice_currency_code; lr_ex_info.proj_code := l.pro_num; lr_ex_info.proj_name := l.pro_name; lr_ex_info.proj_amount := rec_schedule.invoice_amount * l.pro_rate; lr_ex_info.proj_amount_b := rec_schedule.invoice_amount_b * l.pro_rate; lr_ex_info.proj_due_amount := rec_schedule.amount_remaining * l.pro_rate; lr_ex_info.proj_due_amount_b := rec_schedule.amount_remaining_b * l.pro_rate; lr_ex_info.description := rec_schedule.description; lr_ex_info.hold_flag := rec_schedule.hold_flag; lr_ex_info.cr_code := rec_schedule.acc_code; lr_ex_info.cr_desc := rec_schedule.acc_desc; lr_ex_info.agent_name := l.agent_name; lr_ex_info.dept := l.kb; lr_ex_info.request_id := ln_request_id; lr_ex_info.creation_date := ld_crr_date; begin select aa.SEGMENT1, cc.site,cc.big_cate into lr_ex_info.extra10, lr_ex_info.extra1,lr_ex_info.extra8 from (select item.SEGMENT1, row_number() over(order by d.AMOUNT desc) rnum from ap_invoice_distributions_all d, po_distributions_all pd, po_lines_all pl, mtl_system_items_b item where d.PO_DISTRIBUTION_ID = pd.PO_DISTRIBUTION_ID(+) and pd.PO_LINE_ID = pl.PO_LINE_ID(+) and pl.ITEM_ID = item.INVENTORY_ITEM_ID(+) and item.ORGANIZATION_ID(+) = po_lines_sv4.get_inventory_orgid(pl.ORG_ID) and d.INVOICE_ID = rec_schedule.invoice_id and nvl(pd.PROJECT_ID, 0) = nvl(l.project_id, 0)) aa, CUX_AP_ITEM_CATE cc where aa.rnum = 1 and cc.big_code = substr(aa.SEGMENT1, 1, 2); exception when others then lr_ex_info.extra1 := '服务采购'; end; select (extract(year from sysdate) - extract(year from lr_ex_info.gl_date)) * 12 + (extract(month from sysdate) - extract(month from lr_ex_info.gl_date)) into ln_bill_months from dual; if ln_bill_months <= 0 then lr_ex_info.extra2 := '当月结算'; else lr_ex_info.extra2 := '月结' || 30 * ln_bill_months || '天'; end if; begin select c.payment_name, c.payment_name || '-' || c.payment_days, c.term_total, c.line_credit, c.payment_days into lr_ex_info.extra3, lr_ex_info.extra4, lr_ex_info.extra6, lr_ex_info.extra7, ln_pay_months from ap_suppliers t, CUX_AP_LINE_CREDIT c where t.SEGMENT1 = c.segment1 and t.VENDOR_ID = rec_schedule.vendor_id and c.ORG_ID = p_org_id; exception when others then lr_ex_info.extra3 := '现结'; lr_ex_info.extra4 := '现结'; lr_ex_info.extra6 := '现结'; ln_pay_months := 0; end; if ln_bill_months + ln_pay_months <= 0 then lr_ex_info.extra5 := '当月结算'; else lr_ex_info.extra5 := '月结' || (30 * ln_bill_months + ln_pay_months)|| '天'; end if; SCUX_CST_INVEST_REPORT_PKG.get_project_info2(l.project_id, null, lv_pro_attr1, lv_pro_attr2, lv_pro_attr3, lv_pro_attr4, lv_pro_attr5, lv_pro_class, lv_pro_class2); lr_ex_info.proj_big_cate := lv_pro_class2; lr_ex_info.proj_cate := lv_pro_class; lr_ex_info.proj_attr3 := lv_pro_attr3; lr_ex_info.prod_line := lv_pro_attr2; lr_ex_info.cu := l.CU; if P_save='Y' then --delete from cux_ap_schd_extra_t; insert into cux_ap_schd_extra_t values lr_ex_info; end if; cux_html_reports_utl.line_title(p_title_string => rec_schedule.vendor_name || v_sep || rec_schedule.employee_number || '*** nowrap x:str ' || v_sep || rec_schedule.vendor_site_code || v_sep || rec_schedule.invoice_num || '*** nowrap x:str ' || v_sep || rec_schedule.displayed_field || v_sep || rec_schedule.terms_date || v_sep || rec_schedule.term_name || v_sep || rec_schedule.gl_date || v_sep || rec_schedule.invoice_date || v_sep || rec_schedule.due_date || v_sep || rec_schedule.invoice_currency_code || v_sep || lv_pro_attr2 || v_sep || l.CU || v_sep || l.pro_num || v_sep || l.pro_name || v_sep || lv_pro_class2 || v_sep || lv_pro_class || v_sep || lv_pro_attr3 || v_sep || rec_schedule.invoice_amount * l.pro_rate || v_sep || rec_schedule.invoice_amount_b * l.pro_rate || v_sep || rec_schedule.amount_remaining * l.pro_rate || v_sep || rec_schedule.amount_remaining_b * l.pro_rate || v_sep || rec_schedule.description || v_sep || rec_schedule.hold_flag || v_sep || rec_schedule.acc_code || v_sep || rec_schedule.acc_desc || v_sep || l.agent_name || v_sep || l.kb || v_sep || lr_ex_info.extra8 || v_sep || lr_ex_info.extra1 || v_sep || lr_ex_info.extra2 || v_sep || lr_ex_info.extra3 || v_sep || lr_ex_info.extra4 || v_sep || lr_ex_info.extra5 || v_sep || lr_ex_info.extra6 || v_sep || lr_ex_info.extra7 || v_sep || l_extra9 || v_sep || l_extra10 || v_sep, p_with_other_attr => 'Y', p_attr_delimiter => '***', p_delimiter => v_sep); end loop; end loop; end if; END; END cux_ap_schedule_pkg2;
最新发布
08-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值