EBS-打印客户化账龄表优雅思路

充分利用EBS自带的账龄表配置信息,这样后面账龄配置发生改动的时候不要动业务代码,只需要改动前端账龄表配置即可。

整体思路,先将当前日期 减去 业务单据上的日期(总账日期或者业务日期)得到一个值,past_days 这里要考虑到值为负数的情况,如要看期间是6.30,但是业务单据日期是7.4号,past_days为-4。这个负数要看做0。

然后以账龄表配置为准,进行循环,如应付模块账龄表实例代码:

--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

展示效果如下

--应付模块账龄表流程
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;

应收模块类似,应收模块取账龄表配置sql如下:

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

猜你喜欢

转载自blog.csdn.net/x6_9x/article/details/127734448