AR summary age report by carrier

AR帐龄报表逻辑,有点复杂,特别是公司存在两个相同的ORDER number 的时候,更麻烦[@more@]

推理过程 从一个发票核销情况推理,汇总

出问题的地方(推理过程)

1.发票是否进行过核销。。。。

SELECT sum(DECODE

((SELECT COUNT (ara.receivable_application_id)

FROM ar_payment_schedules_all aps,

ar_receivable_applications_all ara

WHERE ara.applied_payment_schedule_id(+) =

aps.payment_schedule_id

AND ara.gl_date <= TO_DATE (:p_date, 'YYYY-MM-DD')

AND aps.customer_trx_id = rct1.customer_trx_id), -- 是否进行了核销

0, (SELECT SUM (aps.amount_due_original) banlance

FROM ra_customer_trx_all rct, ar_payment_schedules_all aps

WHERE rct.customer_trx_id = aps.customer_trx_id(+)

--AND ARA.GL_DATE

AND rct.customer_trx_id = rct1.customer_trx_id

AND aps.amount_due_remaining <> 0), --如果没有核销过那么取APS表原始额

(SELECT SUM (aps.amount_due_original - aps.amounta) banlance

FROM ra_customer_trx_all rct,

(SELECT SUM ( ara.amount_applied) amounta,

aps.amount_due_original,

aps.amount_due_remaining, aps.customer_trx_id

FROM ar_payment_schedules_all aps,

ar_receivable_applications_all ara

WHERE ara.applied_payment_schedule_id(+) =

aps.payment_schedule_id

AND ara.gl_date <= TO_DATE (:p_date, 'YYYY-MM-DD')

GROUP BY aps.amount_due_original,

aps.payment_schedule_id,

aps.customer_trx_id,

aps.amount_due_remaining) aps

WHERE rct.customer_trx_id = aps.customer_trx_id(+)

--AND ARA.GL_DATE

AND rct.customer_trx_id = rct1.customer_trx_id

AND aps.amount_due_remaining <> 0)

--NOICE HERE : 余额不为0 出现了问题,即使为0,但是输入发票日期的时候仍然未付, 导致问题2

) )"BANLANCE" --核销的话连接ARA表获取未核销余额

FROM ra_customer_trx_all rct1

WHERE rct1.batch_source_id = '1002'

and rct1.trx_date<= TO_DATE (:p_date, 'YYYY-MM-DD')

2.输入日期时候截至的发票余额问题

/* Formatted on 2007/12/24 13:57 (Formatter Plus v4.8.7) */

SELECT SUM

(DECODE

((SELECT NVL(aps.amount_due_remaining, 1)

FROM ra_customer_trx_all rct,

ar_payment_schedules_all aps

WHERE rct.customer_trx_id = aps.customer_trx_id(+)

AND rct.customer_trx_id = rct1.customer_trx_id), --核销发票的余额是否为0

0, (DECODE

((SELECT COUNT (ara.receivable_application_id)

FROM ar_payment_schedules_all aps,

ar_receivable_applications_all ara

WHERE ara.applied_payment_schedule_id(+) =

aps.payment_schedule_id

AND ara.gl_date <=

TO_DATE (:p_date, 'YYYY-MM-DD')

AND aps.customer_trx_id = rct1.customer_trx_id),

0, (SELECT SUM (aps.amount_due_original) banlance

FROM ra_customer_trx_all rct,

ar_payment_schedules_all aps

WHERE rct.customer_trx_id = aps.customer_trx_id(+)

--AND ARA.GL_DATE

AND rct.customer_trx_id =

rct1.customer_trx_id),

(SELECT SUM (aps.amount_due_original - aps.amounta

) banlance

FROM ra_customer_trx_all rct,

(SELECT SUM (ara.amount_applied) amounta,

aps.amount_due_original,

aps.amount_due_remaining,

aps.customer_trx_id

FROM ar_payment_schedules_all aps,

ar_receivable_applications_all ara

WHERE ara.applied_payment_schedule_id(+) =

aps.payment_schedule_id

AND ara.gl_date <=

TO_DATE (:p_date, 'YYYY-MM-DD')

GROUP BY aps.amount_due_original,

aps.payment_schedule_id,

aps.customer_trx_id,

aps.amount_due_remaining) aps

WHERE rct.customer_trx_id = aps.customer_trx_id(+)

--AND ARA.GL_DATE

AND rct.customer_trx_id = rct1.customer_trx_id)

--如果发票余额为0的时候,那么获得未付的发票余额就可以为0

)

),

(DECODE ((SELECT COUNT (ara.receivable_application_id)

FROM ar_payment_schedules_all aps,

ar_receivable_applications_all ara

WHERE ara.applied_payment_schedule_id(+) =

aps.payment_schedule_id

AND ara.gl_date <=

TO_DATE (:p_date, 'YYYY-MM-DD')

AND aps.customer_trx_id = rct1.customer_trx_id),

0, (SELECT SUM (aps.amount_due_original) banlance

FROM ra_customer_trx_all rct,

ar_payment_schedules_all aps

WHERE rct.customer_trx_id = aps.customer_trx_id(+)

--AND ARA.GL_DATE

AND rct.customer_trx_id =

rct1.customer_trx_id

AND aps.amount_due_remaining <> 0),

(SELECT SUM (aps.amount_due_original - aps.amounta

) banlance

FROM ra_customer_trx_all rct,

(SELECT SUM (ara.amount_applied) amounta,

aps.amount_due_original,

aps.amount_due_remaining,

aps.customer_trx_id

FROM ar_payment_schedules_all aps,

ar_receivable_applications_all ara

WHERE ara.applied_payment_schedule_id(+) =

aps.payment_schedule_id

AND ara.gl_date <=

TO_DATE (:p_date, 'YYYY-MM-DD')

GROUP BY aps.amount_due_original,

aps.payment_schedule_id,

aps.customer_trx_id,

aps.amount_due_remaining) aps

WHERE rct.customer_trx_id = aps.customer_trx_id(+)

--AND ARA.GL_DATE

AND rct.customer_trx_id = rct1.customer_trx_id

AND aps.amount_due_remaining <> 0)

--如果发票余额不为0的时候

)

)

)

)"Balance"

FROM ra_customer_trx_all rct1

WHERE rct1.batch_source_id = '1001'

AND rct1.trx_date <= TO_DATE (:p_date, 'YYYY-MM-DD')

3 **** 特色问题 系统存在两个相同的订单号 通过连 oe_transaction_types_tl ott来过滤了OE 的重复信息也过滤了发票的重复信息

(SELECT DISTINCT (rct.customer_trx_id

) customer_trx_id,

NVL

(oh.shipping_method_code,

'sb'

) shipping_method_code,

rct.trx_date

FROM ra_customer_trx_all rct,

oe_order_headers_all oh,

oe_transaction_types_tl ott

WHERE NVL (rct.ct_reference, 'xx') =

TO_CHAR (oh.order_number)

AND oh.order_type_id =

ott.transaction_type_id

AND rct.interface_header_attribute2 =

ott.NAME

AND rct.batch_source_id = '1002'

AND rct.trx_date <=

TO_DATE (v_date, 'YYYY-MM-DD')

AND rct.org_id = v_org) rct1,

wsh_carrier_services wcs

4

SELECT 编号,名称,VAL,DECODE(延迟月数,1,1),DECODE(延迟月数,2,2),DECODE(延迟月数,3,3)

FROM (

select 编号,名称,CASE WHEN 延迟天数 <0 THEN 1

WHEN 延迟天数 >0 AND 延迟天数 <=30 THEN 2

WHEN 延迟天数 >30 AND 延迟天数 <=60 THEN 3

ELSE 0

END AS 延迟月数

,SUM(到期余额) AS VAL

FROM

GROUP BY 编号,名称,延迟月数

)

只写了3个月的其他自己试着写吧。

方法应用:

GROUP BY CEIL ( ( TRUNC (TO_DATE (:p_date, 'YYYY-MM-DD'))

- TRUNC (rct1.trx_date)

)

/ 30

)

后面加了GROUP BY 来区分段,但是导致同一个承运人在不同的纪录,所以在REPORTS BUILDER 用了每个公式列来获取当段的未付金额

方法是传递参数到FUNCTION 里面,返回数字。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/226700/viewspace-996937/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/226700/viewspace-996937/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值