Advertisement
zonegoh

#1688

Feb 21st, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 53.62 KB | None | 0 0
  1. ALTER PROC USP_FI_ARAP_ReceiptReports
  2.     @PerDate DATETIME = NULL,
  3.     @ReportType VARCHAR(30) = '',
  4.     @AllCustomers BIT = 1,
  5.     @CustomerCodes VARCHAR(2000) = '',
  6.     @AllCustomerAreas BIT = 1,
  7.     @CustomerAreaIDs VARCHAR(2000) = '',
  8.     @AllCustomerTypes BIT = 1,
  9.     @CustomerTypeIDs VARCHAR(2000) = '',
  10.     @AllARCollectors BIT = 1,
  11.     @ARCollectorIDs VARCHAR(2000) = '',
  12.     @StartDate DATETIME = NULL,
  13.     @EndDate DATETIME = NULL,
  14.     @ReportStartDate DATETIME = NULL,
  15.     @ReportEndDate DATETIME = NULL,
  16.     @AllocationStartDate DATETIME = NULL,
  17.     @AllocationEndDate DATETIME = NULL,
  18.     @ItemStartDate DATETIME = NULL,
  19.     @ItemEndDate DATETIME = NULL,
  20.     @SettleStartDate DATETIME = NULL,
  21.     @SettleEndDate DATETIME = NULL,
  22.     @IncomeOrExpense BIT = NULL,
  23.     @CurrencyID INT = 0,
  24.     @OverdueAfter INT = NULL,
  25.     @BankAccountID INT = 0,
  26.     @VoucherNumbers VARCHAR(8000) = NULL,
  27.     @Class INT = 0,
  28.     @Version VARCHAR(30) = '',
  29.     @CreatedBy VARCHAR(30) = '',
  30.     @PPhStartDate DATETIME = NULL,
  31.     @PPhEndDate DATETIME = NULL
  32. AS
  33.  
  34. SET NOCOUNT ON
  35. DECLARE
  36.     @SQL NVARCHAR(MAX),
  37.     @ForITB BIT,
  38.     @CMU BIT
  39.  
  40. SET @PPhStartDate = dbo.UDF_Common_FloorDate(@PPhStartDate)
  41. SET @PPhEndDate = dbo.UDF_Common_FloorDate(@PPhEndDate)
  42. SET @CMU = CASE WHEN @Version IN ('CMU', 'CALISPO') THEN 1 ELSE 0 END
  43. SET @BankAccountID = ISNULL(@BankAccountID, 0)
  44. SELECT @ForITB = dbo.UDF_SH_Settings_GetAsBit ('CustomizedForIT&B', 0)
  45.  
  46. IF @PerDate IS NOT NULL
  47.     SET @PerDate = dbo.UDF_Common_FloorDate(@PerDate)
  48.  
  49. --  Create temporary tables
  50. SET @StartDate = dbo.UDF_Common_FloorDate(@StartDate)
  51. SET @EndDate = dbo.UDF_Common_FloorDate(@EndDate)
  52. SET @ReportStartDate = dbo.UDF_Common_FloorDate(@ReportStartDate)
  53. SET @ReportEndDate = dbo.UDF_Common_FloorDate(@ReportEndDate)
  54. SET @AllocationStartDate = dbo.UDF_Common_FloorDate(@AllocationStartDate)
  55. SET @AllocationEndDate = dbo.UDF_Common_FloorDate(@AllocationEndDate)
  56. SET @ItemStartDate = dbo.UDF_Common_FloorDate(@ItemStartDate)
  57. SET @ItemEndDate = dbo.UDF_Common_FloorDate(@ItemEndDate)
  58. SET @SettleStartDate = dbo.UDF_Common_FloorDate(@SettleStartDate)
  59. SET @SettleEndDate = dbo.UDF_Common_FloorDate(@SettleEndDate)
  60. SET @CurrencyID = ISNULL(@CurrencyID, 0)
  61. CREATE TABLE #SelectedMembers (MemberID INT)
  62. CREATE TABLE #SelectedARCollectors (CollectorID INT)
  63.  
  64. --  Process requested customers
  65. SET @SQL = 'INSERT #SelectedMembers (MemberID)'
  66. SET @SQL = @SQL + CHAR(13) + 'SELECT CustomerID'
  67. SET @SQL = @SQL + CHAR(13) + '  FROM AR_Customers C'
  68. IF @AllCustomers != 1
  69.     SET @SQL = @SQL + CHAR(13) + '  JOIN dbo.UDF_Common_Split(@CustomerCodes, '','') SelCust ON C.CustomerCode LIKE SelCust.Value'
  70. IF @AllCustomerAreas != 1
  71.     SET @SQL = @SQL + CHAR(13) + '  JOIN dbo.UDF_Common_Split(@CustomerAreaIDs, '','') SelArea ON ISNULL(C.CustomerAreaID, 0) = CAST(SelArea.Value AS INT)'
  72. IF @AllCustomerTypes != 1
  73.     SET @SQL = @SQL + CHAR(13) + '  JOIN dbo.UDF_Common_Split(@CustomerTypeIDs, '','') SelType ON ISNULL(C.CustomerTypeID, 0) = CAST(SelType.Value AS INT)'
  74.  
  75. EXEC SP_ExecuteSQL @SQL,
  76.     N'@CustomerCodes VARCHAR(2000), @CustomerAreaIDs VARCHAR(2000), @CustomerTypeIDs VARCHAR(2000)',
  77.     @CustomerCodes, @CustomerAreaIDs, @CustomerTypeIDs
  78.  
  79. --  Process requested AR Collectors
  80. SET @SQL = 'INSERT #SelectedARCollectors (CollectorID)'
  81. SET @SQL = @SQL + CHAR(13) + 'SELECT CollectorID'
  82. SET @SQL = @SQL + CHAR(13) + '  FROM AR_Collectors S'
  83. IF @AllARCollectors != 1
  84.     SET @SQL = @SQL + CHAR(13) + '  JOIN dbo.UDF_Common_Split(@ARCollectorIDs, '','') SelSP ON S.SalesPersonCode LIKE SelSP.Value'
  85.  
  86. EXEC SP_ExecuteSQL @SQL,
  87.     N'@ARCollectorIDs VARCHAR(2000)', @ARCollectorIDs
  88.  
  89. IF @ReportType = 'HMSReceipt' BEGIN
  90.     SELECT M.VoucherNo [Voucher No], M.AssociateName [Guest Name], M.VoucherDate [Voucher DATE], M.AmountPaid [Amount Paid], M.PaymentMethod [Method],
  91.            F.FolioNo [Folio NUMBER], F.FolioDate [Folio DATE], BA.BankAccountCode [Bank Account Code], M.CheckNo [CHECK/Card NUMBER], M.CheckDueDate [CHECK/Card Due DATE],
  92.            M.BankName [Bank Name], CS.CustomerCode [Customer Code], CS.CustomerName [Customer Name]
  93.       FROM FI_ARAP M
  94.       LEFT JOIN #SelectedMembers C ON C.MemberID = M.AssociateID
  95.       LEFT JOIN dbo.UDF_Common_Split (@VoucherNumbers, ',') VN ON M.VoucherNo LIKE VN.VALUE
  96.       LEFT JOIN HMS_FO_FolioItems FI ON FI.SourceType = 'RV' AND FI.SourceID = M.VoucherID
  97.       LEFT JOIN HMS_FO_Folios F ON F.FolioID = FI.FolioID
  98.       LEFT JOIN FI_BankAccounts BA ON BA.BankAccountID = M.BankAccountID
  99.       LEFT JOIN HMS_FO_Guests G ON G.GuestID = F.GuestID
  100.       LEFT JOIN AR_Customers CS ON CS.CustomerID = G.BillToCustomerID
  101.      WHERE M.IsAR = 1 AND (M.Void != 1 OR M.VoidCheck = 1) AND M.Class = @Class
  102.        AND (@CreatedBy = '' OR M.CreatedBY = @CreatedBy)
  103.        AND CASE WHEN (@StartDate IS NULL AND @EndDate IS NULL) OR (VoucherDate BETWEEN @StartDate AND @EndDate) THEN 1 ELSE 0 END = 1
  104.          AND CASE WHEN (@ReportStartDate IS NULL AND @ReportEndDate IS NULL) OR (EDUReportDate BETWEEN @ReportStartDate AND @ReportEndDate) THEN 1 ELSE 0 END = 1
  105.        AND (@BankAccountID = 0 OR M.BankAccountID = @BankAccountID)
  106.        AND CASE WHEN @CurrencyID = 0 OR @CurrencyID = M.CurrencyID THEN 1 ELSE 0 END = 1
  107.        AND (@VoucherNumbers IS NULL OR VN.VALUE IS NOT NULL)
  108.      ORDER BY 3, 1
  109. END ELSE IF @ReportType = 'HMSDeposit' BEGIN
  110.     SELECT M.VoucherNo [Voucher No], M.AssociateName [Guest Name], M.VoucherDate [Voucher DATE], M.AmountPaid [Amount Paid], M.PaymentMethod [Method],
  111.            F.FolioNo [Folio NUMBER], F.FolioDate [Folio DATE], BA.BankAccountCode [Bank Account Code], M.CheckNo [CHECK/Card NUMBER], M.CheckDueDate [CHECK/Card Due DATE],
  112.            M.BankName [Bank Name], CS.CustomerCode [Customer Code], CS.CustomerName [Customer Name], RV.ReservationNo [Reservation NUMBER], RV.ReservationDate [Reservation DATE],
  113.            RV.ArrivalDate [Arrival DATE], RV.DepartureDate [Departure DATE]
  114.       FROM FI_ARAP M
  115.       LEFT JOIN #SelectedMembers C ON C.MemberID = M.AssociateID
  116.       LEFT JOIN dbo.UDF_Common_Split (@VoucherNumbers, ',') VN ON M.VoucherNo LIKE VN.VALUE
  117.       LEFT JOIN HMS_FO_FolioItems FI ON FI.SourceType = 'DR' AND FI.SourceID = M.VoucherID AND FI.Void = 0
  118.       LEFT JOIN HMS_FO_Folios F ON F.FolioID = FI.FolioID AND F.Void = 0
  119.       LEFT JOIN FI_BankAccounts BA ON BA.BankAccountID = M.BankAccountID
  120.       LEFT JOIN HMS_FO_Reservations RV ON RV.ReservationID = M.ReservationID
  121.       LEFT JOIN HMS_FO_Guests G ON G.GuestID = M.RecordedGuestID
  122.       LEFT JOIN AR_Customers CS ON CS.CustomerID = G.BillToCustomerID
  123.      WHERE M.IsAR = 1 AND (M.Void != 1 OR M.VoidCheck = 1) AND M.Class = 2
  124.        AND (@CreatedBy = '' OR M.CreatedBY = @CreatedBy)
  125.        AND CASE WHEN (@StartDate IS NULL AND @EndDate IS NULL) OR (VoucherDate BETWEEN @StartDate AND @EndDate) THEN 1 ELSE 0 END = 1
  126.          AND CASE WHEN (@ReportStartDate IS NULL AND @ReportEndDate IS NULL) OR (EDUReportDate BETWEEN @ReportStartDate AND @ReportEndDate) THEN 1 ELSE 0 END = 1
  127.        AND (@BankAccountID = 0 OR M.BankAccountID = @BankAccountID)
  128.        AND CASE WHEN @CurrencyID = 0 OR @CurrencyID = M.CurrencyID THEN 1 ELSE 0 END = 1
  129.        AND (@VoucherNumbers IS NULL OR VN.VALUE IS NOT NULL)
  130.      ORDER BY 3, 1
  131. END ELSE IF @ReportType LIKE 'Receipt%' BEGIN
  132.     SELECT M.VoucherID
  133.       INTO #Summ
  134.       FROM FI_ARAP M
  135.       LEFT JOIN #SelectedMembers C ON C.MemberID = M.AssociateID
  136.       LEFT JOIN AR_Collectors CL ON CL.CollectorID = M.CollectorID
  137.       LEFT JOIN dbo.UDF_Common_Split (@VoucherNumbers, ',') VN ON M.VoucherNo LIKE VN.VALUE
  138.      WHERE M.IsAR = 1 AND (M.Void != 1 OR M.VoidCheck = 1)  AND M.Class = @Class
  139.        AND (@CreatedBy = '' OR M.CreatedBY = @CreatedBy)
  140.        AND CASE WHEN M.CollectorID = 0 OR CL.CollectorID IS NOT NULL THEN 1 ELSE 0 END = 1
  141.        AND CASE WHEN (@StartDate IS NULL AND @EndDate IS NULL) OR (VoucherDate BETWEEN @StartDate AND @EndDate) THEN 1 ELSE 0 END = 1
  142.          AND CASE WHEN (@ReportStartDate IS NULL AND @ReportEndDate IS NULL) OR (EDUReportDate BETWEEN @ReportStartDate AND @ReportEndDate) THEN 1 ELSE 0 END = 1
  143.        AND (@BankAccountID = 0 OR M.BankAccountID = @BankAccountID)
  144.        AND CASE WHEN @IncomeOrExpense IS NULL OR @IncomeOrExpense = M.IncomeOrExpense THEN 1 ELSE 0 END = 1
  145.        AND CASE WHEN @CurrencyID = 0 OR @CurrencyID = CurrencyID THEN 1 ELSE 0 END = 1
  146.        AND (M.Class > 0 OR (M.IncomeOrExpense = 1 AND @AllCustomers = 1) OR C.MemberID IS NOT NULL)
  147.        AND (@VoucherNumbers IS NULL OR VN.VALUE IS NOT NULL)
  148.          AND (@PPhStartDate IS NULL OR @PPhEndDate IS NULL OR M.TglPPh BETWEEN @PPhStartDate AND @PPhEndDate)
  149.  
  150.     CREATE TABLE #Summary (
  151.         [VoucherID] INT,
  152.         [Voucher DATE] DATETIME,
  153.         [Transfer DATE] DATETIME,
  154.         [Voucher No.] VARCHAR(50),
  155.         [Tax Invoice No.] VARCHAR(50),
  156.         [Voucher TYPE] VARCHAR(50),
  157.         [Voucher Class] VARCHAR(50),
  158.         Currency VARCHAR(10),
  159.         [Exchange Rate] MONEY,
  160.         [Customer Code] VARCHAR(200),
  161.         [Customer Name] VARCHAR(200),
  162.         [Customer] VARCHAR(200),
  163.         [Payment Method] VARCHAR(30),
  164.         [Bank Account Code] VARCHAR(30),
  165.         [CHECK NUMBER] VARCHAR(50),
  166.         [CHECK Due DATE] DATETIME,
  167.         [SOURCE Bank] VARCHAR(200),
  168.         [SOURCE Account NUMBER] VARCHAR(100),
  169.         [Total Amount Paid] MONEY,
  170.         [Total Debit Note] MONEY,
  171.         [Total Credit Note] MONEY,
  172.         [Total Amount Allocated] MONEY,
  173.         [Outstanding Down Payment] MONEY,
  174.         [Closed Down Payment] MONEY,
  175.         [Total Amount Paid (LOCAL)] MONEY,
  176.         [Total Debit Note (LOCAL)] MONEY,
  177.         [Total Credit Note (LOCAL)] MONEY,
  178.         [Total Amount Allocated (LOCAL)] MONEY,
  179.         [Outstanding Down Payment (LOCAL)] MONEY,
  180.         [Exclude] VARCHAR(10),
  181.         [Collector Name] VARCHAR(50),
  182.         [Remarks] NTEXT,
  183.         [Internal Remarks] NTEXT,
  184.         [Clearing Memo No.] VARCHAR(50),
  185.         [Clearing DATE] DATETIME,
  186.         [Clearing Bank Account Code] VARCHAR(50),
  187.         [Validated] BIT,
  188.         [Validated BY] VARCHAR(30),
  189.         [Validate DATE/TIME] DATETIME,
  190.         [Card Settlement No.] VARCHAR(50),
  191.         [Card Settlement DATE] DATETIME,
  192.         [Transfer Conf. No.] VARCHAR(50),
  193.         [Transfer Conf. DATE] DATETIME,
  194.         [Transfer Conf. Account Code] VARCHAR(50),
  195.         [Project Code] VARCHAR(50),
  196.         [Project Name] VARCHAR(200),
  197.         [Job GROUP] VARCHAR(200),
  198.         [Job Code] VARCHAR(50),
  199.         [Job Name] VARCHAR(200),
  200.         [BQ NUMBER] VARCHAR(50),
  201.         [Card TYPE] VARCHAR(50),
  202.         [Card Terminal] VARCHAR(50))
  203.  
  204.     CREATE TABLE #Items (
  205.         VoucherID INT,
  206.         ItemType VARCHAR(30),
  207.         ItemID INT,
  208.         DocumentNo VARCHAR(50),
  209.         DocumentDate DATETIME,
  210.         DocumentDueDate DATETIME,
  211.         AllocationDate DATETIME,
  212.         Amount MONEY,
  213.         IsPositive BIT,
  214.         DocumentType VARCHAR(50),
  215.         AmountPaid MONEY,
  216.         AmountDebit MONEY,
  217.         AmountCredit MONEY,
  218.         DBNoteDescription VARCHAR(1000),
  219.         DBNoteAccountCode VARCHAR(50),
  220.         DBNoteAccountName VARCHAR(50),
  221.         DBNoteDepartment VARCHAR(50),
  222.         CRNoteDescription VARCHAR(1000),
  223.         CRNoteAccountCode VARCHAR(50),
  224.         CRNoteAccountName VARCHAR(50),
  225.         CRNoteDepartment VARCHAR(50),
  226.         EffectiveAmountPaid MONEY,
  227.         ItemExchangeRate MONEY NOT NULL DEFAULT(1)
  228.     )
  229.  
  230.     IF @ReportType LIKE '%Details' BEGIN
  231.         EXEC ('
  232.         ALTER TABLE #Summary ADD
  233.           [ItemID] INT,
  234.             ItemType VARCHAR(10),
  235.           [Item Type] VARCHAR(500),
  236.           [Item Ref] VARCHAR(500),
  237.           [Item Date] DATETIME,
  238.           [Item Due Date] DATETIME,
  239.           [Item Exchange Rate] MONEY,
  240.           [Settle Date] DATETIME,
  241.           [Allocation Date] DATETIME,
  242.           [Item Amount] MONEY,
  243.           [Item Amount Paid] MONEY,
  244.           [Item Debit Note] MONEY,
  245.           [Item Credit Note] MONEY,
  246.           [Item Effective Amount Paid] MONEY,
  247.           [Item Amount Paid (Local)] MONEY,
  248.           [Item Debit Note (Local)] MONEY,
  249.           [Item Credit Note (Local)] MONEY,
  250.           [Item Effective Amount Paid (Local)] MONEY,
  251.             [DB Note Account Code] VARCHAR(50),
  252.             [DB Note Account Name] VARCHAR(50),
  253.             [DB Note Department] VARCHAR(50),
  254.             [DB Note Description] VARCHAR(1000),
  255.             [CR Note Account Code] VARCHAR(50),
  256.             [CR Note Account Name] VARCHAR(50),
  257.             [CR Note Department] VARCHAR(50),
  258.             [CR Note Description] VARCHAR(1000),
  259.             [Item Details] VARCHAR(4000)')
  260.            
  261.         INSERT #Items
  262.         SELECT I.VoucherID, I.ItemType,
  263.                I.ItemID, CAST('' AS VARCHAR(50)), CAST(NULL AS DATETIME), CAST(NULL AS DATETIME),
  264.          I.AllocationDate, VAI.NetTotal, CL.IsPositive, '',
  265.                CASE WHEN CL.IsPositive = 1 THEN 1 ELSE -1 END * I.AmountPaid AmountPaid,
  266.                CASE WHEN CL.IsPositive = 1 THEN 1 ELSE -1 END * I.AmountDebit AmountDebit,
  267.                CASE WHEN CL.IsPositive = 1 THEN 1 ELSE -1 END * I.AmountCredit AmountCredit,
  268.                DebitNoteDescription, DB.AccountCode, DB.AccountName, DebitNoteDepartment,
  269.                CreditNoteDescription, CR.AccountCode, CR.AccountName, CreditNoteDepartment,
  270.                CASE WHEN CL.IsPositive = 1 THEN 1 ELSE -1 END * (I.AmountPaid+I.AmountCredit-I.AmountDebit), ISNULL(VAI.ExchangeRate, 1)
  271.           FROM FI_ARAPItems I
  272.           JOIN #Summ S ON S.VoucherID = I.VoucherID
  273.           JOIN FI_ARAP M ON M.VoucherID = I.VoucherID
  274.           JOIN SH_ARAPCalculations CL ON CL.CompCode = I.ItemType
  275.           LEFT JOIN AC_Accounts DB ON DB.AccountID = I.DebitNoteAccountID
  276.           LEFT JOIN AC_Accounts CR ON CR.AccountID = I.CreditNoteAccountID
  277.           LEFT JOIN VIEW_ARAPItems VAI ON VAI.ItemID = I.ItemID AND VAI.CompCode = I.ItemType
  278.          WHERE (@PerDate IS NULL OR M.VoucherDate <= @PerDate)
  279.            AND (@PerDate IS NULL OR I.AllocationDate <= @PerDate)
  280.              AND (@AllocationStartDate IS NULL OR @AllocationEndDate IS NULL OR I.AllocationDate BETWEEN @AllocationStartDate AND @AllocationEndDate)
  281.              
  282.         EXEC USP_FI_ARAP_ResolveItemNames @IncludeDueDate = 1
  283.  
  284.         DELETE #Items
  285.        WHERE CASE WHEN (@ItemStartDate IS NULL AND @ItemEndDate IS NULL) OR (DocumentDate BETWEEN @ItemStartDate AND @ItemEndDate) THEN 1 ELSE 0 END = 0
  286.     END
  287.  
  288.     EXEC ('
  289.     ALTER TABLE #Summary ADD
  290.         [Invoice Tag] VARCHAR(300),
  291.         [Receipt Number] VARCHAR(300),
  292.         [Receipt Date] DATETIME,
  293.         [Settlement Info] VARCHAR(500),
  294.         [Settlement Description] VARCHAR(100)')
  295.  
  296.     SELECT CL.ClearingID, CL.ClearingNumber, CL.ClearingDate, B.BankAccountCode, CD.VoucherID
  297.       INTO #Clearing
  298.       FROM FI_Clearing CL
  299.       JOIN FI_ClearingDetails CD ON CD.ClearingID = CL.ClearingID
  300.       JOIN #Summ S ON S.VoucherID = CD.VoucherID
  301.       JOIN FI_BankAccounts B ON B.BankAccountID = CL.BankAccountID
  302.      WHERE CL.Void != 1
  303.        AND CASE WHEN @PerDate IS NULL OR CL.ClearingDate <= @PerDate THEN 1 ELSE 0 END = 1
  304.  
  305.     SELECT CL.TransferConfID, CL.TransferConfNumber, CL.TransferConfDate, B.BankAccountCode, CD.VoucherID
  306.       INTO #TransferConf
  307.       FROM FI_TransferConf CL
  308.       JOIN FI_TransferConfDetails CD ON CD.TransferConfID = CL.TransferConfID
  309.       JOIN #Summ S ON S.VoucherID = CD.VoucherID
  310.       JOIN FI_BankAccounts B ON B.BankAccountID = CL.BankAccountID
  311.      WHERE CL.Void != 1
  312.        AND CASE WHEN @PerDate IS NULL OR CL.TransferConfDate <= @PerDate THEN 1 ELSE 0 END = 1
  313.  
  314.     SELECT CL.CardSettlementID, CL.CardSettlementNumber, CL.CardSettlementDate, B.BankAccountCode, CD.VoucherID
  315.       INTO #CardSettlement
  316.       FROM FI_CardSettlement CL
  317.       JOIN FI_CardSettlementDetails CD ON CD.CardSettlementID = CL.CardSettlementID
  318.       JOIN #Summ S ON S.VoucherID = CD.VoucherID
  319.       JOIN FI_BankAccounts B ON B.BankAccountID = CL.BankAccountID
  320.      WHERE CL.Void != 1
  321.        AND CASE WHEN @PerDate IS NULL OR CL.CardSettlementDate <= @PerDate THEN 1 ELSE 0 END = 1
  322.          
  323.     SELECT I.VoucherID,
  324.     SUM(VFlag*I.AmountPaid)AmountPaid,
  325.     SUM(VFlag*I.AmountDebit)AmountDebit,
  326.     SUM(VFlag*I.AmountCredit)AmountCredit,
  327.     SUM(VFlag*(I.AmountPaid+I.AmountCredit-I.AmountDebit))EfCredit
  328.     INTO #SMX
  329.     FROM FI_ARAPItems I
  330.     JOIN #Summ S ON S.VoucherID=I.VoucherID
  331.     JOIN (SELECT *,CASE WHEN IsPositive=1 THEN 1 ELSE -1 END VFlag FROM SH_ARAPCalculations) CL ON CL.CompCode=I.ItemType
  332.     WHERE (I.AllocationDate <= @PerDate OR @PerDate IS NULL)
  333.     GROUP BY I.VoucherID
  334.     CREATE INDEX IX1 ON #SMX (VoucherID)
  335.  
  336.     SELECT RI.ItemID, MAX(R.ReceiptNo) ReceiptNo, MAX(R.ReceiptDate) ReceiptDate
  337.       INTO #Receipts
  338.       FROM FI_Receipt R
  339.       JOIN FI_ReceiptItems RI ON R.ReceiptID = RI.ReceiptID
  340.      WHERE R.Void = 0 AND RI.ItemType IN ('SI','SR')
  341.      GROUP BY RI.ItemID
  342.     CREATE INDEX IX10 ON #Receipts (ItemID)
  343.  
  344. SELECT DISTINCT I.ItemType, I.ItemID, dbo.UDF_FI_ARAPNotes_GetDetails (N.ARAPNoteID) Details
  345.   INTO #Details
  346.   FROM #Items I
  347.     JOIN FI_ARAPNotes N ON N.ARAPNoteID = I.ItemID AND I.ItemType LIKE '[RP][DN]'
  348.  
  349.     SET @SQL = '
  350. INSERT #Summary
  351. SELECT M.VoucherID,M.VoucherDate,M.TransferDate,M.VoucherNo,M.FPNo,M.VoucherType,CASE WHEN M.Class=1 THEN ''HMS Receipt Voucher'' WHEN M.Class=2 THEN''HMS Deposit Voucher''
  352. WHEN M.IncomeOrExpense=1 THEN ''Income'' ELSE ''Receivable'' END,CR.Currency,M.ExchangeRate,
  353. CS.CustomerCode,CASE WHEN M.IncomeOrExpense=1 THEN M.AssociateName ELSE CS.CustomerName END,
  354. CASE WHEN M.IncomeOrExpense=1 THEN M.AssociateName ELSE dbo.UDF_Common_CombineCodeAndName(CS.CustomerCode,CS.CustomerName)END,
  355. PaymentMethod,BA.BankAccountCode,M.CheckNo,M.CheckDueDate,M.BankName,M.AccountNo,M.AmountPaid,ISNULL(SM.AmountDebit,0),ISNULL(SM.AmountCredit,0),
  356. CASE WHEN M.IncomeOrExpense=1 THEN M.AmountPaid ELSE ISNULL(SM.AmountPaid,0) END,
  357. M.AmountPaid-CASE WHEN M.IncomeOrExpense=1 THEN M.AmountPaid ELSE ISNULL(SM.AmountPaid,0) END,0,
  358. dbo.UDF_Common_ConvertRate(@CurrencyID,M.AmountPaid,M.ExchangeRate),
  359. dbo.UDF_Common_ConvertRate(@CurrencyID,ISNULL(SM.AmountDebit,0),M.ExchangeRate),
  360. dbo.UDF_Common_ConvertRate(@CurrencyID,ISNULL(SM.AmountCredit,0),M.ExchangeRate),
  361. dbo.UDF_Common_ConvertRate(@CurrencyID,CASE WHEN M.IncomeOrExpense=1 THEN M.AmountPaid ELSE ISNULL(SM.AmountPaid,0) END,M.ExchangeRate),
  362. dbo.UDF_Common_ConvertRate(@CurrencyID,M.AmountPaid-CASE WHEN M.IncomeOrExpense=1 THEN M.AmountPaid ELSE ISNULL(SM.AmountPaid,0) END, M.ExchangeRate),
  363. CASE WHEN M.ExcludeInARAP=1 THEN''Exclude''ELSE''Include''END,ISNULL(CL.CollectorName,''''),
  364. M.Remarks,M.InternalRemarks,CX.ClearingNumber,CX.ClearingDate,CX.BankAccountCode,
  365. M.Verified,M.VerifiedBy,M.VerifyDateTime,CST.CardSettlementNumber,CST.CardSettlementDate,TF.TransferConfNumber,TF.TransferConfDate,TF.BankAccountCode,
  366. NULL,NULL,NULL,NULL,NULL,NULL,CT.CardTypeDescription,CTM.CardTerminalDescription' +
  367. CASE WHEN @ReportType LIKE '%Details' THEN ',
  368. I.ItemID,I.ItemType,I.DocumentType,I.DocumentNo,I.DocumentDate,I.DocumentDueDate,I.ItemExchangeRate,
  369. CASE WHEN M.PaymentMethod IN(''Cash'',''WriteOff'')THEN M.VoucherDate
  370. WHEN M.PaymentMethod=''Transfer'' AND @CMU=1 THEN M.TransferDate
  371. WHEN M.PaymentMethod=''Transfer'' AND M.Transferred=1 THEN M.VoucherDate
  372. WHEN M.PaymentMethod=''Transfer'' AND M.Transferred=0 THEN TF.TransferConfDate
  373. WHEN M.PaymentMethod=''Card'' THEN CST.CardSettlementDate
  374. WHEN M.PaymentMethod=''Check'' THEN COALESCE(CX.ClearingDate,M.CheckDueDate)
  375. ELSE NULL END,I.AllocationDate,I.Amount,I.AmountPaid,I.AmountDebit,I.AmountCredit,I.EffectiveAmountPaid,
  376. dbo.UDF_Common_ConvertRate(@CurrencyID,I.AmountPaid,M.ExchangeRate),
  377. dbo.UDF_Common_ConvertRate(@CurrencyID,I.AmountDebit,M.ExchangeRate),
  378. dbo.UDF_Common_ConvertRate(@CurrencyID,I.AmountCredit,M.ExchangeRate),
  379. dbo.UDF_Common_ConvertRate(@CurrencyID,I.EffectiveAmountPaid,M.ExchangeRate),
  380. DBNoteAccountCode,DBNoteAccountName,DBNoteDepartment,DBNoteDescription,CRNoteAccountCode,CRNoteAccountName,CRNoteDepartment,CRNoteDescription,
  381. DTL.Details, IV.InvoiceTag,RCP.ReceiptNo,RCP.ReceiptDate' ELSE ',NULL,NULL,NULL' END + ', M.SettlementDescription,
  382. COALESCE(RT.RevenueTypeDescription, ET.ExpenseTypeDescription) [Settlement Description]
  383. FROM FI_ARAP M
  384. LEFT JOIN FI_RevenueTypes RT ON RT.RevenueTypeID = M.ExpenseOrRevenueTypeID AND M.IsAR = 0
  385. LEFT JOIN FI_ExpenseTypes ET ON ET.ExpenseTypeID = M.ExpenseOrRevenueTypeID AND M.IsAR = 1
  386. JOIN #Summ S ON S.VoucherID=M.VoucherID
  387. JOIN CO_Currency CR ON CR.CurrencyID=M.CurrencyID
  388. LEFT JOIN AR_Customers CS ON CS.CustomerID=M.AssociateID
  389. LEFT JOIN #SelectedMembers SCS ON SCS.MemberID = CS.CustomerID
  390. LEFT JOIN AR_Collectors CL ON CL.CollectorID=M.CollectorID
  391. LEFT JOIN FI_CardTypes CT ON CT.CardTypeID=M.CardTypeID
  392. LEFT JOIN FI_CardTerminals CTM ON CTM.CardTerminalID=M.CardTerminalID
  393. LEFT JOIN FI_BankAccounts BA ON BA.BankAccountID=M.BankAccountID
  394. LEFT JOIN #SMX SM ON SM.VoucherID=M.VoucherID
  395. LEFT JOIN #Clearing CX ON CX.VoucherID=M.VoucherID
  396. LEFT JOIN #TransferConf TF ON TF.VoucherID=M.VoucherID
  397. LEFT JOIN #CardSettlement CST ON CST.VoucherID=M.VoucherID' +
  398. CASE WHEN @ReportType LIKE '%Details' THEN '
  399. JOIN #Items I ON I.VoucherID = M.VoucherID
  400. LEFT JOIN #Details DTL ON DTL.ItemType = I.ItemType AND DTL.ItemID = I.ItemID
  401. LEFT JOIN AR_Invoices IV ON IV.InvoiceID = I.ItemID AND I.ItemType IN (''SI'',''SR'')
  402. LEFT JOIN #Receipts RCP ON RCP.ItemID=IV.InvoiceID' ELSE '' END + '
  403. WHERE (@BankAccountID=0 OR M.BankAccountID=@BankAccountID)
  404.  AND (@PerDate IS NULL OR M.VoucherDate<=@PerDate)' +
  405. CASE WHEN @SettleStartDate IS NULL AND @SettleEndDate IS NULL THEN '' ELSE '
  406. AND ((M.PaymentMethod=''Check'' AND CX.ClearingDate BETWEEN @StStartDate AND @StEndDate)
  407. OR (M.PaymentMethod=''Card'' AND CST.CardSettlementDate BETWEEN @StStartDate AND @StEndDate)
  408. OR (M.PaymentMethod IN (''Cash'',''WriteOff'') AND M.VoucherDate BETWEEN @StStartDate AND @StEndDate)
  409. OR (M.PaymentMethod=''Transfer'' AND CASE WHEN M.Transferred = 1 THEN M.VoucherDate ELSE TF.TransferConfDate END BETWEEN @StStartDate AND @StEndDate)
  410. OR (M.PaymentMethod NOT IN(''Cash'',''WriteOf'',''Check'',''Card'',''Transfer'')))' END + '
  411. ORDER BY 2,4'
  412.  
  413.     EXEC SP_ExecuteSQL @SQL, N'@CurrencyID INT, @BankAccountID INT, @StStartDate DATETIME, @StEndDate DATETIME, @PerDate DATETIME, @CMU BIT',
  414.         @CurrencyID, @BankAccountID, @SettleStartDate, @SettleEndDate, @PerDate, @CMU
  415.  
  416. UPDATE #Summary
  417.    SET [Closed Down Payment] = V.Closed
  418.   FROM #Summary SX
  419.   JOIN (
  420. /*SELECT V.VoucherID, SUM(N.Amount) Closed
  421.   FROM FI_ARAP V
  422.   JOIN #Summ S ON S.VoucherID = V.VoucherID
  423.   JOIN FI_ARAPNotes N ON N.SourceVoucherID = V.VoucherID
  424.  WHERE (N.Date <= @PerDate OR @PerDate IS NULL)
  425.  GROUP BY V.VoucherID*/
  426. SELECT V.VoucherID, SUM(CASE WHEN N.Class = 0 THEN 1 ELSE -1 END * VI.AmountPaid) Closed
  427.   FROM FI_ARAP V
  428.   JOIN #Summ S ON S.VoucherID = V.VoucherID
  429.   JOIN FI_ARAPItems VI ON VI.VoucherID = V.VoucherID
  430.   JOIN FI_ARAPNotes N ON N.ARAPNoteID = VI.ItemID
  431.   JOIN FI_ARAP X ON X.VoucherID = N.SourceVoucherID
  432.  WHERE VI.ItemType IN ('RN','RD','PN','PD') AND VI.AllocationDate <= @PerDate
  433.  GROUP BY V.VoucherID) V
  434.     ON V.VoucherID = SX.VoucherID
  435.    
  436. IF @ReportType LIKE '%Details' BEGIN
  437.     --  Revenues
  438.     SET @SQL = '
  439. INSERT #Summary
  440. SELECT M.VoucherID, M.VoucherDate, M.TransferDate,M.VoucherNo, M.FPNo[Tax Invoice No.],M.VoucherType, CASE WHEN M.IncomeOrExpense = 1 THEN CASE WHEN IsAR = 1 THEN ''Income'' ELSE ''Expense'' END ELSE ''Payable'' END, CR.Currency, M.ExchangeRate,
  441. M.AssociateName,M.AssociateName,M.AssociateName,
  442. PaymentMethod, BA.BankAccountCode, M.CheckNo, M.CheckDueDate, M.BankName, M.AccountNo,
  443. M.AmountPaid,0,0,M.AmountPaid,0,0,
  444. dbo.UDF_Common_ConvertRate(@CurrencyID, M.AmountPaid, M.ExchangeRate),0,0,
  445. dbo.UDF_Common_ConvertRate(@CurrencyID, M.AmountPaid, M.ExchangeRate),0,
  446. CASE WHEN M.ExcludeInARAP = 1 THEN ''Exclude'' ELSE ''Include'' END,
  447. CL.CollectorName,M.Remarks,M.InternalRemarks,ISNULL(CLR.ClearingNumber, ''''), CLR.ClearingDate, ISNULL(CLR.BankAccountCode, ''''),
  448. M.Verified, M.VerifiedBy, M.VerifyDateTime, CST.CardSettlementNumber, CST.CardSettlementDate, TF.TransferConfNumber, TF.TransferConfDate, TF.BankAccountCode,NULL,NULL,NULL,NULL,NULL,NULL,
  449. CT.CardTypeDescription,CTM.CardTerminalDescription' +
  450. CASE WHEN @ReportType LIKE '%Details' THEN ',
  451. SM.VoucherExtraItemID,'''','''',RIGHT(CAST(COALESCE(ET.ExpenseTypeDescription,RT.RevenueTypeDescription,SM.Description) AS VARCHAR(500)),200),NULL,NULL,NULL,NULL,
  452. CASE WHEN M.PaymentMethod IN (''Cash'') THEN M.VoucherDate
  453. WHEN M.PaymentMethod=''Transfer'' AND M.Transferred=1 THEN M.VoucherDate
  454. WHEN M.PaymentMethod=''Transfer'' AND M.Transferred=0 THEN TF.TransferConfDate
  455. WHEN M.PaymentMethod=''Check'' THEN CLR.ClearingDate
  456. ELSE NULL END,SM.Amount,
  457. SM.Amount,0,0,SM.Amount,
  458. dbo.UDF_Common_ConvertRate(@CurrencyID, SM.Amount, M.ExchangeRate),
  459. 0,0,dbo.UDF_Common_ConvertRate(@CurrencyID, SM.Amount, M.ExchangeRate),
  460. '''','''', '''','''','''', '''', '''', '''', COALESCE(dbo.UDF_Common_NullIfEmpty(SM.Description), ET.ExpenseTypeDescription, RT.RevenueTypeDescription), NULL, NULL, NULL' ELSE '' END + ', M.SettlementDescription,
  461. COALESCE(WRT.RevenueTypeDescription, WET.ExpenseTypeDescription) [Settlement Description]
  462. FROM FI_ARAP M
  463. LEFT JOIN FI_RevenueTypes WRT ON WRT.RevenueTypeID = M.ExpenseOrRevenueTypeID AND M.IsAR = 0
  464. LEFT JOIN FI_ExpenseTypes WET ON WET.ExpenseTypeID = M.ExpenseOrRevenueTypeID AND M.IsAR = 1
  465. JOIN #Summ S ON S.VoucherID = M.VoucherID
  466. LEFT JOIN CC_BQ BQ ON BQ.BQID=M.BQID
  467. LEFT JOIN AR_Collectors CL ON CL.CollectorID=M.CollectorID
  468. JOIN CO_Currency CR ON CR.CurrencyID = M.CurrencyID
  469. LEFT JOIN FI_BankAccounts BA ON BA.BankAccountID = M.BankAccountID
  470. JOIN FI_ARAPExtraItems SM ON SM.VoucherID = M.VoucherID
  471. LEFT JOIN #Clearing CLR ON CLR.VoucherID = M.VoucherID
  472. LEFT JOIN #TransferConf TF ON TF.VoucherID = M.VoucherID
  473. LEFT JOIN #CardSettlement CST ON CST.VoucherID = M.VoucherID
  474. LEFT JOIN FI_ExpenseTypes ET ON ET.ExpenseTypeID = SM.TypeID AND M.IsAR = 0
  475. LEFT JOIN FI_RevenueTypes RT ON RT.RevenueTypeID = SM.TypeID AND M.IsAR = 1
  476. LEFT JOIN FI_CardTypes CT ON CT.CardTypeID=M.CardTypeID
  477. LEFT JOIN FI_CardTerminals CTM ON CTM.CardTerminalID=M.CardTerminalID
  478. WHERE M.IncomeOrExpense = 1
  479. AND (@ALlocationStartDate iS NULL OR @AllocationEndDate IS NULL OR M.VoucherDate BETWEEN @AllocationStartDate AND @AllocationEndDate)
  480. AND (@ItemStartDate IS NULL OR @ItemEndDate IS NULL OR M.VoucherDate BETWEEN @ItemstartDate AND @ItemEndDate)' +
  481. CASE WHEN @SettleStartDate IS NULL AND @SettleEndDate IS NULL THEN '' ELSE '
  482. AND ((M.PaymentMethod=''Check'' AND CLR.ClearingDate BETWEEN @SettleStartDate AND @SettleEndDate)
  483. OR (M.PaymentMethod=''Transfer'' AND CASE WHEN M.Transferred = 1 THEN M.VoucherDate ELSE TF.TransferConfDate END BETWEEN @SettleStartDate AND @SettleEndDate)
  484. OR (M.PaymentMethod IN (''WriteOff'',''Cash'') AND M.VoucherDate BETWEEN @SettleStartDate AND @SettleEndDate)
  485. OR (M.PaymentMethod NOT IN(''Check'',''Cash'',''WriteOff'',''Transfer'')))' END + '
  486. ORDER BY M.VoucherDate, M.VoucherNo'
  487.  
  488.     EXEC SP_ExecuteSQL @SQL, N'@CurrencyID INT, @PerDate DATETIME,  @SettleStartDate DATETIME, @SettleEndDate DATETIME,
  489.     @ItemStartDate DATETIME, @ItemEndDate DATETIME, @AllocationStartDate DATETIME, @AllocationEndDate DATETIME',
  490.         @CurrencyID, @PerDate, @SettleStartDate, @SettleEndDate, @ItemStartDate, @ItemEndDate, @AllocationStartDate, @AllocationEndDate
  491.  
  492. --  Other Items
  493.     SET @SQL = '
  494. INSERT #Summary
  495. SELECT M.VoucherID, M.VoucherDate, M.TransferDate,M.VoucherNo, M.FPNo[Tax Invoice No.],M.VoucherType, CASE WHEN M.IncomeOrExpense = 1 THEN CASE WHEN IsAR = 1 THEN ''Income'' ELSE ''Expense'' END ELSE ''Payable'' END, CR.Currency, M.ExchangeRate,
  496. M.AssociateName,M.AssociateName,M.AssociateName,
  497. PaymentMethod, BA.BankAccountCode, M.CheckNo, M.CheckDueDate, M.BankName, M.AccountNo,
  498. M.AmountPaid,0,0,M.AmountPaid,0,0,
  499. dbo.UDF_Common_ConvertRate(@CurrencyID, M.AmountPaid, M.ExchangeRate),0,0,
  500. dbo.UDF_Common_ConvertRate(@CurrencyID, M.AmountPaid, M.ExchangeRate),0,
  501. CASE WHEN M.ExcludeInARAP = 1 THEN ''Exclude'' ELSE ''Include'' END,
  502. CL.CollectorName,M.Remarks,M.InternalRemarks,ISNULL(CLR.ClearingNumber, ''''), CLR.ClearingDate, ISNULL(CLR.BankAccountCode, ''''),
  503. M.Verified, M.VerifiedBy, M.VerifyDateTime, CST.CardSettlementNumber, CST.CardSettlementDate, TF.TransferConfNumber, TF.TransferConfDate, TF.BankAccountCode,NULL,NULL,NULL,NULL,NULL,NULL,
  504. CT.CardTypeDescription,CTM.CardTerminalDescription' +
  505. CASE WHEN @ReportType LIKE '%Details' THEN ',
  506. 0,'''','''',RIGHT(CAST(COALESCE(SM.Description, NULL) AS VARCHAR(500)),200),NULL,NULL,NULL,NULL,
  507. CASE WHEN M.PaymentMethod IN (''Cash'') THEN M.VoucherDate
  508. WHEN M.PaymentMethod=''Transfer'' AND M.Transferred=1 THEN M.VoucherDate
  509. WHEN M.PaymentMethod=''Transfer'' AND M.Transferred=0 THEN TF.TransferConfDate
  510. WHEN M.PaymentMethod=''Check'' THEN CLR.ClearingDate
  511. ELSE NULL END,SM.Amount,
  512. SM.Amount,0,0,SM.Amount,
  513. dbo.UDF_Common_ConvertRate(@CurrencyID, SM.Amount, M.ExchangeRate),
  514. 0,0,dbo.UDF_Common_ConvertRate(@CurrencyID, SM.Amount, M.ExchangeRate),
  515. '''','''', '''','''','''', '''', '''', '''', COALESCE(dbo.UDF_Common_NullIfEmpty(SM.Description), NULL), NULL, NULL, NULL' ELSE '' END + ', M.SettlementDescription,
  516. COALESCE(WRT.RevenueTypeDescription, WET.ExpenseTypeDescription) [Settlement Description]
  517. FROM FI_ARAP M
  518. LEFT JOIN FI_RevenueTypes WRT ON WRT.RevenueTypeID = M.ExpenseOrRevenueTypeID AND M.IsAR = 0
  519. LEFT JOIN FI_ExpenseTypes WET ON WET.ExpenseTypeID = M.ExpenseOrRevenueTypeID AND M.IsAR = 1
  520. JOIN #Summ S ON S.VoucherID = M.VoucherID
  521. LEFT JOIN CC_BQ BQ ON BQ.BQID=M.BQID
  522. LEFT JOIN AR_Collectors CL ON CL.CollectorID=M.CollectorID
  523. JOIN CO_Currency CR ON CR.CurrencyID = M.CurrencyID
  524. LEFT JOIN FI_BankAccounts BA ON BA.BankAccountID = M.BankAccountID
  525. JOIN VIEW_FI_ARAP_OtherItems SM ON SM.VoucherID = M.VoucherID
  526. LEFT JOIN #Clearing CLR ON CLR.VoucherID = M.VoucherID
  527. LEFT JOIN #TransferConf TF ON TF.VoucherID = M.VoucherID
  528. LEFT JOIN #CardSettlement CST ON CST.VoucherID = M.VoucherID
  529. LEFT JOIN FI_CardTypes CT ON CT.CardTypeID=M.CardTypeID
  530. LEFT JOIN FI_CardTerminals CTM ON CTM.CardTerminalID=M.CardTerminalID
  531. WHERE (@ALlocationStartDate iS NULL OR @AllocationEndDate IS NULL OR M.VoucherDate BETWEEN @AllocationStartDate AND @AllocationEndDate)
  532. AND (@ItemStartDate IS NULL OR @ItemEndDate IS NULL OR M.VoucherDate BETWEEN @ItemstartDate AND @ItemEndDate)' +
  533. CASE WHEN @SettleStartDate IS NULL AND @SettleEndDate IS NULL THEN '' ELSE '
  534. AND ((M.PaymentMethod=''Check'' AND CLR.ClearingDate BETWEEN @SettleStartDate AND @SettleEndDate)
  535. OR (M.PaymentMethod=''Transfer'' AND CASE WHEN M.Transferred = 1 THEN M.VoucherDate ELSE TF.TransferConfDate END BETWEEN @SettleStartDate AND @SettleEndDate)
  536. OR (M.PaymentMethod IN (''WriteOff'',''Cash'') AND M.VoucherDate BETWEEN @SettleStartDate AND @SettleEndDate)
  537. OR (M.PaymentMethod NOT IN(''Check'',''Cash'',''WriteOff'',''Transfer'')))' END + '
  538. ORDER BY M.VoucherDate, M.VoucherNo'
  539.  
  540.     EXEC SP_ExecuteSQL @SQL, N'@CurrencyID INT, @PerDate DATETIME,  @SettleStartDate DATETIME, @SettleEndDate DATETIME,
  541.     @ItemStartDate DATETIME, @ItemEndDate DATETIME, @AllocationStartDate DATETIME, @AllocationEndDate DATETIME',
  542.         @CurrencyID, @PerDate, @SettleStartDate, @SettleEndDate, @ItemStartDate, @ItemEndDate, @AllocationStartDate, @AllocationEndDate
  543.  
  544. IF @Version = 'EDU' BEGIN
  545. SELECT S.*, M.MajorName [EDU Major], L.LevelName [EDU Level], L.LevelCode [EDU Level Code],
  546.        CN.ClassName [EDU Class],V.EDUReportDate [EDU Report DATE]
  547.   FROM #Summary S
  548.     JOIN FI_ARAP V ON V.VoucherID = S.VoucherID
  549.     LEFT JOIN EDU_StatusChange SC ON SC.StatusID = dbo.UDF_AR_Customers_GetStatusChangeRecordID (V.AssociateID, V.VoucherDate)
  550.     LEFT JOIN EDU_Majors M ON M.MajorID = SC.MajorID
  551.     LEFT JOIN EDU_Level L ON L.LeveLID = SC.LevelID
  552.     LEFT JOIN EDU_ClassName CN ON CN.ClassNameID = SC.ClassID
  553. RETURN
  554. END
  555. END
  556.  
  557. UPDATE #Summary
  558.    SET [Project Code] = P.ProjectCode, [Project Name] = P.ProjectName, [BQ NUMBER] = BQ.BQNumber, [Job Code] = J.JobCode, [Job Name] = J.JobName, [Job GROUP] = G.JobGroupName
  559.   FROM #Summary S
  560.   JOIN FI_ARAP V ON V.VoucherID = S.VoucherID
  561.   LEFT JOIN CC_BQ BQ ON BQ.BQID = V.BQID
  562.   LEFT JOIN CC_Jobs J ON J.JobID = BQ.JobID
  563.   LEFT JOIN CC_JobGroups G ON G.JobGroupID = J.JobGroupID
  564.   LEFT JOIN CC_Projects P ON P.ProjectID = G.ProjectID
  565.  
  566.     IF dbo.UDF_SH_Settings_GetAsBit ('ForHTS', 0) = 1 AND @ReportType = 'ReceiptSummary' BEGIN
  567.         SET @SQL = '
  568.         INSERT #Summary
  569.         SELECT 0, N.Date, N.Number, '''', ''Receivable'', CR.Currency, N.ExchangeRate, CS.CustomerCode, CS.CustomerName, dbo.UDF_Common_CombineCodeAndName (CS.CustomerCode, CS.CustomerName),
  570.                ''Cash'', BA.BankAccountCode, '''', NULL, '''', '''', CASE WHEN N.Class = 0 THEN -1 ELSE 1 END * D.Amount, 0, 0, CASE WHEN N.Class = 0 THEN -1 ELSE 1 END * D.Amount, 0,
  571.                dbo.UDF_Common_ConvertRate (0, CASE WHEN N.Class = 0 THEN -1 ELSE 1 END * D.Amount, N.ExchangeRate), 0, 0, dbo.UDF_Common_ConvertRate (0, CASE WHEN N.Class = 0 THEN -1 ELSE 1 END * D.Amount, N.ExchangeRate),
  572.                0, ''Include'', '''', '''', '''', NULL, '''', 0, '''', NULL, '''', NULL, '''', NULL, ''''
  573.           FROM FI_ARAPNotes N
  574.           JOIN CO_Currency CR ON CR.CurrencyID = N.CurrencyID
  575.           JOIN AR_Customers CS ON CS.CustomerID = N.AssociateID
  576.           JOIN FI_ARAPNoteDetails D ON D.ARAPNoteID = N.ARAPNoteID
  577.           JOIN FI_BankAccounts BA ON BA.BankAccountID = D.BankAccountID
  578.          WHERE N.IsAR = 1 AND N.Void != 1 AND N.Date BETWEEN @StartDate AND @EndDate AND D.LinkedToBankAccount = 1'
  579.         EXEC SP_ExecuteSQL @SQL, N'@StartDate DATETIME, @EndDate DATETIME', @StartDate, @EndDate
  580.     END
  581.  
  582.     IF @ForITB != 1 BEGIN
  583.         IF @ReportType LIKE '%Details' BEGIN
  584.             SET @SQL = '
  585. SELECT RI.ItemType, RI.ItemID, MAX(R.ReceiptNo) ReceiptNo, MAX(R.ReceiptDate) ReceiptDate
  586.     INTO #XReceipts
  587.     FROM FI_Receipt R
  588.     JOIN FI_ReceiptItems RI ON R.ReceiptID = RI.ReceiptID
  589.     WHERE R.Void = 0
  590.     GROUP BY RI.ItemType, RI.ItemID
  591. CREATE INDEX IX10 ON #XReceipts (ItemType, ItemID)
  592.  
  593. SELECT S.*, V.ExternalRef Ref, CASE WHEN [Payment Method] = ''Cash'' THEN [Voucher Date]
  594.               WHEN [Payment Method] = ''Check'' THEN [Clearing Date]
  595.               WHEN [Payment Method] = ''Transfer'' AND (Transferred = 1 OR IncomingTransferVerified = 1) THEN [Transfer Conf. Date]
  596.               WHEN [Payment Method] = ''Transfer'' THEN [Transfer Conf. Date]
  597.               WHEN [Payment Method] = ''Card'' THEN [Card Settlement Date]
  598.           ELSE [Voucher Date]
  599.               END [Effective Date], V.BankCharges[Bank Charges],
  600.       CAST(dbo.UDF_Common_MinusToZero(DATEDIFF (D, [Item Date], ' + CASE WHEN @CMU = 1 THEN 'CASE WHEN V.SRDate IS NOT NULL THEN V.SRDate
  601. WHEN V.PaymentMethod = ''Cash'' THEN V.VoucherDate WHEN V.PaymentMethod = ''Transfer'' THEN V.TransferDate ELSE V.CheckDueDate END' ELSE '[Settle Date]' END + ')) AS INT) [Actual Payment Terms],
  602.       CAST(dbo.UDF_Common_MinusToZero(DATEDIFF (D, [Item Due Date], CASE WHEN @CMU = 1 AND V.SRDate IS NOT NULL THEN V.SRDate WHEN V.PaymentMethod=''Transfer'' AND @CMU = 1 THEN V.TransferDate
  603. WHEN V.PaymentMethod=''Check'' AND @CMU = 1 THEN V.CheckDueDate ELSE [Settle Date] END)) AS INT)
  604.       [Overdue Days],DO.DeliveryOrderNumber [Delivery Order Number],
  605.       IV.BLDate [BL Date], ISNULL(COALESCE(IV.CustomerPOs, DO.DeliveryOrderNumber), '''') [Customer PO], SP.SalesPersonCode [Customer''s Sales Person Code], SP.SalesPersonName [Customer''s Sales Person Name],
  606.              CT.ContractNumber [Contract Number],
  607.       ISP.SalesPersonCode [Invoice''s Sales Person Code], ISP.SalesPersonName [Invoice''s Sales Person Name],
  608.       CASE WHEN V.PaymentMethod != ''Check'' THEN '''' WHEN V.OtherOwnerCheck=1 THEN ''No'' ELSE ''Yes'' END [Owner Check], IV.InvoiceType [Invoice Type],
  609.       COALESCE(ARN.Remarks, IV.Remarks) [Item Remarks], V.NoPPh [No. Bukti Potong PPh], V.DeductedPPh [Pot. PPh], V.TglPPh [Tanggal Bukti Potong PPh],
  610.       CA.CustomerAreaCode [Customer Area Code], CA.CustomerAreaName [Customer Area Name], CSA.CustomerSubAreaCode [Customer Sub-Area Code], CSA.CustomerSubAreaName [Customer Sub-Area Name],
  611.       CASE WHEN V.OtherOwnerCheck = 1 THEN ''Other'' ELSE ''Own'' END [Check Owner],
  612.       ISNULL(AC.AccountCode, '''') [Account Code], ISNULL(AC.AccountName, '''') [Account Name], ISNULL(COALESCE(dbo.UDF_Common_NullIfEmpty(EXI.Department), RT.Department), '''') [Cost Center],CCN.Description[Cost Center Description],
  613.        ISNULL(LV.LevelName, '''') [EDU Level], CN.ClassName [EDU Class Name], M.MajorName [EDU Major], --ERT.RevenueTypeDescription [EDU Revenue Type],
  614.          IV.FPNo [Item Tax Invoice No.],
  615.          XR.receiptdate [Invoice Receipt Date],
  616.       CASE WHEN V.VoidCheck=1 THEN ''Yes'' ELSE '''' END [Void Check],
  617.                    BG.BusinessGroupName [Business Group Code], BG.Description [Business Group Name], V.CreatedBy [Created By], V.CreateDate [Create Date], CF.Description [Cash Flow Code], V.NetAmountPaid [Total Net Amount Paid],
  618.                    CASE WHEN S.[Item Type] IN (''AR Sales'', ''AR Sales Return'') THEN dbo.UDF_AR_Invoices_GetDescriptionWithAcc (S.ItemID)
  619.           ELSE EXI.DEscription END [Item Description]' + CASE WHEN @Version NOT IN ('MBP') THEN '' ELSE ',
  620.       dbo.UDF_AR_Invoices_GetSODates (IV.InvoiceID, ''SODate'') [SO Date],
  621.       dbo.UDF_AR_Invoices_GetSONumber (IV.InvoiceID) [SO Number]' END + '
  622.  INTO #XDays
  623.  FROM #Summary S
  624.     LEFT JOIN #XReceipts XR ON XR.ItemType = S.ItemType AND XR.ItemID = S.ItemID
  625.  LEFT JOIN FI_ARAP V ON V.VoucherID = S.VoucherID
  626.  LEFT JOIN FI_CashFlow CF ON CF.ID = V.CashFlowID
  627.  LEFT JOIN AR_Invoices IV ON IV.InvoiceID = S.ItemID AND S.[Item Type] IN (''AR Sales'', ''AR Sales Return'')
  628.  LEFT JOIN FI_ARAPNotes ARN ON ARN.ARAPNoteID = S.ItemID AND S.[Item Type] IN (SELECT DisplayTitle FROM SH_ARAPCalculations WHERE SourceTable = ''FI_ARAPNotes'')
  629.  LEFT JOIN AR_Customers C ON C.CustomerCode = S.[Customer Code]
  630.  LEFT JOIN AR_BUsinessGroups BG ON BG.BusinessGroupID = C.BusinessGroupID
  631.  LEFT JOIN AR_CustomerAreas CA ON CA.CustomerAreaID = C.CustomerAreaID
  632.  LEFT JOIN AR_CustomerSubAreas CSA ON CSA.CustomerSubAreaID = C.CustomerSubAreaID
  633.  LEFT JOIN AR_SalesPersons SP ON SP.SalesPersonID = C.SalesPersonID
  634.  LEFT JOIN AR_SalesPersons ISP ON ISP.SalesPersonID = COALESCE(IV.SalesPersonID, ARN.SalesPersonID)
  635.  LEFT JOIN PALM_Tickets T ON T.TicketID = S.ItemID AND S.[Item Type] = ''Pengiriman Produk''
  636.  LEFT JOIN PALM_DeliveryOrders DO ON DO.DeliveryOrderID = T.DeliveryOrderID
  637.     LEFT JOIN PALM_Contracts CT ON CT.ContractID = DO.ContractID
  638.  LEFT JOIN FI_ARAPExtraItems EXI ON EXI.VoucherExtraItemID = S.ItemID AND V.IncomeOrExpense = 1
  639.  LEFT JOIN FI_RevenueTypes RT ON RT.RevenueTypeID = EXI.TypeID AND V.IsAR = 1
  640.  LEFT JOIN AC_Accounts AC ON AC.AccountID = COALESCE(CASE WHEN EXI.AccountID = 0 THEN NULL ELSE EXI.AccountID END, RT.AccountID)
  641.  LEFT JOIN AC_CostCenterNames CCN ON CCN.CostCenter = ISNULL(COALESCE(dbo.UDF_Common_NullIfEmpty(EXI.Department), RT.Department), '''')
  642.       LEFT JOIN EDU_StatusChange SCX ON SCX.StatusID = dbo.UDF_AR_Customers_GetStatusChangeRecordID (C.CustomerID, V.VoucherDate)
  643.       LEFT JOIN EDU_Level LV ON LV.LevelID = SCX.LevelID
  644.       LEFT JOIN EDU_ClassName CN ON CN.ClassnameID = SCX.ClassID
  645.       LEFT JOIN EDU_Majors M ON M.MajorID = SCX.MajorID
  646. WHERE (@OverdueAfter IS NULL OR CAST(dbo.UDF_Common_MinusToZero(DATEDIFF (D, [Item Due Date], [Settle Date])) AS INT) >= @OverdueAfter)
  647.  
  648. SELECT XD.*,
  649.       ISNULL(DATEDIFF(DD, [Voucher Date], ISNULL([Settle Date], [Voucher Date])), 0) [Voucher-Settle Days],
  650.       ISNULL(DATEDIFF(DD, [Voucher Date], [Receipt Date]), 0) [Voucher-Receipt Days],
  651.       ISNULL(DATEDIFF(DD, [Receipt Date], ISNULL([Settle Date], [Voucher Date])), 0) [Receipt-Settle Days],
  652.       ISNULL(DATEDIFF(DD, [Item Date], ISNULL([Settle Date], [Voucher Date])), 0) [Invoice-Settle Date Days],
  653.              DATEDIFF (DAY, [Item Date], [Item Due Date]) [Terms]
  654.  FROM #XDays XD'
  655.         END ELSE BEGIN
  656.             SET @SQL = '
  657.             SELECT S.*, V.ExternalRef Ref, CASE WHEN [Payment Method] = ''Cash'' THEN [Voucher Date]
  658.                            WHEN [Payment Method] = ''Check'' THEN [Clearing Date]
  659.                            WHEN [Payment Method] = ''Transfer'' AND (Transferred = 1 OR IncomingTransferVerified = 1) THEN [Transfer Conf. Date]
  660.                            WHEN [Payment Method] = ''Transfer'' THEN [Transfer Conf. Date]
  661.                           WHEN [Payment Method] = ''Card'' THEN [Card Settlement Date]
  662.               ELSE [Voucher Date]
  663.                            END [Effective Date], SP.SalesPersonCode [Customer''s Sales Person Code], SP.SalesPersonName [Customer''s Sales Person Name],
  664.                    CASE WHEN V.PaymentMethod != ''Check'' THEN '''' WHEN V.OtherOwnerCheck=1 THEN ''No'' ELSE ''Yes'' END [Owner Check],
  665.                          V.NoPPh [No. Bukti Potong PPh], V.DeductedPPh [Pot. PPh], V.TglPPh [Tanggal Bukti Potong PPh],
  666.                    CASE WHEN IncomeOrExpense = 1 THEN dbo.UDF_FI_ARAP_CreateDescriptionForIncomeOrExpense(V.VoucherID) ELSE dbo.UDF_FI_ARAP_GetDescription(V.VoucherID) END Details,
  667.                    CA.CustomerAreaCode [Customer Area Code], CA.CustomerAreaName [Customer Area Name], CSA.CustomerSubAreaCode [Customer Sub-Area Code], CSA.CustomerSubAreaName [Customer Sub-Area Name],
  668.                    ISNULL(MS.SReturn, 0) [Sales Return], ISNULL(MS.SInvoice, 0) [Sales Invoice], ISNULL(MS.VRC,0) [Void Check],
  669.                    ISNULL(MS.RD, 0) [AR Discount Note], ISNULL(MS.RN, 0) [AR Note],
  670.                    ISNULL(MS.RDClosing, 0) [Over Receipt],
  671.                    CASE WHEN V.OtherOwnerCheck = 1 THEN ''Other'' ELSE ''Own'' END [Check Owner],
  672.                    BG.BusinessGroupName [Business Group Code], BG.Description [Business Group Name], V.CreatedBy [Created By], V.CreateDate [Create Date], CF.Description [Cash Flow Code], V.NetAmountPaid [Total Net Amount Paid],
  673.                    ISNULL(LV.LevelName, '''') [EDU Level], CN.ClassName [EDU Class Name], M.MajorName [EDU Major],
  674.                      dbo.UDF_FI_ARAP_GetInvoiceDetails (S.VoucherID) InvoiceDetails,
  675.                      V.BankCharges [Bank Charges], PL.PackingListNo [Packing List No.],
  676.                      V.EDUReportDate [EDU Report Date]
  677.               FROM #Summary S
  678.               LEFT JOIN (
  679.             SELECT VI.VoucherID,
  680.                    SUM(CASE WHEN VI.ItemType = ''SI'' THEN VI.AmountPaid+VI.AmountCredit-VI.AmountDebit ELSE 0 END) SInvoice,
  681.                    SUM(CASE WHEN VI.ItemType = ''SR'' THEN VI.AmountPaid+VI.AmountCredit-VI.AmountDebit ELSE 0 END) SReturn,
  682.                    SUM(CASE WHEN VI.ItemType = ''RD'' THEN VI.AmountPaid+VI.AmountCredit-VI.AmountDebit ELSE 0 END) RD,
  683.                    SUM(CASE WHEN VI.ItemType = ''RN'' THEN VI.AmountPaid+VI.AmountCredit-VI.AmountDebit ELSE 0 END) RN,
  684.                    SUM(CASE WHEN VI.ItemType = ''VRC'' THEN VI.AmountPaid+VI.AmountCredit-VI.AmountDebit ELSE 0 END) VRC,
  685.                    SUM(CASE WHEN VI.ItemType = ''RD'' AND VI.FromClosing = 1 THEN VI.AmountPaid+VI.AmountCredit-VI.AmountDebit ELSE 0 END) RDClosing
  686.               FROM FI_ARAPItems VI
  687.               JOIN #Summary S ON S.VoucherID = VI.VoucherID
  688.              WHERE (VI.AllocationDate <= @PerDate OR @PerDate IS NULL)
  689.              GROUP BY VI.VoucherID) MS
  690.                 ON MS.VoucherID = S.VoucherID
  691.               LEFT JOIN AR_Customers CS ON CS.[CustomerCode] = S.[Customer Code]
  692.               LEFT JOIN AR_CustomerAreas CA ON CA.CustomerAreaID = CS.CustomerAreaID
  693.               LEFT JOIN AR_CustomerSubAreas CSA ON CSA.CustomerSubAreaID = CS.CustomerSubAreaID
  694.               LEFT JOIN AR_BusinessGroups BG ON BG.BusinessGroupID = CS.BusinessGroupID
  695.               LEFT JOIN AR_SalesPersons SP ON SP.SalesPersonID = CS.SalesPersonID
  696.               LEFT JOIN FI_ARAP V ON V.VoucherID = S.VoucherID
  697.                 LEFT JOIN FI_RevenueTypes RT ON RT.RevenueTypeID = V.ExpenseOrRevenueTypeID AND V.IsAR = 0
  698.                 LEFT JOIN FI_ExpenseTypes ET ON ET.ExpenseTypeID = V.ExpenseOrRevenueTypeID AND V.IsAR = 1
  699.                 LEFT JOIN EXP_PackingList PL ON PL.PackingListID = V.ExSourceID AND V.ExSource = ''EXP.PackingList''
  700.               LEFT JOIN FI_CashFlow CF ON CF.ID = V.CashFlowID
  701.       LEFT JOIN EDU_StatusChange SCX ON SCX.StatusID = dbo.UDF_AR_Customers_GetStatusChangeRecordID (CS.CustomerID, V.VoucherDate)
  702.       LEFT JOIN EDU_Level LV ON LV.LevelID = SCX.LevelID
  703.       LEFT JOIN EDU_ClassName CN ON CN.ClassnameID = SCX.ClassID
  704.       LEFT JOIN EDU_Majors M ON M.MajorID = SCX.MajorID'
  705.         END
  706.        
  707.         EXEC SP_ExecuteSQL @SQL, N'@OverdueAfter INT, @CMU BIT, @PerDate DATETIME', @OverdueAfter, @CMU, @PerDate
  708.     END ELSE
  709.         SELECT S.*, M.MajorName Major, SG.GroupName [GROUP], ST.AcademicYear [YEAR],
  710.                  CASE WHEN ST.Active != 1 OR ST.QuitDate IS NOT NULL THEN 'Inactive' WHEN GraduationDate IS NOT NULL THEN 'Graduate' ELSE 'Active' END [STATUS]
  711.           FROM #Summary S
  712.           JOIN AR_Customers CS ON CS.CustomerCode = S.[Customer Code]
  713.           JOIN EDU_Students ST ON ST.CustomerID = CS.CustomerID
  714.           LEFT JOIN EDU_Majors M ON M.MajorID = ST.MajorID
  715.           LEFT JOIN EDU_CIS_StudentGroups SG ON SG.GroupID = ST.GroupID
  716.  
  717.         IF @Version LIKE 'EDU%' BEGIN
  718.             SELECT DISTINCT CS.CustomerCode [Customer Code], M.MajorName, L.LevelName, L.LevelCode, CN.ClassName, CS.Phone, CS.BillingAddressLine1
  719.                 FROM #Summary S
  720.                 JOIN AR_Customers CS ON CS.CustomerCode = S.[Customer Code]
  721.                 LEFT JOIN EDU_StatusChange SC ON SC.StatusID = dbo.UDF_AR_Customers_GetStatusChangeRecordID (CS.CustomerID, S.[Voucher DATE])
  722.                 LEFT JOIN EDU_Level L ON L.LevelID = SC.LevelID
  723.                 LEFT JOIN EDU_Majors M ON M.MajorID = SC.MajorID
  724.                 LEFT JOIN EDU_ClassName CN ON CN.ClassNameID = SC.ClassID
  725.  
  726.             SELECT S.[Voucher No.], N.EDUPeriod, N.EDURevenueTypeID, VI.AmountDebit Fine, -VI.AmountCredit Disc, VI.AmountPaid+VI.EDURemain Paid, RT.DisplayIndex,
  727.                    VI.EDURemain, VI.VoucherItemID, -V.BankCharges Surcharge, SC.LevelID, SC.MajorID,
  728.                          BA.BankAccountCode, BA.BankName, BA.AccountNo, V.EDUHideDiscount, ISNULL(V.EDUDiscReason, '') EDUDiscReason, VI.CreditNoteDescription, VI.DebitNoteDescription,
  729.                          CASE WHEN RT.RevenueTypeDescription LIKE '%DAILY%' THEN N.DATE ELSE NULL END DATE
  730.               INTO #RawItems
  731.                 FROM (SELECT DISTINCT [Voucher No.] FROM #Summary) S
  732.                 JOIN FI_ARAP V ON V.VoucherNo = S.[Voucher No.]
  733.                 JOIN FI_ARAPItems VI ON VI.VoucherID = V.VoucherID
  734.                 LEFT JOIN FI_BankAccounts BA ON BA.BankAccountID = V.BankAccountID
  735.                 JOIN FI_ARAPNotes N ON N.ARAPNoteID = VI.ItemID AND VI.ItemType IN ('RD', 'RN')
  736.                 JOIN FI_RevenueTypes RT ON RT.RevenueTypeID = N.EDURevenueTypeID
  737.                 LEFT JOIN EDU_StatusChange SC ON SC.StatusID = dbo.UDF_AR_Customers_GetStatusChangeRecordID (N.AssociateID, V.VoucherDate)
  738.              --WHERE RT.IncludeInRevenue = 1
  739.              UNION ALL
  740.             SELECT S.[Voucher No.], YEAR(InvoiceDate)*100+MONTH(InvoiceDate), RT.RevenueTypeID, VI.AmountDebit Fine, -VI.AmountCredit Disc, VI.AmountPaid+VI.EDURemain Paid, RT.DisplayIndex,
  741.                    VI.EDURemain, VI.VoucherItemID, -V.BankCharges Surcharge, SC.LevelID, SC.MajorID,
  742.                          BA.BankAccountCode, BA.BankName, BA.AccountNo, V.EDUHideDiscount, ISNULL(V.EDUDiscReason, '') EDUDiscReason, VI.CreditNoteDescription, VI.DebitNoteDescription, N.InvoiceDate
  743.                 FROM (SELECT DISTINCT [Voucher No.] FROM #Summary) S
  744.                 JOIN FI_ARAP V ON V.VoucherNo = S.[Voucher No.]
  745.                 LEFT JOIN FI_BankAccounts BA ON BA.BankAccountID = V.BankAccountID
  746.                 JOIN FI_ARAPItems VI ON VI.VoucherID = V.VoucherID
  747.                 JOIN AR_Invoices N ON N.InvoiceID = VI.ItemID AND VI.ItemType IN ('SI', 'SR')
  748.                 JOIN FI_RevenueTypes RT ON RT.RevenueTypeID = dbo.UDF_AR_Invoices_GetEDURevenueTypeID (N.InvoiceID)
  749.                 LEFT JOIN EDU_StatusChange SC ON SC.StatusID = dbo.UDF_AR_Customers_GetStatusChangeRecordID (N.CustomerID, V.VoucherDate)
  750.              --WHERE RT.IncludeInRevenue = 1
  751.  
  752.             SELECT [Voucher No.], EDURevenueTypeID, CAST('' AS VARCHAR(4000)) Periods, SUM(Paid-Fine-Disc) Paid, SUM(Disc) Disc, SUM(Fine) Fine,
  753.                    CAST(0 AS INT) Period1, CAST(0 AS INT) Period2, DisplayIndex, SUM(EDURemain) Remaining, LevelID, MajorID, BankName,
  754.                        BankAccountCode, AccountNo, ISNULL(EDUHideDiscount, 0) EDUHideDiscount, ISNULL(EDUDiscReason, '') EDUDiscReason
  755.               INTO #Summ1
  756.                 FROM #RawItems
  757.              GROUP BY [Voucher No.], EDURevenueTypeID, DisplayIndex, LevelID, MajorID, BankName, BankAccountCode, AccountNo, EDUHideDiscount, ISNULL(EDUDiscReason, '')
  758.  
  759.             DECLARE @VNo VARCHAR(50), @Period INT, @RTID INT
  760.             DECLARE XCursor CURSOR LOCAL FOR
  761.             SELECT [Voucher No.], EDURevenueTypeID, EDUPeriod, DATE
  762.                 FROM #RawItems RI
  763.              ORDER BY 1, 2, 3
  764.  
  765.             OPEN XCursor
  766.             DECLARE @XDate DATETIME
  767.             FETCH FROM XCursor INTO @VNO, @RTID, @Period, @XDate
  768.             WHILE @@FETCH_STATUS = 0 BEGIN
  769.                 IF @XDate IS NULL BEGIN
  770.                     DECLARE @P1 INT, @P2 INT
  771.                     SELECT @P1 = 0, @P2 = 0
  772.                     SELECT @P1 = Period1, @P2 = Period2 FROM #Summ1 WHERE [Voucher No.] = @VNo AND EDURevenueTypeID = @RTID
  773.                     IF @P1 = 0
  774.                         UPDATE #Summ1 SET Period1 = @Period, Period2 = @Period, Periods = dbo.UDF_Common_Concat (Periods, dbo.UDF_Common_GetPeriodName (@Period)) WHERE EDURevenueTypeID = @RTID AND [Voucher No.] = @VNo
  775.                     ELSE IF dbo.UDF_Common_AddMonthToPeriod (@P2, 1) = @Period
  776.                         UPDATE #Summ1 SET Period2 = @Period, Periods = dbo.UDF_Common_Concat (Periods, dbo.UDF_Common_GetPeriodName (Period1) + ' to ' + dbo.UDF_Common_GetPeriodName (@Period)) WHERE EDURevenueTypeID = @RTID AND [Voucher No.] = @VNo
  777.                     ELSE
  778.                         UPDATE #Summ1 SET Period1 = @Period, Period2 = @Period, Periods = Periods + ', ' + dbo.UDF_Common_GetPeriodName (@Period) WHERE EDURevenueTypeID = @RTID AND [Voucher No.] = @VNo
  779.                 END ELSE BEGIN
  780.                     UPDATE #Summ1 SET Periods = Periods + CASE WHEN LEN(Periods) > 0 THEN ', ' ELSE '' END + CONVERT(VARCHAR(30), @XDate, 106) WHERE EDURevenueTypeID = @RTID AND [Voucher No.] = @VNo
  781.                 END
  782.  
  783.                 FETCH FROM XCursor INTO @VNO, @RTID, @Period, @XDate
  784.             END
  785.             DEALLOCATE XCursor
  786.  
  787.             SELECT V.VoucherNo, SUM(-V.BankCharges) Surcharge, SC.LevelID, SC.MajorID
  788.               INTO #Surc
  789.                 FROM #Summary S
  790.                 JOIN FI_ARAP V ON V.VoucherNo = S.[Voucher No.]
  791.                 JOIN AR_Customers CS ON CS.CustomerID = V.AssociateID
  792.                 LEFT JOIN EDU_StatusChange SC ON SC.StatusID = dbo.UDF_AR_Customers_GetStatusChangeRecordID (CS.CustomerID, V.VoucherDate)
  793.              WHERE -V.BankCharges != 0
  794.              GROUP BY V.VoucherNo, LevelID, MajorID
  795.  
  796.             INSERT #Summ1 ([Voucher No.], EDURevenueTypeID, Periods, Paid, DisplayIndex, Disc, Fine, Remaining, LevelID, MajorID, EDUDiscReason, EDUHideDiscount)
  797.             SELECT VoucherNo, 0, '', Surcharge, 9999, 0, 0, 0, LevelID, MajorID, '', 0
  798.               FROM #Surc
  799.            
  800.             SELECT S.*, UPPER(COALESCE(RT.RevenueTypeDescription, 'SURCHARGE')) RevenueTypeDescription,
  801.                    DX.Details Description, V.EDUHideDiscount, ISNULL(V.EDUDiscReason, '') EDUDiscReason,
  802.                          CASE WHEN V.PaymentMethod = 'Check' THEN BA.BankName ELSE '' END BankName, BA.BankAccountCode, BA.AccountNo, BA.AccountOwner,
  803.                          dbo.UDF_FI_ARAP_GetDescriptionEDU (V.VoucherID) DetailRemarks
  804.               FROM #Summ1 S
  805.                 LEFT JOIN FI_RevenueTypes RT ON RT.RevenueTypeID = S.EDURevenueTypeID
  806.                 JOIN FI_ARAP V ON V.VoucherNo= S.[Voucher No.]
  807.                 LEFT JOIN FI_ARAPDescription DX ON DX.VoucherID = V.VoucherID
  808.                 LEFT JOIN FI_BankAccounts BA ON BA.BankAccountID = V.BankAccountID
  809.              ORDER BY [Voucher No.], COALESCE(RT.[DisplayIndex], S.DisplayIndex),
  810.                    DX.Details, V.EDUHideDiscount, ISNULL(V.EDUDiscReason, '')
  811.  
  812.             SELECT L.LevelCode, L.LevelName, S.EDURevenueTypeID, SUM(Fine) Fine,
  813.                    SUM(Disc) Disc, SUM(S.Paid) Paid, COALESCE(RT.DisplayIndex, S.DisplayIndex) DisplayIndex,
  814.                          UPPER(COALESCE(RT.RevenueTypeDescription, 'SURCHARGE')) RevenueTypeDescription, SUM(S.Remaining) Remaining
  815.                 FROM #Summ1 S
  816.                 LEFT JOIN EDU_Level L ON L.LevelID = S.LevelID
  817.                 LEFT JOIN FI_RevenueTypes RT ON RT.RevenueTypeID = S.EDURevenueTypeID
  818.              GROUP BY L.LevelCode, L.LevelName, COALESCE(RT.DisplayIndex, S.DisplayIndex), S.EDURevenueTypeID, RT.RevenueTypeDescription
  819.  
  820.             SELECT L.MajorName, S.EDURevenueTypeID, SUM(Fine) Fine,
  821.                    SUM(Disc) Disc, SUM(S.Paid) Paid, COALESCE(RT.DisplayIndex, 9999) DisplayIndex, UPPER(COALESCE(RT.RevenueTypeDescription, 'SURCHARGE')) RevenueTypeDescription, SUM(S.Remaining) Remaining
  822.                 FROM #Summ1 S
  823.                 LEFT JOIN EDU_Majors L ON L.MajorID = S.MajorID
  824.                 LEFT JOIN FI_RevenueTypes RT ON RT.RevenueTypeID = S.EDURevenueTypeID
  825.              GROUP BY L.MajorName, COALESCE(RT.DisplayIndex, 9999), RT.RevenueTypeDescription, S.EDURevenueTypeID
  826.  
  827.             SELECT S.EDURevenueTypeID, SUM(Fine) Fine,
  828.                    SUM(Disc) Disc, SUM(S.Paid) Paid, COALESCE(RT.DisplayIndex, 9999) DisplayIndex, UPPER(COALESCE(RT.RevenueTypeDescription, 'SURCHARGE')) RevenueTypeDescription, SUM(S.Remaining) Remaining
  829.                 FROM #Summ1 S
  830.                 LEFT JOIN FI_RevenueTypes RT ON RT.RevenueTypeID = S.EDURevenueTypeID
  831.              GROUP BY COALESCE(RT.DisplayIndex, 9999), RT.RevenueTypeDescription, S.EDURevenueTypeID
  832. /*
  833.             DECLARE @Src MONEY
  834.             SELECT @Src = SUM(-V.BankCharges)
  835.                 FROM #Summary S
  836.                 JOIN FI_ARAP V ON V.VoucherNo = S.[Voucher No.]
  837.             SET @Src = ISNULL(@Src, 0)
  838.  
  839.             SELECT N.EDURevenueTypeID, SUM(VI.AmountDebit) Fine,
  840.                    SUM(VI.AmountCredit) Disc, SUM(VI.AmountPaid) Paid, RT.DisplayIndex, RT.RevenueTypeDescription
  841.                 FROM #Summary S
  842.                 JOIN FI_ARAP V ON V.VoucherNo = S.[Voucher No.]
  843.                 JOIN FI_ARAPItems VI ON VI.VoucherID = V.VoucherID
  844.                 JOIN FI_ARAPNotes N ON N.ARAPNoteID = VI.ItemID AND VI.ItemType IN ('RD', 'RN')
  845.                 JOIN FI_RevenueTypes RT ON RT.RevenueTypeID = N.EDURevenueTypeID
  846.                 JOIN AR_Customers CS ON CS.CustomerCode = S.[Customer Code]
  847.                 LEFT JOIN EDU_StatusChange SC ON SC.StatusID = dbo.UDF_AR_Customers_GetStatusChangeRecordID (CS.CustomerID, S.[Voucher Date])
  848.                 LEFT JOIN EDU_Level L ON L.LevelID = SC.LevelID
  849.                 LEFT JOIN EDU_Majors M ON M.MajorID = SC.MajorID
  850.                 LEFT JOIN EDU_ClassName CN ON CN.ClassNameID = SC.ClassID
  851.              GROUP BY N.EDURevenueTypeID, RT.DisplayIndex, RT.RevenueTypeDescription
  852.              UNION ALL
  853.             SELECT 0, 0, 0, @Src, 9999, 'SURCHARGE' WHERE @Src != 0*/
  854.         END
  855. END ELSE IF @ReportType = 'AdvanceClosing' BEGIN
  856.     SELECT V.VoucherDate [Voucher DATE], V.VoucherNo [Voucher No.], VI.AllocationDate [Closing DATE], VI.AmountPaid [Amount Closed],
  857.            N.NUMBER [Closing NUMBER], VI.Remarks, CS.CustomerCode [Customer Code], CS.CustomerName [Customer Name],
  858.            CA.CustomerAreaCode [Customer Area Code], CA.CustomerAreaName [Customer Area Name],
  859.            CSA.CustomerSubAreaCode [Customer Sub-Area Code], CSA.CustomerSubAreaName [Customer Sub-Area Name],
  860.            CT.CustomerTypeName [Customer TYPE],
  861.            CH.CustomerChannelCode [Customer Channel Code], CH.CustomerChannelName [Customer Channel Name],
  862.            CSC.CustomerScaleCode [Customer Scale Code], CSC.CustomerScaleName [Customer Scale Name], CU.Currency, V.ExchangeRate [Exchange Rate],
  863.            CASE WHEN N.ForceClosing = 1 THEN 'Force' ELSE 'Used' END [Closing Method]
  864.       FROM FI_ARAPItems VI
  865.       JOIN FI_ARAP V ON V.VoucherID = VI.VoucherID
  866.       LEFT JOIN dbo.UDF_Common_Split (@VoucherNumbers, ',') VN ON V.VoucherNo LIKE VN.VALUE
  867.       LEFT JOIN FI_ARAPNotes N ON N.ARAPNoteID = VI.ItemID
  868.       JOIN AR_Customers CS ON CS.CustomerID = V.AssociateID
  869.      JOIN #SelectedMembers SM ON SM.MemberID = V.AssociateID
  870.       JOIN CO_Currency CU ON CU.CurrencyID = V.CurrencyID
  871.       LEFT JOIN AR_CustomerAreas CA ON CA.CustomerAreaID = CS.CustomerAreaID
  872.       LEFT JOIN AR_CustomerSubAreas CSA ON CSA.CustomerSubAreaID = CS.CustomerSubAreaID
  873.       LEFT JOIN AR_CustomerTypes CT ON CT.CustomerTypeID = CS.CustomerTypeID
  874.       LEFT JOIN AR_CustomerChannel CH ON CH.CustomerChannelID = CS.CustomerChannelID
  875.       LEFT JOIN AR_CustomerScale CSC ON CSC.CustomerScaleID = CS.CustomerScaleID
  876.      WHERE AdvClosing = 1
  877.        AND (AllocationDate BETWEEN @StartDate AND @EndDate OR @StartDate IS NULL OR @EndDate IS NULL)
  878.        AND (V.Void = 0 OR V.VoidCheck = 1)
  879.        AND (@VoucherNumbers IS NULL OR VN.VALUE IS NOT NULL)
  880.        AND (@CurrencyID = 0 OR @CurrencyID = V.CurrencyID)
  881.      ORDER BY 1, 2
  882. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement