EBS-Print tabla de envejecimiento personalizada Idea elegante

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

Supongo que te gusta

Origin blog.csdn.net/x6_9x/article/details/127734448
Recomendado
Clasificación