云星空 应收款账龄分析取数SQL,应收款账龄来源于 业务应收单、应收收款核销金额、应付付款核销单 应收单单据ID=核销单源单ID与应收单行ID=核销单源行ID 业务应收单应收款金额-应收收款核销金额-应付付款核销金额<>0的数据。AR_RECEIVABLE
收款单未完成核销的收款明细,金额取负数 AR_RECEIVEBILL
收款退款单未完成核销的退款明细 AR_REFUNDBILL
其他应收单未完成收款核销的明细 AR_OtherRecAble
sql
SELECT 'AR_RECEIVABLE' FFORMID,t1.FBILLNO,
t1.FSALEORGID,
t1.FCUSTOMERID,
CONVERT(NUMERIC(18, 2)
,SUM(ISNULL(t3.FPAYAMOUNTFOR, 0) - ISNULL(AP_MatchLog.fcurwrittenoffamountfor, 0) - ISNULL(AR_MatchLog.FCURWRITTENOFFAMOUNTFOR, 0))
) FPAYAMOUNTFOR,
CONVERT(NUMERIC(18, 2)
,SUM(ISNULL(t3.FPAYAMOUNT, 0) - ISNULL(AP_MatchLog.fcurwrittenoffamount, 0)- ISNULL(AR_MatchLog.FCURWRITTENOFFAMOUNT, 0))
) FPAYAMOUNT,
t1.FCURRENCYID,
t1.F_BHR_NDQ_DATE
FROM T_AR_RECEIVABLE t1
LEFT JOIN T_AR_RECEIVABLEFIN t2
ON t1.FID = t2.FID
LEFT JOIN T_AR_RECEIVABLEPLAN t3
ON t1.FID = t3.FID
LEFT JOIN T_BD_CUSTOMER CUST
ON t1.FCUSTOMERID = CUST.FCUSTID
LEFT JOIN
(
SELECT AR_Datas.FSOURCEFROMID,
AR_Datas.FSRCBILLID,
AR_Datas.FSRCROWID,
ISNULL(SUM(AR_Datas.FCURWRITTENOFFAMOUNTFOR), 0) FCURWRITTENOFFAMOUNTFOR,
ISNULL(SUM(AR_Datas.FCURWRITTENOFFAMOUNT), 0) FCURWRITTENOFFAMOUNT
FROM
(
SELECT PayLogEntry.FSOURCEFROMID,
FSRCBILLID,
FSRCROWID,
PayLogEntry.FCURWRITTENOFFAMOUNTFOR,
PayLogEntry.FCURWRITTENOFFAMOUNT
FROM T_AR_RECMACTHLOG PayLog
INNER JOIN T_AR_RECMACTHLOGENTRY PayLogEntry
ON PayLog.FID = PayLogEntry.FID
WHERE PayLogEntry.FSOURCEFROMID = 'AR_receivable'
) AR_Datas
GROUP BY AR_Datas.FSOURCEFROMID,
AR_Datas.FSRCBILLID,
AR_Datas.FSRCROWID
) AR_MatchLog
ON t1.FID = AR_MatchLog.FSRCBILLID
AND t3.FENTRYID = AR_MatchLog.FSRCROWID
LEFT JOIN
(
SELECT AP_Datas.FSOURCEFROMID,
AP_Datas.FSRCBILLID,
AP_Datas.FSRCROWID,
ISNULL(SUM(AP_Datas.FCURWRITTENOFFAMOUNTFOR), 0) fcurwrittenoffamountfor,
ISNULL(SUM(AP_Datas.FCURWRITTENOFFAMOUNT), 0) fcurwrittenoffamount
FROM
(
SELECT PayLogEntry.FSOURCEFROMID,
FSRCBILLID,
FSRCROWID,
PayLogEntry.FCURWRITTENOFFAMOUNTFOR,
PayLogEntry.FCURWRITTENOFFAMOUNT
FROM T_AP_PAYMATCHLOG PayLog
INNER JOIN T_AP_PAYMATCHLOGENTRY PayLogEntry
ON PayLog.FID = PayLogEntry.FID
WHERE PayLogEntry.FSOURCEFROMID = 'AR_receivable'
) AP_Datas
GROUP BY AP_Datas.FSOURCEFROMID,
AP_Datas.FSRCBILLID,
AP_Datas.FSRCROWID
) AP_MatchLog
ON t1.FID = AP_MatchLog.FSRCBILLID
AND t3.FENTRYID = AP_MatchLog.FSRCROWID
WHERE t1.FDOCUMENTSTATUS = 'C'
AND CUST.FCORRESPONDORGID = 0
GROUP BY t1.FSALEORGID,
t1.FCUSTOMERID,
t1.FCURRENCYID,
t1.F_BHR_NDQ_DATE
,t1.FBILLNO
HAVING SUM(ISNULL(t3.FPAYAMOUNTFOR, 0) - ISNULL(AP_MatchLog.fcurwrittenoffamountfor, 0)
- ISNULL(AR_MatchLog.FCURWRITTENOFFAMOUNTFOR, 0)
) <> 0
UNION ALL
SELECT 'AR_RECEIVEBILL' FFORMID,t1.FBILLNO,
t1.FSETTLEORGID FSALEORGID,
t1.FCONTACTUNIT,
/*收款单.表体.应收款金额-应收收款核销记录.本次核销金额*/
-1 * SUM(ISNULL(t2.FRECTOTALAMOUNTFOR, 0) - ISNULL(t17.fcurwrittenoffamountfor, 0)) FPAYAMOUNTFOR,
-1 * SUM(ISNULL(t2.FRECTOTALAMOUNT, 0) - ISNULL(t17.fcurwrittenoffamount, 0)) FPAYAMOUNT,
t1.FCURRENCYID,
t1.FDATE
FROM T_AR_RECEIVEBILL t1 /*收款单*/
LEFT JOIN T_AR_RECEIVEBILLENTRY t2
ON t1.FID = t2.FID /*收款单明细*/
LEFT JOIN T_BD_CUSTOMER_L t4
ON t4.FCUSTID = t1.FCONTACTUNIT
AND t4.FLOCALEID = 2052
LEFT JOIN T_ORG_ORGANIZATIONS_L t5
ON t1.FSETTLEORGID = t5.FORGID
AND t5.FLOCALEID = 2052
LEFT JOIN T_BD_CUSTOMER t10
ON t4.FCUSTID = t10.FCUSTID
LEFT JOIN T_BD_CUSTOMERGROUP_L t11
ON t10.FPRIMARYGROUP = t11.FID
AND t11.FLOCALEID = 2052
LEFT JOIN
(
SELECT AR_data.FSOURCEFROMID,
AR_data.FSRCBILLID,
AR_data.FSRCROWID,
ISNULL(SUM(AR_data.FCURWRITTENOFFAMOUNTFOR), 0) fcurwrittenoffamountfor,
ISNULL(SUM(AR_data.FCURWRITTENOFFAMOUNT), 0) fcurwrittenoffamount
FROM
(
SELECT LogEntry.FSOURCEFROMID,
FSRCBILLID,
LogEntry.FSRCROWID,
LogEntry.FCURWRITTENOFFAMOUNTFOR,
LogEntry.FCURWRITTENOFFAMOUNT
FROM T_AR_RECMACTHLOG PayLog
INNER JOIN T_AR_RECMACTHLOGENTRY LogEntry
ON PayLog.FID = LogEntry.FID
WHERE LogEntry.FSOURCEFROMID = 'AR_RECEIVEBILL'
) AR_data /*应收收款核销 收款单*/
GROUP BY AR_data.FSOURCEFROMID,
AR_data.FSRCBILLID,
AR_data.FSRCROWID
) t17
ON t1.FID = t17.FSRCBILLID
AND t2.FENTRYID = t17.FSRCROWID
WHERE t1.FDOCUMENTSTATUS = 'C'
AND t10.FCORRESPONDORGID = 0
-- AND t1.FCONTACTUNIT=106473
GROUP BY t1.FSETTLEORGID,
t1.FCONTACTUNIT,
t1.FCURRENCYID,
t1.FDATE
,t1.FBILLNO
HAVING SUM(ISNULL(t2.FRECTOTALAMOUNTFOR, 0) - ISNULL(t17.fcurwrittenoffamountfor, 0)) <> 0
UNION ALL
SELECT 'AR_REFUNDBILL' FFORMID,t1.FBILLNO,
FSETTLEORGID,
FCONTACTUNIT,
SUM(ISNULL(t2.FREFUNDAMOUNTFOR, 0) - ISNULL(t3.fcurwrittenoffamountfor, 0)) FPAYAMOUNTFOR,
SUM(ISNULL(t2.FREFUNDAMOUNT, 0) - ISNULL(t3.fcurwrittenoffamount, 0)) FPAYAMOUNT,
t1.FCURRENCYID,
t1.FDATE
FROM T_AR_REFUNDBILL t1
INNER JOIN T_AR_REFUNDBILLENTRY t2
ON t1.FID = t2.FID
INNER JOIN T_AR_REFUNDBILL_O t1_O
ON t1.FID = t1_O.FID
INNER JOIN T_CN_RECPAYPURPOSE purpose
ON (
t2.FPURPOSEID = purpose.FID
AND purpose.FFINMANEGEMENT = '1' /*计入往来*/
)
LEFT JOIN T_BD_CUSTOMER t10
ON t1.FCONTACTUNIT = t10.FCUSTID
LEFT OUTER JOIN
(
SELECT data.FSOURCEFROMID,
data.FSRCBILLID,
data.FSRCROWID,
ISNULL(SUM(data.FCURWRITTENOFFAMOUNTFOR), 0) fcurwrittenoffamountfor,
ISNULL(SUM(data.FCURWRITTENOFFAMOUNT), 0) fcurwrittenoffamount
FROM
(
SELECT LogEntry.FSOURCEFROMID,
FSRCBILLID,
LogEntry.FSRCROWID,
LogEntry.FCURWRITTENOFFAMOUNTFOR,
LogEntry.FCURWRITTENOFFAMOUNT
FROM T_AR_RECMACTHLOG PayLog
INNER JOIN T_AR_RECMACTHLOGENTRY LogEntry
ON PayLog.FID = LogEntry.FID
WHERE (LogEntry.FSOURCEFROMID = 'AR_REFUNDBILL')
) data
GROUP BY data.FSOURCEFROMID,
data.FSRCBILLID,
data.FSRCROWID
) t3
ON t1.FID = t3.FSRCBILLID
AND t2.FENTRYID = t3.FSRCROWID
WHERE t1.FDOCUMENTSTATUS = 'C'
AND t10.FCORRESPONDORGID = 0
GROUP BY t1.FSETTLEORGID,
t1.FCONTACTUNIT,
t1.FCURRENCYID,
t1.FDATE
,t1.FBILLNO
HAVING SUM(ISNULL(t2.FREFUNDAMOUNTFOR, 0) - ISNULL(t3.fcurwrittenoffamountfor, 0)) <> 0
UNION ALL
SELECT 'AR_OtherRecAble' FFORMID,t1.FBILLNO,
t1.FSETTLEORGID,
t1.FCONTACTUNIT,
SUM(ISNULL(t1.FAMOUNTFOR, 0) - ISNULL(t3.fcurwrittenoffamountfor, 0)) FPAYAMOUNTFOR,
SUM(ISNULL(t1.FAMOUNT, 0) - ISNULL(t3.fcurwrittenoffamount, 0)) FPAYAMOUNT,
t1.FCURRENCYID,
t1.FENDDATE
FROM T_AR_OTHERRECABLE t1
INNER JOIN T_AR_OTHERRECABLE_O t2
ON t1.FID = t2.FID
LEFT OUTER JOIN V_FIN_CONTACTTYPE contacttype
ON (
t1.FCONTACTUNIT = contacttype.FITEMID
AND contacttype.FFORMID = t1.FCONTACTUNITTYPE
)
LEFT OUTER JOIN
(
SELECT data1.FSOURCEFROMID,
data1.FSRCBILLID,
ISNULL(SUM(data1.FCURWRITTENOFFAMOUNTFOR), 0) fcurwrittenoffamountfor,
ISNULL(SUM(data1.FCURWRITTENOFFAMOUNT), 0) fcurwrittenoffamount
FROM
(
SELECT LogEntry.FSOURCEFROMID,
FSRCBILLID,
LogEntry.FCURWRITTENOFFAMOUNTFOR,
LogEntry.FCURWRITTENOFFAMOUNT
FROM T_AR_RECMACTHLOG PayLog
INNER JOIN T_AR_RECMACTHLOGENTRY LogEntry
ON PayLog.FID = LogEntry.FID
WHERE (LogEntry.FSOURCEFROMID = 'AR_OtherRecAble')
) data1
GROUP BY data1.FSOURCEFROMID,
data1.FSRCBILLID
) t3
ON t1.FID = t3.FSRCBILLID
WHERE t1.FDOCUMENTSTATUS = 'C'
AND contacttype.FCORRESPONDORGID = 0
AND t1.FCONTACTUNITTYPE = 'BD_Customer'
GROUP BY t1.FSETTLEORGID,
t1.FCONTACTUNIT,
t1.FCURRENCYID,
t1.FENDDATE
,t1.FBILLNO
HAVING SUM(ISNULL(t1.FAMOUNTFOR, 0) - ISNULL(t3.fcurwrittenoffamountfor, 0)) <> 0;
以上只记录取数,不包括分析计算。