会计逾期查询

时间:2015-03-10 18:48:42

标签: sql sql-server

我需要一个查询来获取未结发票和逾期(如果有的话)。

我有一张名为" Invoices"有了这个基本结构:

InvoiceNo   CustID  InvoiceDate Amount  DueDate     Credit
1           1       01/04/2015  120.00  01/31/2015  
2           2       01/13/2015  72.00   01/20/2015  
3           1       01/12/2015  63.00               TRUE
4           2       02/18/2015  43.00   02/10/2015  
5           2       02/24/2015  16.00               TRUE

名为" Payments"的表格反映客户付款:

PaymentNo   CustID  PaymentDate Amount  Refund

我还有一个"开放平衡"每个客户的价值

我需要能够查看具有余额<>的客户的查询结果这样的事情:

CustID    Balance   Amount Overdue   Days Overdue

我使用此查询来显示未结发票,它运作正常,但我已经陷入了逾期交易。

Select Customers.CustID
     , Customers.DisplayName As 'Name'
     , COALESCE(Customers.OpeningBalance,0) 
     +(( Select COALESCE(Sum(Invoices.Amount),0) From Invoices Where Credit = 0 And Invoices.CustID = Customers.CustID )  
     +( Select COALESCE(Sum(Payments.Amount),0) From Payments Where Refund = 1 And Payments.CustID = Customers.CustID ) ) 
     -(( Select COALESCE(Sum(Invoices.Amount),0) From Invoices Where Credit = 1 And Invoices.CustID = Customers.CustID ) 
     +( Select COALESCE(Sum(Payments.Amount),0) From Payments Where Refund = 0 And Payments.CustID = Customers.CustID )) as Balance
From Customers
Where Exists ( Select * From Invoices 
               Where Invoices.CustID = Customers.CustID )

@Zajonc 逾期余额根据发票金额和相对于其日期的付款金额计算。

方案:
假设客户的发票#1的截止日期为2015年1月15日,金额为140.00 假设该客户在2015年1月20日支付了40.00 逾期的日子是今天和截止日期之间的日子。
到期日余额为140.00 - 40.00 = 100.00。

这仅适用于一张发票和一笔付款交易,但由于现实情况稍微复杂一些,因此计算应反映两天的累积和余额的过期。我:

假设我们在2015年2月15日执行查询,并在客户上提供以下数据:

Invoice #     Amount     Due Date       
1             140.00     01/15/2015
2             360.00     02/08/2015

Payment #     Amount     Payment Date
1             40.00      01/20/2015
2             100.00     02/18/2015

逾期的日子是:
(2015年2月15日至2015年1月15日期间经过的天数)
+
(2015年2月15日至2015年8月2日之间的天数)
= 31 + 7 = 38天。

逾期余额为100.00(客户在查询日期后3天付款)+ 360.00 = 460.00

我希望它澄清 感谢。

0 个答案:

没有答案