SalesActual.sql 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. DROP VIEW IF EXISTS SalesActual
  2. GO
  3. Create View SalesActual
  4. as
  5. with CustomerBusinessDevOwner
  6. as
  7. (
  8. SELECT
  9. b.CompanyID,
  10. ROW_NUMBER() OVER(PARTITION BY c.CompanyID ORDER BY c.CompanyID) AS rc,
  11. c.BAccountID as CustomerBAccountID,
  12. e.BAccountID as EmployeeBAccountID ,
  13. b.AcctCD as CustomerCD,
  14. e.AcctCD as EmployeeCD,
  15. e.AcctName as EmployeeName
  16. from Customer c
  17. inner join BAccount b on c.CompanyID = b.CompanyID and c.BAccountID = b.BAccountID
  18. left JOIN BAccountKvExt bke on b.CompanyID = bke.CompanyID and b.NoteID = bke.RecordID
  19. left join BAccount e on bke.CompanyID =e.CompanyID and bke.ValueString = e.AcctCD
  20. )
  21. SELECT c.CompanyID,
  22. c.rc,
  23. c.EmployeeBAccountID,
  24. c.EmployeeName,
  25. CASE
  26. WHEN LAG(c.EmployeeBAccountID) OVER (ORDER BY c.EmployeeBAccountID, c.CustomerBAccountID) = c.EmployeeBAccountID THEN ''
  27. ELSE c.EmployeeName
  28. END AS EmployeeNameGroup,
  29. c.CustomerBAccountID,
  30. c.CustomerCD,
  31. dbo.CountCustomerContracts(dbo.GetFirstDayOfPeriod(GETDATE(),'month'),GETDATE(),c.CompanyID,c.CustomerBAccountID) as WorkOrderCountMTD,
  32. dbo.SumCustomerInvoiceAmt(c.CompanyID, c.CustomerBAccountID, dbo.GetFirstDayOfPeriod(GETDATE(),'month'),GETDATE()) as AmountInvoicedMTD,
  33. dbo.SumCustomerInvoicePayments(c.CompanyID, c.CustomerBAccountID,dbo.GetFirstDayOfPeriod(GETDATE(),'month'),GETDATE()) as AmountReceivedMTD,
  34. dbo.CountCustomerContracts(dbo.GetFirstDayOfPeriod(GETDATE(),'quarter'),GETDATE(),c.CompanyID,c.CustomerBAccountID) as WorkOrderCountQTD,
  35. dbo.SumCustomerInvoiceAmt(c.CompanyID, c.CustomerBAccountID, dbo.GetFirstDayOfPeriod(GETDATE(),'quarter'),GETDATE()) as AmountInvoicedQTD,
  36. dbo.SumCustomerInvoicePayments(c.CompanyID, c.CustomerBAccountID,dbo.GetFirstDayOfPeriod(GETDATE(),'quarter'),GETDATE()) as AmountReceivedQTD,
  37. dbo.CountCustomerContracts(dbo.GetFirstDayOfPeriod(GETDATE(),'year'),GETDATE(),c.CompanyID,c.CustomerBAccountID) as WorkOrderCountYTD,
  38. dbo.SumCustomerInvoiceAmt(c.CompanyID, c.CustomerBAccountID, dbo.GetFirstDayOfPeriod(GETDATE(),'year'),GETDATE()) as AmountInvoicedYTD,
  39. dbo.SumCustomerInvoicePayments(c.CompanyID, c.CustomerBAccountID,dbo.GetFirstDayOfPeriod(GETDATE(),'year'),GETDATE()) as AmountReceivedYTD,
  40. dbo.GetFirstDayOfPeriod(GETDATE(),'month')as MonthDateUsed,
  41. dbo.GetFirstDayOfPeriod(GETDATE(),'quarter')as QuarterDateUsed,
  42. dbo.GetFirstDayOfPeriod(GETDATE(),'year')as YearDateUsed
  43. FROM
  44. CustomerBusinessDevOwner c
  45. GO
  46. DROP VIEW IF EXISTS InvoicePaymentAudit
  47. GO
  48. Create View InvoicePaymentAudit
  49. as
  50. SELECT a.CompanyID,
  51. a.CustomerID,
  52. b.acctcd as CustomerCD,
  53. c.contractID,
  54. c.ContractCD,
  55. a.AdjdRefNbr as InvoiceNumber,
  56. a.AdjdDocType as ParentDocType,
  57. a.AdjgRefNbr as ApplicationNumber,
  58. a.AdjgDocType as ApplicationType,
  59. a.AdjgDocDate as PaymentDate,
  60. a.CuryAdjdAmt as AmountPaid,
  61. case when dbo.GetFirstDayOfPeriod(GETDATE(),'month') <= a.AdjgDocDate then 1 else 0 end as InCurrentMonth,
  62. case when dbo.GetFirstDayOfPeriod(GETDATE(),'quarter') <= a.AdjgDocDate then 1 else 0 end as InCurrentQuarter,
  63. case when dbo.GetFirstDayOfPeriod(GETDATE(),'year') <= a.AdjgDocDate then 1 else 0 end as InCurrentYear,
  64. dbo.GetFirstDayOfPeriod(GETDATE(),'month') as MonthStartUsed,
  65. dbo.GetFirstDayOfPeriod(GETDATE(),'quarter') as QuarterStartUsed,
  66. dbo.GetFirstDayOfPeriod(GETDATE(),'year') as YearStartUsed
  67. FROM ARAdjust a
  68. inner join ARInvoice i on a.CompanyID = i.CompanyID and i.DocType = a.AdjdDocType and i.RefNbr = a.AdjdRefNbr
  69. left join BAccount b on a.CompanyID = b.CompanyID and a.CustomerID = b.BaccountID
  70. left join Contract c on i.CompanyID = c.CompanyID and c.ContractID = i.ProjectID
  71. where a.AdjdDocType = 'INV'
  72. and a.AdjgDocType = 'PMT'
  73. GO
  74. DROP VIEW IF EXISTS InvoiceAmountAudit
  75. GO
  76. Create View InvoiceAmountAudit
  77. as
  78. SELECT a.CompanyID,
  79. a.DocType,
  80. a.DocDate,
  81. p.ContractID as ProjectID,
  82. p.ContractCD as ProjectCD,
  83. c.BAccountID as CustomerBAccountID,
  84. c.AcctCD as CustomerName,
  85. a.RefNbr as InvoiceRefNbr,
  86. a.OrigDocAmt as InvoiceAmount,
  87. i.CuryGoodsExtPriceTotal,
  88. i.CuryLineTotal,
  89. i.CuryDiscTot,
  90. a.CuryDocBal,
  91. i.LineDiscTotal,
  92. i.CuryTaxTotal,
  93. i.PaymentTotal,
  94. case when dbo.GetFirstDayOfPeriod(GETDATE(),'month') <= a.DocDate then 1 else 0 end as InCurrentMonth,
  95. case when dbo.GetFirstDayOfPeriod(GETDATE(),'quarter') <= a.DocDate then 1 else 0 end as InCurrentQuarter,
  96. case when dbo.GetFirstDayOfPeriod(GETDATE(),'year') <= a.DocDate then 1 else 0 end as InCurrentYear,
  97. dbo.GetFirstDayOfPeriod(GETDATE(),'month') as MonthStartUsed,
  98. dbo.GetFirstDayOfPeriod(GETDATE(),'quarter') as QuarterStartUsed,
  99. dbo.GetFirstDayOfPeriod(GETDATE(),'year') as YearStartUsed
  100. from ARRegister a
  101. join ARInvoice i on a.CompanyID = i.CompanyID and a.DocType = i.DocType and a.RefNbr = i.RefNbr
  102. left join BAccount c on a.CompanyID = c.CompanyID and a.CustomerID = c.BAccountID
  103. left join Contract p on i.CompanyID = p.CompanyID and i.ProjectID = p.ContractID
  104. WHERE a.DocType = 'INV'
  105. GO
  106. DROP VIEW IF EXISTS ContractCustomerAudit
  107. GO
  108. Create View ContractCustomerAudit
  109. as
  110. SELECT c.CompanyID,
  111. c.ContractID,
  112. c.ContractCD,
  113. c.CustomerID,
  114. b.AcctCD as CustomerName,
  115. c.CreatedDateTime,
  116. c.ActivationDate,
  117. case when dbo.GetFirstDayOfPeriod(GETDATE(),'month') <= c.CreatedDateTime then 1 else 0 end as CreatedInCurrentMonth,
  118. case when dbo.GetFirstDayOfPeriod(GETDATE(),'quarter') <= c.CreatedDateTime then 1 else 0 end as CreatedInCurrentQuarter,
  119. case when dbo.GetFirstDayOfPeriod(GETDATE(),'year') <= c.CreatedDateTime then 1 else 0 end as CreatedInCurrentYear,
  120. dbo.GetFirstDayOfPeriod(GETDATE(),'month') as MonthStartUsed,
  121. dbo.GetFirstDayOfPeriod(GETDATE(),'quarter') as QuarterStartUsed,
  122. dbo.GetFirstDayOfPeriod(GETDATE(),'year') as YearStartUsed
  123. FROM Contract c
  124. join BAccount b on c.CompanyID = b.CompanyID and c.CustomerID = b.BAccountID