请整理出以下程序包中,关于“结算方式”的取值逻辑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;
最新发布