Aproveche al máximo la información de configuración de la tabla de vencimientos que viene con EBS, de modo que cuando la configuración de vencimientos cambie más adelante, no cambie el código comercial, solo necesite cambiar la configuración de la tabla de vencimientos de front-end.
La idea general es restar primero la fecha en el documento comercial (fecha del libro mayor o fecha comercial) de la fecha actual para obtener un valor. Para past_days, el valor negativo debe considerarse aquí. Por ejemplo, el período es 6.30, pero la fecha del documento comercial es 7.4, past_days es -4. Este número negativo debe considerarse como 0.
Luego, el ciclo se realiza en base a la configuración de la tabla de antigüedad, como el código de ejemplo de la tabla de antigüedad del módulo de pagos:
--AP 账龄表sql提取配置示例
SELECT /*lines.days_start*/
decode(lines.days_start, 0, -999999, lines.days_start) days_start, --将0改为-999999 来避免因发票日期晚于gl日期导致负数出现
lines.days_to,
lines.period_sequence_num,
report_heading1,
report_heading2
FROM ap_aging_period_lines lines,
ap_aging_periods periods
WHERE lines.aging_period_id = periods.aging_period_id
AND periods.aging_period_id = 10000
AND periods.status = 'A'
ORDER BY lines.period_sequence_num
El efecto de visualización es el siguiente
--应付模块账龄表流程
begin
for ap_age in (SELECT /*lines.days_start*/
decode(lines.days_start, 0, -999999, lines.days_start) days_start, --将0改为-999999 来避免因发票日期晚于gl日期导致负数出现
lines.days_to,
lines.period_sequence_num,
report_heading1,
report_heading2
FROM ap_aging_period_lines lines,
ap_aging_periods periods
WHERE lines.aging_period_id = periods.aging_period_id
AND periods.aging_period_id = 10000
AND periods.status = 'A'
ORDER BY lines.period_sequence_num)
loop
SELECT SUM(t.balance)
INTO v_aging_balance
FROM cux_ap_pre_aging_temp t --业务单据汇总临时表
WHERE t.past_days BETWEEN ap_age.days_start AND ap_age.days_to;
print_f('<td class=xl8218914>' || to_char(v_aging_balance) || '</td>');
end loop;
end;
El módulo de cuentas por cobrar es similar. El módulo de cuentas por cobrar toma la configuración de la tabla de antigüedad sql de la siguiente manera:
select h.bucket_name,
h.description,
l.DAYS_START,
l.DAYS_TO,
l.REPORT_HEADING1
from ar_aging_buckets h, ar_aging_bucket_lines l
where h.aging_bucket_id = l.AGING_BUCKET_ID
and h.bucket_name = '十四时段帐龄'
order by l.BUCKET_SEQUENCE_NUM