SET NOCOUNT ON
GO
IF [dbo].[ISSAM4]() = 1
BEGIN
SET NOEXEC ON
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = 'KAAS_AutoAllocateTransactions'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_AutoAllocateTransactions]
END
GO
CREATE PROCEDURE [dbo].[KAAS_AutoAllocateTransactions] (
@XML NVARCHAR(MAX))
AS
/*************************************************************************************************************
* *
* KAAS_AutoAllocateTransactions *
* This is used when updating/posting a receipt which 'pre-allocated' against an invoice *
* When used to handle payments and supplier bills the payment is the 'receipt' and the supplier bill is *
* the 'invoice' *
* @XML: *
* *
* *
* *
* *
* Compatibility information - PLEASE update older versions if necessary to ensure the compatible software *
* remains fully functional *
* ***************************************************************************************************** *
* * * *
* * Supersedes: - * *
* * Original: - * *
* * First compatible version: 5.9.2.76 * *
* * Last compatible software version: - * *
* * Superseded by: - * *
* * * *
* ***************************************************************************************************** *
* *
* Modification History: *
* 2022-05-09 John Ginnane Created *
* 2022-07-14 John Ginnane Added support to pay for supplier bills *
* 2024-02-13 John Ginnane 17968 - Fixed allocation going the wrong way *
* *
*************************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @USER VARCHAR(8)
DECLARE @iSL INT
BEGIN TRY
EXEC sp_xml_preparedocument @iSL OUTPUT, @XML
END TRY
BEGIN CATCH
EXEC sp_xml_preparedocument @iSL OUTPUT, N''
END CATCH
SELECT @USER = [XML].[User]
FROM OPENXML (@iSL, N'Allocations')
WITH ([User] VARCHAR(20) '@User') AS [XML]
-- Expand this later to include breakdown of fees/VAT/outlay
DECLARE @ALLOCATIONS TABLE (
[id] INT PRIMARY KEY,
[Type] VARCHAR(1) NULL,
[ReceiptBatchNo] INT NOT NULL,
[ReceiptPostRef] INT NOT NULL,
[InvoiceBatchNo] INT NOT NULL,
[InvoicePostRef] INT NOT NULL,
[AllocateValue] DECIMAL(19, 2) NOT NULL,
[WriteOffRemainder] BIT NOT NULL,
[FoundTransaction] BIT NOT NULL DEFAULT(0),
[AllocDate] DATETIME NULL,
[AllNo] INT NULL,
[ReceiptRef] VARCHAR(10) NULL,
[InvoiceRef] VARCHAR(10) NULL,
[InvoiceVATCode] VARCHAR(1) NULL)
INSERT INTO @ALLOCATIONS (
[id],
[ReceiptBatchNo], [ReceiptPostRef],
[InvoiceBatchNo], [InvoicePostRef],
[AllocateValue], [WriteOffRemainder])
SELECT ROW_NUMBER() OVER(ORDER BY [XML].[ReceiptBatchNo]),
[XML].[ReceiptBatchNo], [XML].[ReceiptPostRef],
[XML].[InvoiceBatchNo], [XML].[InvoicePostRef],
[XML].[AllocateValue], CASE WHEN ISNULL([XML].[WriteOffRemainder], '') IN ('Y', '1') THEN 1 ELSE 0 END
FROM OPENXML (@iSL, N'Allocations/Allocation')
WITH ([ReceiptBatchNo] INT '@ReceiptBatchNo',
[ReceiptPostRef] INT '@ReceiptPostRef',
[InvoiceBatchNo] INT '@InvoiceBatchNo',
[InvoicePostRef] INT '@InvoicePostRef',
[AllocateValue] DECIMAL(19, 2) '@AllocateValue',
[WriteOffRemainder] VARCHAR(1) '@WriteOffRemainder') AS [XML]
DECLARE @TODAY DATETIME
DECLARE @BASECURRENCY VARCHAR(10)
DECLARE @IECONVERT DECIMAL(19, 6)
DECLARE @LASTALLOC INT
DECLARE @DEBTORS VARCHAR(10)
DECLARE @CREDITORS VARCHAR(10)
DECLARE @OUTLAYWRITEOFF VARCHAR(10)
DECLARE @FEESWRITEOFF VARCHAR(10)
DECLARE @BILLSWRITEOFF VARCHAR(10)
DECLARE @VATEXCLUDE VARCHAR(1)
DECLARE @CONVERT DECIMAL(19, 6)
DECLARE @YEAR INT
DECLARE @PERNO INT
SELECT @TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0),
@LASTALLOC = CASE WHEN ISNULL([CON].[LASTALLOC], 0) > ISNULL([ALO].[LastAllocNo], 0)
THEN ISNULL([CON].[LASTALLOC], 0)
ELSE ISNULL([ALO].[LastAllocNo], 0) END,
@BASECURRENCY = [CON].[BASECURRENCY],
@IECONVERT = [CON].[IECONVERT],
@DEBTORS = [CON].[DEBTORS],
@CREDITORS = [CON].[CREDITOR],
@VATEXCLUDE = [CON].[VATEXCLUDE],
@CONVERT = [CON].[IECONVERT],
@YEAR = [CON].[YEAR],
@PERNO = [CON].[CURPER],
@OUTLAYWRITEOFF = [CON].[OUTLAYWRITEOFF],
@FEESWRITEOFF = [CON].[FEESWRITEOFF],
@BILLSWRITEOFF = [CON].[BILLSWRITEOFF]
FROM [dbo].[control] AS [CON]
OUTER APPLY (SELECT MAX([ALO].[AllNo]) AS [LastAllocNo]
FROM [dbo].[Allocations] AS [ALO]) AS [ALO]
IF ISNULL(@BASECURRENCY, '') NOT IN ('I', 'E')
BEGIN
SET @BASECURRENCY = 'E'
END
-- If the pre-allocations target debt invoices
UPDATE [TMP]
SET [TMP].[ReceiptRef] = [Receipt_BAD].[REF],
[TMP].[InvoiceRef] = [Invoice_DTL].[REF],
[TMP].[InvoiceVATCode] = [Invoice_DTL].[VATCODE],
[TMP].[FoundTransaction] = 1,
-- Make sure we don't over-allocate
[TMP].[AllocateValue] = CASE WHEN [TMP].[AllocateValue] > [Invoice_DTL].[OSVALUE]
THEN [Invoice_DTL].[OSVALUE]
ELSE [TMP].[AllocateValue] END,
[TMP].[Type] = 'D',
[TMP].[AllocDate] = @TODAY
FROM @ALLOCATIONS AS [TMP]
-- Use inner join to make absolutely sure both sides of the allocation exist
INNER JOIN [dbo].[BatchDetails] AS [Receipt_BAD]
ON [TMP].[ReceiptBatchNo] = [Receipt_BAD].[BATCHNO]
AND [TMP].[ReceiptPostRef] = [Receipt_BAD].[PREF]
INNER JOIN [dbo].[DebtorsLedger] AS [Invoice_DTL]
ON [TMP].[InvoiceBatchNo] = [Invoice_DTL].[BATCHNO]
AND [TMP].[InvoicePostRef] = [Invoice_DTL].[PREF]
-- or the pre-allocations target supplier invoices
UPDATE [TMP]
SET [TMP].[ReceiptRef] = [Payment_BAD].[REF],
[TMP].[InvoiceRef] = [Bill_SPL].[REF],
[TMP].[InvoiceVATCode] = '',
[TMP].[FoundTransaction] = 1,
[TMP].[AllocateValue] = CASE WHEN [TMP].[AllocateValue] > [Bill_SPL].[OSVALUE] * -1
THEN [Bill_SPL].[OSVALUE] * -1
ELSE [TMP].[AllocateValue] END,
[TMP].[Type] = 'S',
[TMP].[AllocDate] = [Payment_BAH].[DATE]
FROM @ALLOCATIONS AS [TMP]
INNER JOIN [dbo].[BatchDetails] AS [Payment_BAD]
ON [TMP].[ReceiptBatchNo] = [Payment_BAD].[BATCHNO]
AND [TMP].[ReceiptPostRef] = [Payment_BAD].[PREF]
INNER JOIN [dbo].[BatchH] AS [Payment_BAH]
ON [TMP].[ReceiptBatchNo] = [Payment_BAH].[BATCHNO]
INNER JOIN [dbo].[SupplierLedger] AS [Bill_SPL]
ON [TMP].[InvoiceBatchNo] = [Bill_SPL].[BATCHNO]
AND [TMP].[InvoicePostRef] = [Bill_SPL].[PREF]
-- Delete allocations which we are not processing
DELETE [TMP]
FROM @ALLOCATIONS AS [TMP]
WHERE [TMP].[FoundTransaction] = 0
-- "Reseed" our ID column
;WITH [OrderedItems] ([id], [newid], [AllNo]) AS (
SELECT [id],
ROW_NUMBER() OVER (ORDER BY [TMP].[id] ASC),
@LASTALLOC + ROW_NUMBER() OVER (ORDER BY [TMP].[id] ASC)
FROM @ALLOCATIONS AS [TMP])
UPDATE [TMP]
SET [TMP].[id] = [OI].[newid],
[TMP].[AllNo] = [OI].[AllNo]
FROM @ALLOCATIONS AS [TMP]
INNER JOIN [OrderedItems] AS [OI]
ON [TMP].[id] = [OI].[id]
UPDATE [CON]
SET [CON].[LASTALLOC] = [TMP].[LastAllNo]
FROM [dbo].[control] AS [CON]
OUTER APPLY (SELECT TOP 1 MAX([AllNo]) AS [LastAllNo] FROM @ALLOCATIONS) AS [TMP]
-- Enter receipt side of the allocation
INSERT INTO [dbo].[Allocations] (
[BATCHNO],
[PREF],
[DATE],
[ABATCHNO],
[OPREF],
[OREF],
[VALUE],
[FEES],
[OUTLAY],
[VAT],
[USERCODE],
[AllNo],
[VATCODE])
SELECT [TMP].[ReceiptBatchNo],
[TMP].[ReceiptPostRef],
[TMP].[AllocDate],
[TMP].[InvoiceBatchNo],
[TMP].[InvoicePostRef],
[TMP].[InvoiceRef],
[TMP].[AllocateValue] * CASE WHEN [TMP].[Type] IN ('D') THEN -1 ELSE 1 END,
0,
0,
0,
@USER,
[TMP].[AllNo],
[TMP].[InvoiceVATCode]
FROM @ALLOCATIONS AS [TMP]
-- Enter the invoice side of the allocation
INSERT INTO [dbo].[Allocations] (
[BATCHNO],
[PREF],
[DATE],
[ABATCHNO],
[OPREF],
[OREF],
[VALUE],
[FEES],
[OUTLAY],
[VAT],
[USERCODE],
[AllNo],
[VATCODE])
SELECT [TMP].[InvoiceBatchNo],
[TMP].[InvoicePostRef],
[TMP].[AllocDate],
[TMP].[ReceiptBatchNo],
[TMP].[ReceiptPostRef],
[TMP].[ReceiptRef],
[TMP].[AllocateValue] * CASE WHEN [TMP].[Type] IN ('D') THEN -1 ELSE 1 END,
0,
0,
0,
@USER,
[TMP].[AllNo],
''
FROM @ALLOCATIONS AS [TMP]
-- "! Now Process Allocations for this Receipt"
-- Iterate over each allocation and calculate the breakdown
DECLARE @MAX INT
DECLARE @I INT
DECLARE @WRITEOFFREMAINDER BIT
DECLARE @WO_BATCHNO INT
DECLARE @WO_PREF INT
SELECT @I = 1,
@MAX = MAX([TMP].[id])
FROM @ALLOCATIONS AS [TMP]
WHILE @I <= @MAX
BEGIN
SET @WRITEOFFREMAINDER = 0
-- If the allocation is targetting the debtors ledger
IF ISNULL((SELECT TOP 1 [Type] FROM @ALLOCATIONS WHERE [id] = @I), '') = 'D'
BEGIN
DECLARE @INV_DTL_RECORDID INT
-- Update the receipt's DTL record
UPDATE [DTL]
SET [DTL].[OSVALUE] = [DTL].[OSVALUE] - [ALO].[VALUE]
FROM [dbo].[DebtorsLedger] AS [DTL]
INNER JOIN [dbo].[Allocations] AS [ALO]
ON [DTL].[BATCHNO] = [ALO].[BATCHNO]
AND [DTL].[PREF] = [ALO].[PREF]
INNER JOIN @ALLOCATIONS AS [TMP]
ON [TMP].[AllNo] = [ALO].[AllNo]
WHERE [TMP].[id] = @I
AND [DTL].[TYPE] IN ('R', 'J')
SELECT TOP 1
@INV_DTL_RECORDID = [DTL].[RECORDID],
@WRITEOFFREMAINDER = ISNULL([TMP].[WriteOffRemainder], 0)
FROM [dbo].[DebtorsLedger] AS [DTL]
INNER JOIN [dbo].[Allocations] AS [ALO]
ON [DTL].[BATCHNO] = [ALO].[ABATCHNO]
AND [DTL].[PREF] = [ALO].[OPREF]
INNER JOIN @ALLOCATIONS AS [TMP]
ON [TMP].[AllNo] = [ALO].[AllNo]
WHERE [TMP].[id] = @I
-- Update the invoice's DTL record
-- If the other record IS an invoice then also do the breakdown
-- otherwise just update the DTL:OSVALUE
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[RECORDID] = @INV_DTL_RECORDID
AND [DTL].[TYPE] = 'I')
BEGIN
DECLARE @ALO_VALUE DECIMAL(19, 2)
DECLARE @DTL_OSVALUE DECIMAL(19, 2)
DECLARE @DTL_OSFEES DECIMAL(19, 2)
DECLARE @DTL_OSOUTLAY DECIMAL(19, 2)
DECLARE @DTL_OSVAT DECIMAL(19, 2)
-- Allocate against pre-billed outlay LAST
DECLARE @INV_PREBILLEDOUTLAY DECIMAL(19, 2)
DECLARE @INV_OSPREBILLED DECIMAL(19, 2)
DECLARE @ALO_FEES DECIMAL(19, 2)
DECLARE @ALO_OUTLAY DECIMAL(19, 2)
DECLARE @ALO_VAT DECIMAL(19, 2)
SELECT TOP 1
@ALO_VALUE = ISNULL([ALO].[VALUE], 0),
@DTL_OSVALUE = ISNULL([DTL].[OSVALUE], 0) + ISNULL([ALO].[VALUE], 0),
@DTL_OSFEES = ISNULL([DTL].[OSFEES], 0),
@DTL_OSOUTLAY = ISNULL([DTL].[OSOUTLAY], 0),
@DTL_OSVAT = ISNULL([DTL].[OSVAT], 0),
@INV_PREBILLEDOUTLAY = ISNULL([BAD].[PreBilledOutlay], 0),
@INV_OSPREBILLED = 0,
@ALO_FEES = 0,
@ALO_OUTLAY = 0,
@ALO_VAT = 0
FROM [dbo].[DebtorsLedger] AS [DTL]
OUTER APPLY (SELECT TOP 1 SUM([BAD].[VALUE]) AS [PreBilledOutlay]
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[BATCHNO] = [DTL].[BATCHNO]
AND [BAD].[OUTLAY] = 'O'
AND [BAD].[PreBilledOutlay] = 1) AS [BAD]
INNER JOIN [dbo].[Allocations] AS [ALO]
ON [DTL].[BATCHNO] = [ALO].[ABATCHNO]
AND [DTL].[PREF] = [ALO].[OPREF]
INNER JOIN @ALLOCATIONS AS [TMP]
ON [TMP].[AllNo] = [ALO].[AllNo]
WHERE [TMP].[id] = @I
IF @DTL_OSVALUE = 0
BEGIN
SELECT @ALO_FEES = @DTL_OSFEES * -1,
@ALO_OUTLAY = @DTL_OSOUTLAY * -1,
@ALO_VAT = @DTL_OSVAT * -1,
@DTL_OSFEES = 0,
@DTL_OSOUTLAY = 0,
@DTL_OSVAT = 0
END
ELSE
BEGIN
DECLARE @USERTOT DECIMAL(19, 2)
SET @USERTOT = @ALO_VALUE * -1
-- If the invoice contains pre-billed outlays then pay them off at the very end
-- We subtract how much outlay we can allocate now
-- and check it later on
IF @DTL_OSOUTLAY > 0 AND @INV_PREBILLEDOUTLAY > 0
BEGIN
SET @INV_OSPREBILLED = @DTL_OSOUTLAY
SET @DTL_OSOUTLAY = @DTL_OSOUTLAY - @INV_PREBILLEDOUTLAY
IF @DTL_OSOUTLAY < 0
BEGIN
SET @DTL_OSOUTLAY = 0
END
SET @INV_OSPREBILLED = @INV_OSPREBILLED - @DTL_OSOUTLAY
END
IF @USERTOT > 0
BEGIN
-- How much outlay we can allocate now
DECLARE @ALLOCATE_OUTLAY DECIMAL(19, 2)
SET @ALLOCATE_OUTLAY = @DTL_OSOUTLAY
IF @ALLOCATE_OUTLAY > @USERTOT
BEGIN
SET @ALLOCATE_OUTLAY = @USERTOT
END
SET @ALO_OUTLAY = @ALLOCATE_OUTLAY * -1
SET @USERTOT = @USERTOT + @ALO_OUTLAY
SET @DTL_OSOUTLAY = @DTL_OSOUTLAY + @ALO_OUTLAY
END
-- Add the OS Pre-billed outlay
SET @DTL_OSOUTLAY = @DTL_OSOUTLAY + @INV_OSPREBILLED
IF @USERTOT > 0
BEGIN
DECLARE @DTL_OSFEES_ORIGINAL DECIMAL(19, 2)
DECLARE @DTL_OSVAT_ORIGINAL DECIMAL(19, 2)
SET @DTL_OSFEES_ORIGINAL = @DTL_OSFEES
SET @DTL_OSVAT_ORIGINAL = @DTL_OSVAT
-- Possible division by 0
BEGIN TRY
DECLARE @FEESANDVAT DECIMAL(19, 2)
SET @FEESANDVAT = @DTL_OSFEES + @DTL_OSVAT
IF @FEESANDVAT > @USERTOT
BEGIN
SET @FEESANDVAT = @USERTOT
END
SET @ALO_FEES = (@FEESANDVAT * (@DTL_OSFEES / (@DTL_OSFEES + @DTL_OSVAT))) * -1
SET @ALO_VAT = (@FEESANDVAT * (@DTL_OSVAT / (@DTL_OSFEES + @DTL_OSVAT))) * -1
SET @DTL_OSFEES = @DTL_OSFEES + @ALO_FEES
SET @DTL_OSVAT = @DTL_OSVAT + @ALO_VAT
SET @USERTOT = @USERTOT + @ALO_FEES + @ALO_VAT
END TRY
BEGIN CATCH
SET @ALO_FEES = 0
SET @ALO_VAT = 0
SET @DTL_OSFEES = @DTL_OSFEES_ORIGINAL
SET @DTL_OSVAT = @DTL_OSVAT_ORIGINAL
END CATCH
END
IF @USERTOT > 0 AND @DTL_OSOUTLAY > 0
BEGIN
-- Allocate the remaining money against the pre-billed outlay
-- In most cases this won't happen as we expect people to
-- be only paying for regular outlay, fees and VAT
SET @ALO_OUTLAY = @ALO_OUTLAY - @USERTOT
SET @DTL_OSOUTLAY = @DTL_OSOUTLAY - @USERTOT
END
END
UPDATE [DTL]
SET [DTL].[OSVALUE] = @DTL_OSVALUE,
[DTL].[OSFEES] = @DTL_OSFEES,
[DTL].[OSOUTLAY] = @DTL_OSOUTLAY,
[DTL].[OSVAT] = @DTL_OSVAT
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[RECORDID] = @INV_DTL_RECORDID
UPDATE [ALO]
SET [ALO].[FEES] = @ALO_FEES,
[ALO].[OUTLAY] = @ALO_OUTLAY,
[ALO].[VAT] = @ALO_VAT
FROM [dbo].[Allocations] AS [ALO]
INNER JOIN @ALLOCATIONS AS [TMP]
ON [ALO].[AllNo] = [TMP].[AllNo]
WHERE [TMP].[id] = @I
END
ELSE
BEGIN
UPDATE [DTL]
SET [DTL].[OSVALUE] = [DTL].[OSVALUE] + [ALO].[VALUE]
FROM [dbo].[DebtorsLedger] AS [DTL]
INNER JOIN [dbo].[Allocations] AS [ALO]
ON [DTL].[BATCHNO] = [ALO].[ABATCHNO]
AND [DTL].[PREF] = [ALO].[OPREF]
INNER JOIN @ALLOCATIONS AS [TMP]
ON [TMP].[id] = [ALO].[AllNo]
WHERE [TMP].[id] = @I
END
-- Check if we need to create a write-off journal
-- We will create one journal for each write-off
IF @WRITEOFFREMAINDER = 1 AND
EXISTS (SELECT TOP 1 1
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[RECORDID] = @INV_DTL_RECORDID
AND [DTL].[OSVALUE] <> 0)
BEGIN
EXEC @WO_BATCHNO = [dbo].[ky_NETGetBatchNo]
EXEC @WO_PREF = [dbo].[ky_NETGetPostRef]
INSERT INTO [dbo].[BatchH] (
[BATCHNO],
[POSTFWD],
[TYPE],
[CODE],
[BRANCH],
[PREF],
[REF],
[DATE],
[FEE],
[MATTER],
[SUPP],
[NARR],
[VALUE],
[SUBTOT],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[OUTLAYTOT],
[VATTOT],
[FEETOT],
[INVCR],
[THIRDPARTY],
[USERCODE],
[ENTRYDATE],
[CLIENTBANK],
[CURRENCY],
[CURRENCYVALUE],
[CUROUTLAYTOT],
[CURVATTOT],
[CURFEETOT],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[WRITEDOWN],
[WRITEBACKHOURS],
[WRITEBACKVALUE],
[CORRECTCOPY],
[CreditInvoiceNo],
[DraftBillNo],
[EFTSent],
[EFTDate],
[EFTFileNumber],
[EFTFileName],
[EFTYorN],
[ClientCode],
[PayClient],
[OnceOffPayment],
[CaseAssCode],
[EFTEmailYorN],
[HandlerCode],
[PaymentMethod],
[ClearedDate])
SELECT @WO_BATCHNO AS [BATCHNO],
[BAH].[POSTFWD] AS [POSTFWD],
'J' AS [TYPE],
'' AS [CODE],
'' AS [BRANCH],
@WO_PREF AS [PREF],
'' AS [REF],
[BAD].[DATE] AS [DATE],
'' AS [FEE],
'' AS [MATTER],
'' AS [SUPP],
'Automatic Debtors balance write-off' AS [NARR],
0 AS [VALUE],
0 AS [SUBTOT],
'N' AS [POSTED],
'' AS [CLIENTAC],
@PERNO AS [PERNO],
@YEAR AS [YEAR],
'' AS [PAYEE],
0 AS [OUTLAYTOT],
0 AS [VATTOT],
0 AS [FEETOT],
'' AS [INVCR],
'' AS [THIRDPARTY],
'' AS [USERCODE],
@TODAY AS [ENTRYDATE],
'' AS [CLIENTBANK],
'' AS [CURRENCY],
0 AS [CURRENCYVALUE],
0 AS [CUROUTLAYTOT],
0 AS [CURVATTOT],
0 AS [CURFEETOT],
0 AS [RECNO],
'' AS [SINGLELINE],
'' AS [TEMPLATE],
0 AS [CHEQUEREQNO],
NULL AS [WRITEDOWN],
0 AS [WRITEBACKHOURS],
0 AS [WRITEBACKVALUE],
'' AS [CORRECTCOPY],
0 AS [CreditInvoiceNo],
0 AS [DraftBillno],
'N' AS [EFTSent],
NULL AS [EFTDate],
0 AS [EFTFileNumber],
'' AS [EFTFileName],
'N' AS [EFTYorN],
'' AS [ClientCode],
'N' AS [PayClient],
'N' AS [OnceOffPayment],
'' AS [CaseAssCode],
'N' AS [EFTEmailYorN],
'' AS [HandlerCode],
0 AS [PaymentMethod],
NULL AS [ClearedDate]
FROM @ALLOCATIONS AS [TMP]
INNER JOIN [dbo].[BatchH] AS [BAH]
ON [BAH].[BATCHNO] = [TMP].[ReceiptBatchNo]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAD].[BATCHNO] = [BAH].[BATCHNO]
AND [BAD].[PREF] = [TMP].[ReceiptPostRef]
WHERE [TMP].[id] = @I
-- Use a table variable to store the most important details
-- then insert the contents into the actual table
DECLARE @WO_INV_BATCHDETAILS TABLE (
[ROW] INT IDENTITY(1, 1) PRIMARY KEY,
[REF] VARCHAR(10),
[CODE] VARCHAR(10),
[NARR] VARCHAR(100),
[MATTER] VARCHAR(20) DEFAULT(''),
[VALUE] DECIMAL(19, 2),
[VATCODE] VARCHAR(10),
[VATVAL] DECIMAL(19, 2) DEFAULT(0),
[OUTLAY] VARCHAR(1),
[OUTLAYCODE] VARCHAR(1) DEFAULT(''),
[ALLOCBATCH] INT DEFAULT(0),
[ALLOCPREF] INT DEFAULT(0),
[ALLOCREF] VARCHAR(10) DEFAULT(''),
[ALLOCVALUE] DECIMAL(19, 2) DEFAULT(0))
-- Insert each matter's write-off record
-- This writes off the debt from them matter ledger
INSERT INTO @WO_INV_BATCHDETAILS (
[REF],
[CODE],
[NARR],
[MATTER],
[VALUE],
[VATCODE],
[OUTLAY],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE])
SELECT 'W/o(auto)' AS [REF],
@DEBTORS AS [CODE],
'Automatic Write-off' AS [NARR],
[BAD].[MATTER] AS [MATTER],
[DTL].[OSVALUE] * -1 AS [VALUE],
@VATEXCLUDE AS [VATCODE],
'D' AS [OUTLAY],
[DTL].[BATCHNO] AS [ALLOCBATCH],
[DTL].[PREF] AS [ALLOCPREF],
[DTL].[REF] AS [ALLOCREF],
[DTL].[OSVALUE] AS [ALLOCVALUE]
FROM @ALLOCATIONS AS [TMP]
INNER JOIN [dbo].[DebtorsLedger] AS [DTL]
ON [DTL].[BATCHNO] = [TMP].[InvoiceBatchNo]
AND [DTL].[PREF] = [TMP].[InvoicePostRef]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAD].[BATCHNO] = [TMP].[ReceiptBatchNo]
AND [BAD].[PREF] = [TMP].[ReceiptPostRef]
WHERE [TMP].[id] = @I
-- Write off the outlay
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[RECORDID] = @INV_DTL_RECORDID
AND [DTL].[OSOUTLAY] <> 0)
BEGIN
INSERT INTO @WO_INV_BATCHDETAILS (
[REF],
[CODE],
[NARR],
[VALUE],
[VATCODE],
[OUTLAY])
SELECT 'W/o(auto)' AS [REF],
@OUTLAYWRITEOFF AS [CODE],
'Automatic Outlay Write-off' AS [NARR],
[DTL].[OSOUTLAY] AS [VALUE],
@VATEXCLUDE AS [VATCODE],
'N' AS [OUTLAY]
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[RECORDID] = @INV_DTL_RECORDID
END
-- Write off the fees
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[RECORDID] = @INV_DTL_RECORDID
AND [DTL].[OSFEES] <> 0)
BEGIN
INSERT INTO @WO_INV_BATCHDETAILS (
[REF],
[CODE],
[NARR],
[VALUE],
[VATCODE],
[VATVAL],
[OUTLAY],
[OUTLAYCODE])
SELECT 'W/o(auto)' AS [REF],
@FEESWRITEOFF AS [CODE],
'Automatic Fees Write-off' AS [NARR],
[DTL].[OSFEES] AS [VALUE],
[DTL].[VATCODE] AS [VATCODE],
[DTL].[OSVAT] AS [VATVAL],
'N' AS [OUTLAY],
'I' AS [OUTLAYCODE]
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[RECORDID] = @INV_DTL_RECORDID
END
-- Insert the detail lines now
INSERT INTO [dbo].[BatchDetails] (
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay])
SELECT @WO_BATCHNO AS [BATCHNO],
'J' AS [TYPE],
[TMP].[CODE] AS [CODE],
@WO_PREF + [TMP].[ROW] AS [PREF],
[TMP].[REF] AS [REF],
@TODAY AS [DATE],
'' AS [FEE],
'' AS [BRANCH],
[TMP].[NARR] AS [NARR],
[TMP].[MATTER] AS [MATTER],
'' AS [SUPP],
[TMP].[VALUE] AS [VALUE],
[TMP].[VATCODE] AS [VATCODE],
[TMP].[VATVAL] AS [VATVAL],
'' AS [CLIENTYN],
[TMP].[OUTLAY] AS [OUTLAY],
'' AS [PENDING],
@YEAR AS [YEAR],
@PERNO AS [PERNO],
@BASECURRENCY AS [ENTRYCURRENCY],
0 AS [CURRENCYVALUE],
0 AS [CURRENCYVAT],
[TMP].[OUTLAYCODE] AS [OUTLAYCODE],
'' AS [THIRDPARTY],
'' AS [PAYEE],
0 AS [HEADPREF],
0 AS [HEADBATCH],
[TMP].[ALLOCBATCH] AS [ALLOCBATCH],
[TMP].[ALLOCPREF] AS [ALLOCPREF],
[TMP].[ALLOCREF] AS [ALLOCREF],
[TMP].[ALLOCVALUE] AS [ALLOCVALUE],
'' AS [ALLOCWRITEOFF],
'' AS [PSUPP],
'' AS [UNDETAKING],
'' AS [CaseAssCode],
'N' AS [OnceOffPayment],
'Y' AS [PayClient],
'' AS [ClientCode],
'N' AS [EFTEmailYorN],
0 AS [RegisteredPost],
0 AS [PreBilledOutlay]
FROM @WO_INV_BATCHDETAILS AS [TMP]
END
END
-- If the allocation is targetting the suppliers ledger
IF ISNULL((SELECT TOP 1 [Type] FROM @ALLOCATIONS WHERE [id] = @I), '') = 'S'
BEGIN
DECLARE @BIL_SPL_RECORDID INT
-- "! Now Process Allocations for this Payment"
UPDATE [SPL]
SET [SPL].[OSVALUE] = ISNULL([SPL].[OSVALUE], 0) - ISNULL([TMP].[AllocateValue], 0)
FROM [dbo].[SupplierLedger] AS [SPL]
INNER JOIN @ALLOCATIONS AS [TMP]
ON [TMP].[ReceiptBatchNo] = [SPL].[BATCHNO]
AND [TMP].[ReceiptPostRef] = [SPL].[PREF]
WHERE [TMP].[id] = @I
UPDATE [SPL]
SET [SPL].[OSVALUE] = ISNULL([SPL].[OSVALUE], 0) + ISNULL([TMP].[AllocateValue], 0)
FROM [dbo].[SupplierLedger] AS [SPL]
INNER JOIN @ALLOCATIONS AS [TMP]
ON [TMP].[InvoiceBatchNo] = [SPL].[BATCHNO]
AND [TMP].[InvoicePostRef] = [SPL].[PREF]
WHERE [TMP].[id] = @I
SELECT TOP 1
@BIL_SPL_RECORDID = [SPL].[RECORDID],
@WRITEOFFREMAINDER = ISNULL([TMP].[WriteOffRemainder], 0)
FROM [dbo].[SupplierLedger] AS [SPL]
INNER JOIN @ALLOCATIONS AS [TMP]
ON [TMP].[InvoiceBatchNo] = [SPL].[BATCHNO]
AND [TMP].[InvoicePostRef] = [SPL].[PREF]
WHERE [TMP].[id] = @I
-- If there was pending outlay
INSERT INTO [dbo].[PendingOutlay] (
[MATTER],
[DATE],
[SUPPLIER],
[REF],
[NARRATIVE],
[VALUE])
SELECT LTRIM(RTRIM([BILL_BAD].[MATTER])),
[PAY_BAH].[DATE],
LTRIM(RTRIM([SPL].[SUPP])),
LTRIM(RTRIM([BILL_BAD].[REF])),
CASE WHEN [PAY_BAH].[TYPE] = 'J'
THEN 'Auto Supplier Journal Debit'
ELSE 'Supplier Bill Paid' END,
[BILL_BAD].[VALUE] * -1
FROM @ALLOCATIONS AS [TMP]
INNER JOIN [dbo].[SupplierLedger] AS [SPL]
ON [TMP].[InvoiceBatchNo] = [SPL].[BATCHNO]
AND [TMP].[InvoicePostRef] = [SPL].[PREF]
INNER JOIN [dbo].[BatchDetails] AS [BILL_BAD]
ON [BILL_BAD].[BATCHNO] = [TMP].[InvoiceBatchNo]
AND [BILL_BAD].[PREF] = [TMP].[InvoicePostRef]
INNER JOIN [dbo].[BatchH] AS [PAY_BAH]
ON [PAY_BAH].[BATCHNO] = [TMP].[ReceiptBatchNo]
WHERE [TMP].[id] = @I
AND [SPL].[OSVALUE] = 0
AND [SPL].[PENDINGOUTLAY] <> 0
AND [BILL_BAD].[OUTLAY] = 'O' -- !If this was an Outlay Pending
-- ! Generate Journals if Write-off requested
IF @WRITEOFFREMAINDER = 1 AND
EXISTS (SELECT TOP 1 1
FROM [dbo].[SupplierLedger] AS [SPL]
WHERE [SPL].[RECORDID] = @BIL_SPL_RECORDID
AND [SPL].[OSVALUE] <> 0)
BEGIN
EXEC @WO_BATCHNO = [dbo].[ky_NETGetBatchNo]
EXEC @WO_PREF = [dbo].[ky_NETGetPostRef]
INSERT INTO [dbo].[BatchH] (
[BATCHNO],
[POSTFWD],
[TYPE],
[CODE],
[BRANCH],
[PREF],
[REF],
[DATE],
[FEE],
[MATTER],
[SUPP],
[NARR],
[VALUE],
[SUBTOT],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[OUTLAYTOT],
[VATTOT],
[FEETOT],
[INVCR],
[THIRDPARTY],
[USERCODE],
[ENTRYDATE],
[CLIENTBANK],
[CURRENCY],
[CURRENCYVALUE],
[CUROUTLAYTOT],
[CURVATTOT],
[CURFEETOT],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[WRITEDOWN],
[WRITEBACKHOURS],
[WRITEBACKVALUE],
[CORRECTCOPY],
[CreditInvoiceNo],
[DraftBillNo],
[EFTSent],
[EFTDate],
[EFTFileNumber],
[EFTFileName],
[EFTYorN],
[ClientCode],
[PayClient],
[OnceOffPayment],
[CaseAssCode],
[EFTEmailYorN],
[HandlerCode],
[PaymentMethod],
[ClearedDate])
SELECT @WO_BATCHNO AS [BATCHNO],
[BAH].[POSTFWD] AS [POSTFWD],
'J' AS [TYPE],
'' AS [CODE],
'' AS [BRANCH],
@WO_PREF AS [PREF],
'' AS [REF],
[BAH].[DATE] AS [DATE],
'' AS [FEE],
'' AS [MATTER],
'' AS [SUPP],
'Automatic Creditors balance write-off' AS [NARR],
0 AS [VALUE],
0 AS [SUBTOT],
'N' AS [POSTED],
'' AS [CLIENTAC],
@PERNO AS [PERNO],
@YEAR AS [YEAR],
'' AS [PAYEE],
0 AS [OUTLAYTOT],
0 AS [VATTOT],
0 AS [FEETOT],
'' AS [INVCR],
'' AS [THIRDPARTY],
'' AS [USERCODE],
@TODAY AS [ENTRYDATE],
'' AS [CLIENTBANK],
'' AS [CURRENCY],
0 AS [CURRENCYVALUE],
0 AS [CUROUTLAYTOT],
0 AS [CURVATTOT],
0 AS [CURFEETOT],
0 AS [RECNO],
'' AS [SINGLELINE],
'' AS [TEMPLATE],
0 AS [CHEQUEREQNO],
NULL AS [WRITEDOWN],
0 AS [WRITEBACKHOURS],
0 AS [WRITEBACKVALUE],
'' AS [CORRECTCOPY],
0 AS [CreditInvoiceNo],
0 AS [DraftBillno],
'N' AS [EFTSent],
NULL AS [EFTDate],
0 AS [EFTFileNumber],
'' AS [EFTFileName],
'N' AS [EFTYorN],
'' AS [ClientCode],
'N' AS [PayClient],
'N' AS [OnceOffPayment],
'' AS [CaseAssCode],
'N' AS [EFTEmailYorN],
'' AS [HandlerCode],
0 AS [PaymentMethod],
NULL AS [ClearedDate]
FROM @ALLOCATIONS AS [TMP]
INNER JOIN [dbo].[BatchH] AS [BAH]
ON [BAH].[BATCHNO] = [TMP].[ReceiptBatchNo]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAD].[BATCHNO] = [BAH].[BATCHNO]
AND [BAD].[PREF] = [TMP].[ReceiptPostRef]
WHERE [TMP].[id] = @I
INSERT INTO [dbo].[BatchDetails] (
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay])
SELECT @WO_BATCHNO, /* BATCHNO */
'J', /* TYPE */
@CREDITORS, /* CODE */
@WO_PREF + 1, /* PREF */
'W/o(auto)', /* REF */
[PAY_BAH].[DATE], /* DATE */
'', /* FEE */
'', /* BRANCH */
'Automatic Write-off', /* NARR */
'', /* MATTER */
LTRIM(RTRIM([PAY_BAD].[SUPP])), /* SUPP */
[SPL].[OSVALUE] * -1, /* VALUE */
@VATEXCLUDE, /* VATCODE */
0, /* VATVAL */
'', /* CLIENTYN */
'N', /* OUTLAY */
'', /* PENDING */
@YEAR, /* YEAR */
[PAY_BAH].[PERNO], /* PERNO */
@BASECURRENCY, /* ENTRYCURRENCY */
CASE WHEN [PAY_BAH].[CURRENCY] = @BASECURRENCY
AND [PAY_BAH].[CURRENCY] = 'I'
THEN [SPL].[OSVALUE] * -1 / 0.787564
WHEN [PAY_BAH].[CURRENCY] = @BASECURRENCY
AND [PAY_BAH].[CURRENCY] = 'E'
THEN [SPL].[OSVALUE] * -1 * 0.787564
WHEN [PAY_BAH].[CURRENCY] <> @BASECURRENCY
AND [PAY_BAH].[CURRENCY] = 'I'
THEN [SPL].[OSVALUE] * -1 / 0.787564
WHEN [PAY_BAH].[CURRENCY] <> @BASECURRENCY
AND [PAY_BAH].[CURRENCY] = 'E'
THEN [SPL].[OSVALUE] * -1 * 0.787564
ELSE 0 END, /* CURRENCYVALUE */
0, /* CURRENCYVAT */
'', /* OUTLAYCODE */
'', /* THIRDPARTY */
'', /* PAYEE */
0, /* HEADPREF */
0, /* HEADBATCH */
[SPL].[BATCHNO], /* ALLOCBATCH */
[SPL].[PREF], /* ALLOCPREF */
LTRIM(RTRIM([SPL].[REF])), /* ALLOCREF */
[SPL].[OSVALUE], /* ALLOCVALUE */
'', /* ALLOCWRITEOFF */
'', /* PSUPP */
0, /* UNDETAKING */
'', /* CaseAssCode */
'N', /* OnceOffPayment */
'N', /* PayClient */
'', /* ClientCode */
'N', /* EFTEmailYorN */
0, /* RegisteredPost */
0 /* PreBilledOutlay */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[SupplierLedger] AS [SPL]
ON [SPL].[RECORDID] = @BIL_SPL_RECORDID
INNER JOIN @ALLOCATIONS AS [TMP]
ON [TMP].[id] = @I
INNER JOIN [dbo].[BatchDetails] AS [PAY_BAD]
ON [PAY_BAD].[BATCHNO] = [TMP].[ReceiptBatchNo]
AND [PAY_BAD].[PREF] = [TMP].[ReceiptPostRef]
INNER JOIN [dbo].[BatchH] AS [PAY_BAH]
ON [PAY_BAH].[BATCHNO] = [PAY_BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @WO_BATCHNO
INSERT INTO [dbo].[BatchDetails] (
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay])
SELECT @WO_BATCHNO, /* BATCHNO */
'J', /* TYPE */
@BILLSWRITEOFF, /* CODE */
@WO_PREF + 2, /* PREF */
'W/o(auto)', /* REF */
[PAY_BAH].[DATE], /* DATE */
'', /* FEE */
'', /* BRANCH */
'Automatic Write-off', /* NARR */
'', /* MATTER */
'', /* SUPP */
[SPL].[OSVALUE], /* VALUE */
@VATEXCLUDE, /* VATCODE */
0, /* VATVAL */
'', /* CLIENTYN */
'N', /* OUTLAY */
'', /* PENDING */
@YEAR, /* YEAR */
[PAY_BAH].[PERNO], /* PERNO */
@BASECURRENCY, /* ENTRYCURRENCY */
CASE WHEN [PAY_BAH].[CURRENCY] = @BASECURRENCY
AND [PAY_BAH].[CURRENCY] = 'I'
THEN [SPL].[OSVALUE] / 0.787564
WHEN [PAY_BAH].[CURRENCY] = @BASECURRENCY
AND [PAY_BAH].[CURRENCY] = 'E'
THEN [SPL].[OSVALUE] * 0.787564
WHEN [PAY_BAH].[CURRENCY] <> @BASECURRENCY
AND [PAY_BAH].[CURRENCY] = 'I'
THEN [SPL].[OSVALUE] / 0.787564
WHEN [PAY_BAH].[CURRENCY] <> @BASECURRENCY
AND [PAY_BAH].[CURRENCY] = 'E'
THEN [SPL].[OSVALUE] * 0.787564
ELSE 0 END, /* CURRENCYVALUE */
0, /* CURRENCYVAT */
'', /* OUTLAYCODE */
'', /* THIRDPARTY */
'', /* PAYEE */
0, /* HEADPREF */
0, /* HEADBATCH */
0, /* ALLOCBATCH */
0, /* ALLOCPREF */
'', /* ALLOCREF */
0, /* ALLOCVALUE */
'', /* ALLOCWRITEOFF */
'', /* PSUPP */
0, /* UNDETAKING */
'', /* CaseAssCode */
'N', /* OnceOffPayment */
'N', /* PayClient */
'', /* ClientCode */
'N', /* EFTEmailYorN */
0, /* RegisteredPost */
0 /* PreBilledOutlay */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[SupplierLedger] AS [SPL]
ON [SPL].[RECORDID] = @BIL_SPL_RECORDID
INNER JOIN @ALLOCATIONS AS [TMP]
ON [TMP].[id] = @I
INNER JOIN [dbo].[BatchH] AS [PAY_BAH]
ON [PAY_BAH].[BATCHNO] = [TMP].[ReceiptBatchNo]
WHERE [BAH].[BATCHNO] = @WO_BATCHNO
END
END
SET @I = @I + 1
END
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [so]
WHERE [so].[name] = N'KAAS_BGPaid'
AND [so].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_BGPaid]
END
GO
CREATE PROCEDURE [dbo].[KAAS_BGPaid] (
@Matter VARCHAR(17),
@BatchNo INT,
@Unpaid INT,
@ForceFees INT,
@ForceOutlay INT)
AS
BEGIN
UPDATE BGD
SET BGD.[PaidNow] = Case WHEN @Unpaid = 1
THEN 0
ELSE BGD.[BillNow] END
from [dbo].[debtorsledger] DRL
INNER JOIN [dbo].[billheader] BIH
inner join BGControl BGC
inner join BGDetail BGD
on BGD.[BGControlID] = BGC.[ID]
and BGD.[Type] = 'O'
and ( isnull(@Matter, '') = ''
OR BGD.[Matter] = isnull(@Matter, ''))
on BGC.BATCHNO = BIH.BATCHNO
ON BIH.[BATCHNO] <> 0
AND BIH.[BATCHNO] = DRL.[BATCHNO]
WHERE ( @BatchNo is null
OR DRL.[BATCHNO] = @BatchNo)
AND ( OSOUTLAY = 0
OR @ForceOutlay = 1)
UPDATE BGD
SET BGD.[PaidNow] = Case WHEN @Unpaid = 1
THEN 0
ELSE BGD.[BillNow] END
from [dbo].[debtorsledger] DRL
INNER JOIN [dbo].[billheader] BIH
inner join BGControl BGC
inner join BGDetail BGD
on BGD.[BGControlID] = BGC.[ID]
and BGD.[Type] = 'F'
and ( isnull(@Matter, '') = ''
OR BGD.[Matter] = isnull(@Matter, ''))
on BGC.BATCHNO = BIH.BATCHNO
ON BIH.[BATCHNO] <> 0
AND BIH.[BATCHNO] = DRL.[BATCHNO]
WHERE ( @BatchNo is null
OR DRL.[BATCHNO] = @BatchNo)
AND ( OSFEES = 0
OR @ForceFees = 1)
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CheckBatchRecordPresent'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CheckBatchRecordPresent]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CheckBatchRecordPresent]
(
@BatchNo INT = 0
)
AS
/*******************************************************************************************************
* Check if Batch record present or not *
* *
* Stored Procedure Name : [dbo].[KAAS_CheckBatchRecordPresent] *
* *
* Modification History: *
* 2021-12-29 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF NOT EXISTS
(
SELECT TOP 1 1
FROM [dbo].[BatchH]
WHERE [BatchNo] = @BatchNo
)
BEGIN
SELECT 'N' AS [BatchStatus]
END
ELSE
BEGIN
SELECT 'Y' AS [BatchStatus]
END
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_CheckHandlerCodeExist', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_CheckHandlerCodeExist]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_CheckHandlerCodeExist]
(@HandlerCode VARCHAR(10),
@Result TINYINT OUTPUT)
AS
BEGIN
/*************************************************************************************************************
* *
* [dbo].[KAAS_CheckHandlerCodeExist] *
* *
* Description: This procedure is used to check handler code exists or not *
* *
* ***************************************************************************************************** *
* *
* Modification history: *
* 2021-06-25 Natarajan S Created *
*************************************************************************************************************/
IF EXISTS
(SELECT TOP 1 1
FROM [dbo].[Handlers] HAN
WHERE HAN.[CODE] = @HandlerCode)
BEGIN
SET @Result = 1
END
ELSE
IF EXISTS
(SELECT TOP 1 1
FROM [dbo].[HandlerChargeGroups] HCG
WHERE HCG.[Code] = @HandlerCode)
BEGIN
SET @Result = 2
END
ELSE
BEGIN
SET @Result = 0
END
END
GO
IF OBJECT_ID(N'KAAS_CheckIfBatchHExists',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_CheckIfBatchHExists]
GO
CREATE PROCEDURE [dbo].[KAAS_CheckIfBatchHExists]
(
@BatchNo varchar(50)
)
AS
/*******************************************************************************************************
* Check if Batch header exists *
* *
* Stored Procedure Name : [dbo].[KAAS_CheckIfBatchHExists] *
* *
* Modification History: *
* 2021-06-08 Revathy D Created *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
IF NOT EXISTS
(
SELECT TOP 1 *
FROM [dbo].[BatchH]
WHERE [BatchNo] = @BatchNo
)
BEGIN
DELETE
FROM [dbo].[BatchDetails]
WHERE [BatchNo] = @BatchNo
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CheckSAMClientMoneyLaunderingApproved'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CheckSAMClientMoneyLaunderingApproved]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CheckSAMClientMoneyLaunderingApproved]
(
@ClientCode VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_CheckSAMClientMoneyLaunderingApproved] *
* Description: To check specified client marked as approved for money laundering *
* *
* Modification History: *
* 2021-08-31 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [Code],
[Approved]
FROM [dbo].[Contacts]
WHERE [Code] = @ClientCode
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_CheckSAMClosedMatter',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_CheckSAMClosedMatter]
GO
CREATE PROCEDURE [dbo].[KAAS_CheckSAMClosedMatter]
(
@Code VARCHAR(50)
)
AS
/*******************************************************************************************************
* To get details of closed matter *
* *
* Stored Procedure Name : [dbo].[KAAS_CheckSAMClosedMatter] *
* *
* Modification History: *
* 2021-08-25 Vinodhkumar M Created *
* 2021-09-03 Balamurugan.C Modified -Added Outlay Budget *
* 2021-09-17 Balamurugan.C Modified -Added Client Name,Description *
*******************************************************************************************************/
BEGIN
SELECT [MAT].[Code] AS [Code],
[MAT].[ClientCode] AS [ClientCode],
[MAT].[Matter] AS [MatterNo],
[MAT].[FECode] AS [FECode],
[MAT].[Closed] AS [Closed],
[MAT].[ClientMin] AS [ClientMin],
[MAT].[OutlayBud] AS [OutlayBud],
[CON].[Name] AS [Name],
[MAT].[Description] AS [Description]
FROM [dbo].[matters] [MAT]
LEFT JOIN [dbo].[Contacts] [CON]
ON [MAT].[ClientCode] = [CON].[Code]
WHERE [MAT].[Code] = @Code
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CheckSAMJournalAllocatedOutlayLimit'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CheckSAMJournalAllocatedOutlayLimit]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CheckSAMJournalAllocatedOutlayLimit]
(
@Matter VARCHAR(20) = '',
@JournalAmount DECIMAL = 0
)
AS
/*******************************************************************************************************
* Fetches the Invoice list *
* *
* Stored Procedure Name : [dbo].[KAAS_CheckSAMJournalAllocatedOutlayLimit] 'BAR001/0001' *
* *
* Modification History: *
* 05 Oct 2021 Balamurugan C Created *
* 06 Oct 2021 Balamurugan C Modified - Added Journal amount in Sum on allocated batch value * *
*******************************************************************************************************/
BEGIN
DECLARE @AllocationCnt INT = 0,
@ValidAllocationCnt INT = 0;
IF OBJECT_ID('tempdb..#AllocTempDetails') IS NOT NULL DROP TABLE #AllocTempDetails
SELECT [BatchNo],
[Matter]
INTO #AllocTempDetails
FROM [dbo].[DebtorsLedger]
WHERE [Matter] = @Matter
IF OBJECT_ID('tempdb..#TempBatchDetailsAlloc') IS NOT NULL DROP TABLE #TempBatchDetailsAlloc
SELECT [BAD].*
INTO #TempBatchDetailsAlloc
FROM [dbo].[BatchDetails] [BAD]
JOIN #AllocTempDetails [ATD]
ON [BAD].[ALLOCBATCH] = [ATD].[BATCHNO]
JOIN [dbo].[BatchH] [BAH]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAD].[Type] = 'J' AND
[BAH].POSTED <> 'Y'
SET @AllocationCnt = (SELECT COUNT(1) FROM #TempBatchDetailsAlloc)
IF(@AllocationCnt > 0)
BEGIN
SET @ValidAllocationCnt =(
SELECT COUNT(1)
FROM [dbo].Matters [MAT] WITH (NOLOCK)
LEFT OUTER JOIN [dbo].[Contacts] [CON] WITH (NOLOCK)
ON [MAT].[ClientCode] = [CON].[Code]
WHERE [MAT].[OutlayBal] < 0 AND
[MAT].[OutlayBal] + [MAT].[DebtBal] >= 0 AND
[MAT].[OutlayBal] < ( SELECT SUM([AllocValue]) + (ISNULL(@JournalAmount,0) * -1)
FROM #TempBatchDetailsAlloc
) AND
[MAT].[Code] = @Matter
)
IF(@ValidAllocationCnt>0)
BEGIN
SELECT 'Allocation Within Limit' AS ResultValue
END
ELSE
BEGIN
SELECT 'Allocation Over Limit' AS ResultValue
END
END
ELSE
BEGIN
SELECT 'No Allocation Found' as ResultValue
END
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CheckUnpostedPayments'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CheckUnpostedPayments]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE
[dbo].[KAAS_CheckUnpostedPayments]
AS
/*******************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_CheckUnpostedPayments] *
* Description: To check whether any unposted payments and multi payments present *
* *
* Modification History: *
* 2024-04-29 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
DECLARE @IsUnpostedBatchPresent VARCHAR(1) = 'N'
IF EXISTS(SELECT TOP 1 1
FROM [dbo].[BatchH]
WHERE [Posted] = 'N'
AND ([Type] = 'P' OR [Type] = 'M'))
BEGIN
SET @IsUnpostedBatchPresent = 'Y';
END
SELECT @IsUnpostedBatchPresent
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = N'KAAS_CommonSAMUpdatePosting'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CommonSAMUpdatePosting]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CommonSAMUpdatePosting](
@PostedBatchNo INT = 0,
@PostedType VARCHAR(1) = '',
@IsPostingFwd VARCHAR(1) = '',
@HandlerName VARCHAR(20) = '')
AS
/*******************************************************************************************************
* Update Posting Logic *
* *
* Stored Procedure Name : [dbo].[KAAS_CommonSAMUpdatePosting] *
* *
* Modification History: *
* 2021-11-12 Balamurugan C Created *
* 2022-01-03 Balamurugan C Modified - Changed Matter Varchar(10) to Varchar(20) *
* 2022-01-13 Balamurugan C Modified - Split Receipt,Payment,Journal into Separate SP *
* 2022-02-24 John Ginnane Changed parameters to purchase bills and refactored code *
* 2023-10-16 Ghayathri Removed 'Type' parameters to Multiplayment SP *
********************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
/* UPDATE POSTING PURCHASE BILLS */
IF @PostedType = 'B'
BEGIN
EXEC [dbo].[KAAS_UpdatePostingSAMPurchaseBill] @PostedBatchNo, @IsPostingFwd, @HandlerName
END
/* UPDATE POSTING BANK TRANSFER */
IF(@PostedType = 'T')
BEGIN
EXEC [dbo].[KAAS_UpdatePostingSAMBankTransfer] @PostedBatchNo,@IsPostingFwd,@HandlerName
END
/* UPDATE POSTING MULTI PAYMENT */
IF(@PostedType = 'M')
BEGIN
EXEC [dbo].[KAAS_UpdatePostingSAMMultiPayment] @PostedBatchNo,@IsPostingFwd,@HandlerName
END
/* UPDATE POSTING ISSUE INVOICE */
IF @PostedType = 'I'
BEGIN
EXEC [dbo].[KAAS_UpdatePostingSAMInvoice] @PostedBatchNo, @IsPostingFwd, @HandlerName
END
/* UPDATE POSTING RECEIPT BATCHES */
IF @PostedType = 'R'
BEGIN
EXEC [dbo].[KAAS_UpdatePostingSAMReceipts] @PostedBatchNo, @IsPostingFwd, @HandlerName
END
/* UPDATE POSTING PAYMENT BATCHES */
IF @PostedType = 'P'
BEGIN
EXEC [dbo].[KAAS_UpdatePostingSAMPayment] @PostedBatchNo, @IsPostingFwd, @HandlerName
END
/* UPDATE POSTING JOURNAL BATCHES */
IF @PostedType = 'J'
BEGIN
EXEC [dbo].[KAAS_UpdatePostingSAMJournal] @PostedBatchNo, @IsPostingFwd, @HandlerName
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
-- Each UpdatePosting procedure has it's own try/catch which can rollback
-- So we check if we're still in a transactions before trying to rollback
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRAN
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CompleteBankReconciliationProcess'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CompleteBankReconciliationProcess]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CompleteBankReconciliationProcess]
(
@BankAc VARCHAR(10) = '',
@ReconDate DATE = NULL
)
AS
/*******************************************************************************************************
* Complete Bank Reconciliation Process *
* *
* Stored Procedure Name : [dbo].[KAAS_CompleteBankReconciliationProcess] *
* *
* Modification History: *
* 2022-01-27 Balamurugan C Created *
* 2022-02-02 Balamurugan C Modified - Update Nominal Ledger,Bank Balance using Ticked *
* 2022-02-08 Balamurugan C Modified - Change Logic for Outstanding logic *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
/*UPDATE DATE COMPLETE AND LAST RECON NUMBER*/
DECLARE @LastReconNumber INT = 0,
@CurrentReconNumber INT = 0
SELECT @LastReconNumber = MAX(RecNo)
FROM [dbo].[BankRecHistory]
WHERE RTRIM([BankAc]) = @BankAc
AND [DateComplete] IS NOT NULL
SELECT @CurrentReconNumber = [RecNo]
FROM [dbo].[BankRecHistory]
WHERE RTRIM([BankAc]) = @BankAc
AND [DateComplete] IS NULL
UPDATE [dbo].[BankRecHistory]
SET [DateComplete] = CAST(GETDATE() AS DATE),
[LastRec] = @LastReconNumber
WHERE [DateComplete] IS NULL
AND RTRIM([BankAc]) = @BankAc
/* INSERT INTO COMPLETE REC TRANSACTION TABLE*/
INSERT
INTO [dbo].[BankRecCompleteTrans]
(
[BankAc],
[Type],
[Date],
[Ref],
[Batch],
[Pref],
[Narr],
[Value],
[OsRecNo],
[RecNo],
[Ticked],
[NomTransId]
)
(
SELECT [BankAc],
[Type],
[Date],
[Ref],
[Batch],
[Pref],
[Narr],
[Value],
[OsRecNo],
[RecNo],
[Ticked],
[NomTransId]
FROM [dbo].[BankRecTransactions]
WHERE [BankAc] = @BankAc
AND [RecNo] = @CurrentReconNumber
)
/* UPDATE NOMINAL LEDGER VALUES*/
UPDATE [NML]
SET [NML].[RecNo] = ABS([BRC].[RecNo])
FROM [dbo].[NominalLedger] [NML]
JOIN [dbo].[BankRecCompleteTrans] [BRC]
ON [BRC].[NomTransId] = [NML].[RecordId]
AND [BRC].[Ticked] = 'R'
WHERE [NML].[Code] = @BankAc
/* UPDATE BATCH HEADER RECON TABLE*/
UPDATE [BAH]
SET [BAH].[RecNo] = ABS([BRC].[RecNo])
FROM [dbo].[BatchH] [BAH]
JOIN [dbo].[BankRecCompleteTrans] [BRC]
ON [BRC].[Batch] = [BAH].[BatchNo]
AND [BRC].[Ticked] = 'R'
/* DELETE OUTSTANDING TRANSACTION AND RECON TRANSCTION */
DELETE [BOT]
FROM [dbo].[BankRecOutstandingTrans] [BOT]
JOIN [dbo].[BankRecTransactions] [BRT]
ON [BRT].[BankAc] = [BOT].[BankAc]
AND [BRT].[NomTransId] = [BOT].[RECORDID]
WHERE [BOT].[BankAc] = @BankAc
AND [BRT].[RecNo] = @CurrentReconNumber
AND [BRT].[Ticked] = 'R'
DELETE
FROM [dbo].[BankRecTransactions]
WHERE [BankAc] = @BankAc
AND [RecNo] = @CurrentReconNumber
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_CopyBatchDetails',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_CopyBatchDetails]
GO
CREATE PROCEDURE
[dbo].[KAAS_CopyBatchDetails]
(
@KeyId decimal
)
AS
/*******************************************************************************************************
* Copy existing batch details *
* *
* Stored Procedure Name : [dbo].[KAAS_CopyBatchDetails] *
* *
* Modification History: *
* 2021-04-10 Revathy D Created *
* 2022-02-25 Balamurugan.C Modified - Handled TCL Statements *
* 2024-04-23 Balamurugan.C Modified - Handled logic for creating new head batch and pref for *
multi payment *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
DECLARE @PREF int
SET @PREF = (SELECT
MAX(PREF)+1 PREF
FROM
(
(
SELECT
PREF,
BATCHNO
FROM DBO.BATCHH
)
UNION ALL
(
SELECT
PREF,
BATCHNO
FROM DBO.BATCHDETAILS
)
) BAT)
DECLARE @NEWHEADBATCH INT
DECLARE @NEWHEADPREF INT
DECLARE @IsMultiPayment VARCHAR(1) = 'N';
IF EXISTS (SELECT 1 FROM [BatchDetails] WHERE [KEYID] = @KeyId AND [TYPE] = 'M')
BEGIN
SET @IsMultiPayment = 'Y'
SELECT @NEWHEADBATCH = LASTBATCH + 1,
@NEWHEADPREF = LASTPREF + 1
FROM [dbo].[control]
UPDATE [dbo].[control]
SET [LASTBATCH] = @NEWHEADBATCH,
[LASTPREF] = @NEWHEADPREF
END
INSERT INTO
[dbo].[BatchDetails]
(
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost]
)
SELECT
[BATCHNO],
[TYPE],
[CODE],
@PREF,
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
CASE WHEN @IsMultiPayment = 'Y' THEN @NEWHEADPREF ELSE [HEADPREF] END,
CASE WHEN @IsMultiPayment = 'Y' THEN @NEWHEADBATCH ELSE [HEADBATCH] END,
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[ALLOCBATCH]
FROM
[dbo].[BatchDetails]
WHERE [KEYID] = @KeyId
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CreateBankReconciliationTransaction'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateBankReconciliationTransaction]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateBankReconciliationTransaction]
(
@BankAc VARCHAR(10) = '',
@ReconDate DATE = NULL,
@Mode VARCHAR(25) = ''
)
AS
/*******************************************************************************************************
* Process and Create new record in bank reconciliation process and fetch posted records from batches *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateBankReconciliationTransaction] *
* *
* Modification History: *
* 2022-01-24 Balamurugan C Created *
* 2022-02-10 Balamurugan C Modified - Used SAM window Existing Procedure *
* 2022-02-11 Balamurugan C Modified - Created new SP for intiate and refresh process *
* as per SAM *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements and Formatting *
* 2024-09-12 Ghayathri.S.V Modified - Implemented Order by batch in descending for refresh *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DECLARE @NEXTRECON INT = 0
DECLARE @LASTRECON INT = 0
SELECT @NEXTRECON = ISNULL([CON].[LastRecon] + 1, 0)
FROM [dbo].[control] AS [CON]
SELECT @LASTRECON = ISNULL(MAX([BRH].[RECNO]), 0)
FROM [dbo].[BankRecHistory] AS [BRH]
WHERE [BRH].[BANKAC] = @BANKAC
IF @MODE= 'CREATE'
BEGIN
UPDATE [dbo].[control]
SET [LastRecon] = @NEXTRECON
EXEC [dbo].[KAAS_SAMInitiateBankRec] @NEXTRECON, @BankAc, @ReconDate, @LASTRECON
END
IF @MODE = 'REFRESH'
BEGIN
EXEC [dbo].[KAAS_SAMRefreshBankRec] @LASTRECON, @BankAc
END
SELECT [RecNo],
RTRIM([BankAc]) AS [BankAc],
[RecDate],
[DateComplete],
[LastRec],
RTRIM([Currency]) AS [Currency],
[OpeningBalance],
[Lodgements],
[Cheques],
[OsLodgements],
[OsCheques],
[BankBal],
[ClosingBal],
[Diff]
FROM [dbo].[BankRecHistory]
WHERE [BankAc] = @BankAc
AND [DateComplete] IS NULL
SELECT RTRIM([BRT].[BankAc]) AS [BankAc],
RTRIM([BRT].[Type]) AS [Type],
[BRT].[Date],
RTRIM([BRT].[Ref]) AS [Ref],
[BRT].[Batch],
[BRT].[Pref],
RTRIM([BRT].[Narr]) AS [Narr],
[BRT].[Value],
[BRT].[OsRecNo],
[BRT].[RecNo],
RTRIM([BRT].[Ticked]) AS [Ticked],
[RecordId],
[BRT].[NomTransId]
FROM [dbo].[BankRecTransactions] [BRT]
JOIN [dbo].[BankRecHistory] [BRH]
ON [BRH].[RecNo] = [BRT].[RecNo]
WHERE [BRT].[BankAc] = @BankAc
ORDER BY [BRT].BATCH DESC
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_CreateBatch',N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateBatch]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateBatch] (
@BATCHNO INT,
@POSTFWD CHAR(1) = '',
@TYPE CHAR(1),
@CODE CHAR(10),
@BRANCH VARCHAR(3) = '',
@PREF INT,
@REF CHAR(10),
@DATE DATETIME,
@FEE VARCHAR(10) = '',
@MATTER VARCHAR(20) = '',
@SUPP CHAR(10) = '',
@NARR CHAR(150),
@VALUE DECIMAL(17, 2),
@SUBTOT DECIMAL(17, 2) = 0.00,
@POSTED CHAR(1),
@CLIENTAC CHAR(1),
@PERNO SMALLINT,
@YEAR SMALLINT,
@PAYEE CHAR(60) = '',
@OUTLAYTOT DECIMAL(17, 2) = 0.00,
@VATTOT DECIMAL(17, 2) = 0.00,
@FEETOT DECIMAL(17, 2) = 0.00,
@INVCR CHAR(1),
@THIRDPARTY CHAR(1) = '',
@USERCODE CHAR(8) = '',
@ENTRYDATE DATETIME,
@CLIENTBANK CHAR(10) = '',
@CURRENCY CHAR(1) = 'E',
@CURRENCYVALUE DECIMAL(17, 2) = 0.00,
@CUROUTLAYTOT DECIMAL(17, 2) = 0.00,
@CURVATTOT DECIMAL(17, 2) = 0.00,
@CURFEETOT DECIMAL(17, 2) = 0.00,
@RECNO INT = 0,
@SINGLELINE CHAR(1) = '',
@TEMPLATE CHAR(10) = '',
@CHEQUEREQNO INT = 0,
@WRITEDOWN DATETIME = NULL,
@WRITEBACKHOURS DECIMAL(7, 2) = 0.00,
@WRITEBACKVALUE DECIMAL(13, 2) = 0.00,
@CORRECTCOPY CHAR(1) = '',
@CREDITINVOICENO INT = 0,
@DRAFTBILLNO INT = 0,
@EFTSENT CHAR(1) = 'N',
@EFTDATE DECIMAL = NULL,
@EFTFILENUMBER INT = NULL,
@EFTFILENAME VARCHAR(500) = NULL,
@EFTYORN CHAR(1) = 'N',
@CLIENTCODE VARCHAR(10) = NULL,
@PAYCLIENT CHAR(1) = 'N',
@ONCEOFFPAYMENT CHAR(1) = 'N',
@CASEASSCODE VARCHAR(6) = NULL,
@EFTEMAILYORN CHAR(1) = 'N',
@FNCODE VARCHAR(10) = NULL,
@PAYMETHOD INT = 0,
@CLEARDATE DATETIME = NULL)
AS
/*******************************************************************************************************
* Save the Batch Header *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateBatch] *
* *
* Modification History: *
* 2021-04-09 Revathy D Created *
* 2021-04-12 Revathy D Updated *
* 2021-09-09 Balamurugan Updated-Removed Entry Date Column from update *
* 2021-09-09 Vinodhkumar M Updated-Paymethod, cleared date *
* 2021-11-26 Balamurugan C Added Calcuation for Curren Value *
* 2022-01-11 Vinodhkumar M Updated-Formatted the WriteDown Parameter *
* 2022-01-20 Balamurugan C Modified - Include CAST AS DATE for all datetime fields *
* 2022-01-28 Balamurugan C Modified - Include CAST AS DATE for before function *
all datetime fields *
* 2022-02-04 Balamurugan C Modified - Added Default Values for few fields *
* 2022-02-04 John Ginnane Create XML version and moved code into there *
* 2022-02-16 Balamurugan.C Added new line end of the procedure
* 2022-09-27 Ghayathri.S.V Removed Currency value as input paramater to KAAS_CreateBatchXML SP *
* 2022-10-11 Ghayathri.S.V Modified - Conditional currency as input parameter to the Batch XML. *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @XML NVARCHAR(MAX)
SET @XML = (SELECT @BATCHNO AS [BATCHNO],
@POSTFWD AS [POSTFWD],
@TYPE AS [TYPE],
@CODE AS [CODE],
@BRANCH AS [BRANCH],
@PREF AS [PREF],
@REF AS [REF],
@DATE AS [DATE],
@FEE AS [FEE],
@MATTER AS [MATTER],
@SUPP AS [SUPP],
@NARR AS [NARR],
@VALUE AS [VALUE],
@SUBTOT AS [SUBTOT],
@POSTED AS [POSTED],
@CLIENTAC AS [CLIENTAC],
@PERNO AS [PERNO],
@YEAR AS [YEAR],
@PAYEE AS [PAYEE],
@OUTLAYTOT AS [OUTLAYTOT],
@VATTOT AS [VATTOT],
@FEETOT AS [FEETOT],
@INVCR AS [INVCR],
@THIRDPARTY AS [THIRDPARTY],
@USERCODE AS [USERCODE],
@ENTRYDATE AS [ENTRYDATE],
@CLIENTBANK AS [CLIENTBANK],
CASE WHEN @TYPE IN ('T','B')
THEN ''
ELSE @CURRENCY
END AS [CURRENCY],
@CUROUTLAYTOT AS [CUROUTLAYTOT],
@CURFEETOT AS [CURFEETOT],
@RECNO AS [RECNO],
@SINGLELINE AS [SINGLELINE],
@TEMPLATE AS [TEMPLATE],
@CHEQUEREQNO AS [CHEQUEREQNO],
@WRITEDOWN AS [WRITEDOWN],
@WRITEBACKHOURS AS [WRITEBACKHOURS],
@WRITEBACKVALUE AS [WRITEBACKVALUE],
@CORRECTCOPY AS [CORRECTCOPY],
@CREDITINVOICENO AS [CreditInvoiceNo],
@DRAFTBILLNO AS [DraftBillNo],
@EFTSENT AS [EFTSent],
@EFTDATE AS [EFTDate],
@EFTFILENUMBER AS [EFTFileNumber],
@EFTFILENAME AS [EFTFileName],
@EFTYORN AS [EFTYorN],
@CLIENTCODE AS [ClientCode],
@PAYCLIENT AS [PayClient],
@ONCEOFFPAYMENT AS [OnceOffPayment],
@CASEASSCODE AS [CaseAssCode],
@EFTEMAILYORN AS [EFTEmailYorN],
@PAYMETHOD AS [PaymentMethod],
@CLEARDATE AS [ClearedDate]
FOR XML RAW('BatchH'))
SET @XML = N'' + @XML + N''
EXEC [dbo].[KAAS_CreateBatchXML] @XML
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [so]
WHERE [so].[name] = N'KAAS_CreateBatchDetails'
AND [so].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateBatchDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateBatchDetails] (
@KEYID INT,
@BATCHNO INT,
@PREF INT,
@REF CHAR(10),
@DATE DATETIME,
@NARR CHAR(100),
@MATTER VARCHAR(20),
@VALUE DECIMAL(17,2),
@VATCODE CHAR(1),
@VATVAL DECIMAL(17,2) = 0.00,
@YEAR SMALLINT,
@PERNO SMALLINT,
@CODE CHAR(10) = '',
@ALLOCREF CHAR(10) = '',
@ALLOCVALUE DECIMAL(17,2) = 0.00,
@ALLOCBATCH INT,
@ALLOCPREF INT,
@OUTLAY CHAR(1),
@ALLOCWRITEOFF CHAR(1) = '',
@FNCODE VARCHAR(10) = NULL,
@TYPE CHAR(1) = '',
@SUPP VARCHAR(10) = '',
@OUTLAYCODE VARCHAR(4) = '',
@FEE VARCHAR(10) = '',
@BRANCH VARCHAR(3) = '',
@PAYEE VARCHAR(60) = '',
@ONCEOFFPAYMENT CHAR(1) = 'N',
@PAYCLIENT CHAR(1) = 'N',
@THIRDPARTY CHAR(1) = 'N',
@CLIENTCODE VARCHAR(10) = '',
@EFTEMAILYORN CHAR(1) = 'N',
@CASEASSCODE VARCHAR(6) = '',
@CURRENCYVALUE DECIMAL(17,2) = 0,
@HEADBATCH INT = 0,
@HEADPREF INT = 0,
@PSUPP CHAR(10) = '',
@UNDETAKING SMALLINT = 0,
@CLIENTYN CHAR(1) = '',
@PENDING CHAR(1) = '',
@RegisteredPost INT = 0,
@PreBilledOutlay INT = 0,
@ENTRYCURRENCY CHAR(1) = 'E'
)
AS
/*******************************************************************************************************
* Save the Batch Details *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateBatchDetails] *
* *
* Modification History: *
* 2021-04-10 Revathy D Created *
* 2021-04-23 Balamurugan C Modified -Added Payee,Third Party Column *
* 2021-04-25 Balamurugan C Modified -Case Associate Column *
* 2021-09-21 Revathy D Modified - Default Code is modified for type 'P' *
* 2021-10-18 Vinodhkumar M Modified - Added Currency Value Parameter *
* 2021-11-26 Balamurugan C Added Calcuation for Curren Value and Current VAT *
* 2021-12-07 vinodhkumar M Added headbatch, headpref columns *
* 2022-01-20 Balamurugan C Modified - Include CAST AS DATE for all datetime fields *
* 2022-01-28 Balamurugan C Modified - Include CAST AS DATE for before function *
all datetime fields *
* 2022-02-04 John Ginnane Replaced existing code with new XML call *
* 2022-02-16 Balamurugan.C Added new line end of the procedure
* 2022-04-11 Ghayathri.S.V Added Registered Post and PreBilledOutLay
* 2022-09-27 Ghayathri.S.V Removed Currency value as input paramater to
KAAS_CreateBatchDetailsXML SP *
* 2022-10-11 Ghayathri.S.V Modified - Entry Currencylogic based on clarion logic for type
bank transfer *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @XML NVARCHAR(MAX)
SET @XML = (SELECT @BATCHNO AS [BATCHNO],
@TYPE AS [TYPE],
@CODE AS [CODE],
@PREF AS [PREF],
@REF AS [REF],
@DATE AS [DATE],
@FEE AS [FEE],
@BRANCH AS [BRANCH],
@NARR AS [NARR],
@MATTER AS [MATTER],
@SUPP AS [SUPP],
@VALUE AS [VALUE],
@VATCODE AS [VATCODE],
@VATVAL AS [VATVAL],
@CLIENTYN AS [CLIENTYN],
@OUTLAY AS [OUTLAY],
@PENDING AS [PENDING],
@YEAR AS [YEAR],
@PERNO AS [PERNO],
@OUTLAYCODE AS [OUTLAYCODE],
@THIRDPARTY AS [THIRDPARTY],
@PAYEE AS [PAYEE],
@HEADPREF AS [HEADPREF],
@HEADBATCH AS [HEADBATCH],
@ALLOCBATCH AS [ALLOCBATCH],
@ALLOCPREF AS [ALLOCPREF],
@ALLOCREF AS [ALLOCREF],
@ALLOCVALUE AS [ALLOCVALUE],
@ALLOCWRITEOFF AS [ALLOCWRITEOFF],
@PSUPP AS [PSUPP],
@UNDETAKING AS [UNDETAKING],
@KEYID AS [KEYID],
@CASEASSCODE AS [CaseAssCode],
@ONCEOFFPAYMENT AS [OnceOffPayment],
@PAYCLIENT AS [PayClient],
@CLIENTCODE AS [ClientCode],
@EFTEMAILYORN AS [EFTEmailYorN],
@RegisteredPost AS [RegisteredPost],
@PreBilledOutlay AS [PreBilledOutlay],
CASE
WHEN @TYPE = 'T'
THEN ''
ELSE @ENTRYCURRENCY
END AS [ENTRYCURRENCY]
FOR XML RAW('BatchDetails'))
SET @XML = N'' + @XML + N''
EXEC [dbo].[KAAS_CreateBatchDetailsXML] @XML
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CreateBatchDetailsXML'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateBatchDetailsXML]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateBatchDetailsXML]
(@XML NVARCHAR(MAX))
AS
/*******************************************************************************************************
* Save the Batch Details *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateBatchDetailsXML] *
* *
* Modification History: *
* 2022-01-27 John Ginnane 13662 - Created *
* 2022-02-16 Balamurugan.C Added new line end of the procedure *
* 2022-02-17 Balamurugan.C Modified - Chnaged CurrencyValue and Vat syntax *
* 2022-02-18 Balamurugan.C Modified - Currency Value need to fetch from form for journal *
* 2022-02-22 Balamurugan.C Modified - Currency Value is 0 for transfer type *
* 2022-02-23 Balamurugan.C Modified - Handled T-SQL Statements *
* 2022-05-09 Vignesh M Modified - UTC Conversion Removed
* 2022-09-27 Ghayathri.S.V Modified - CURRENCYVAT input parameter from @VALUE to @VATVAL *
* 2022-10-03 Ghayathri.S.V Modified - For journal type updated the currecny value based on EI
conversion *
* 2022-10-11 Ghayathri.S.V Modified - For bank transfer type updated the currecny value based
on clarion logic *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
DECLARE @iSL INT
DECLARE @BASECURRENCY CHAR(1)
DECLARE @IECONVERT DECIMAL(17,6)
DECLARE @EICONVERT DECIMAL(17,6)
DECLARE @VATEXCLUDE VARCHAR(1)
DECLARE @CURRENTYEAR INT
DECLARE @CURRENTPERIOD INT
SELECT @BASECURRENCY = [CON].[BASECURRENCY],
@IECONVERT = [CON].[IECONVERT],
@VATEXCLUDE = [CON].[VATEXCLUDE],
@CURRENTYEAR = [CON].[YEAR],
@CURRENTPERIOD = [CON].[CURPER],
@EICONVERT = [CON].[EICONVERT]
FROM [dbo].[control] AS [CON]
BEGIN TRY
EXEC sp_xml_preparedocument @iSL OUTPUT, @XML
END TRY
BEGIN CATCH
EXEC sp_xml_preparedocument @iSL OUTPUT, N''
END CATCH
DECLARE @USER VARCHAR(100)
DECLARE @BATCHNO INT
DECLARE @TYPE CHAR(1)
DECLARE @CODE CHAR(10)
DECLARE @PREF INT
DECLARE @REF CHAR(10)
DECLARE @DATE DATETIME
DECLARE @FEE VARCHAR(10)
DECLARE @BRANCH VARCHAR(3)
DECLARE @NARR CHAR(100)
DECLARE @MATTER VARCHAR(20)
DECLARE @SUPP CHAR(10)
DECLARE @VALUE DECIMAL(17, 2)
DECLARE @VATCODE CHAR(1)
DECLARE @VATVAL DECIMAL(17, 2)
DECLARE @CLIENTYN CHAR(1)
DECLARE @OUTLAY CHAR(1)
DECLARE @PENDING CHAR(1)
DECLARE @YEAR SMALLINT
DECLARE @PERNO SMALLINT
DECLARE @ENTRYCURRENCY CHAR(1)
DECLARE @CURRENCYVALUE DECIMAL(17, 2)
DECLARE @CURRENCYVAT DECIMAL(17, 2)
DECLARE @OUTLAYCODE CHAR(4)
DECLARE @THIRDPARTY CHAR(1)
DECLARE @PAYEE CHAR(60)
DECLARE @HEADPREF INT
DECLARE @HEADBATCH INT
DECLARE @ALLOCBATCH INT
DECLARE @ALLOCPREF INT
DECLARE @ALLOCREF CHAR(10)
DECLARE @ALLOCVALUE DECIMAL(17, 2)
DECLARE @ALLOCWRITEOFF CHAR(1)
DECLARE @PSUPP CHAR(10)
DECLARE @UNDETAKING SMALLINT
DECLARE @KEYID DECIMAL(9, 0)
DECLARE @CaseAssCode VARCHAR(6)
DECLARE @OnceOffPayment CHAR(1)
DECLARE @PayClient CHAR(1)
DECLARE @ClientCode VARCHAR(10)
DECLARE @EFTEmailYorN CHAR(1)
DECLARE @RegisteredPost INT
DECLARE @PreBilledOutlay BIT
SELECT @USER = ISNULL([XML].[User], ''),
@BATCHNO = ISNULL([XML].[BATCHNO], 0),
@TYPE = ISNULL([XML].[TYPE], ''),
@CODE = ISNULL([XML].[CODE], ''),
@PREF = ISNULL([XML].[PREF], 0),
@REF = ISNULL([XML].[REF], ''),
@DATE = [XML].[DATE],
@FEE = ISNULL([XML].[FEE], ''),
@BRANCH = ISNULL([XML].[BRANCH], ''),
@NARR = ISNULL([XML].[NARR], ''),
@MATTER = ISNULL([XML].[MATTER], ''),
@SUPP = ISNULL([XML].[SUPP], ''),
@VALUE = ISNULL([XML].[VALUE], 0),
@VATCODE = ISNULL([XML].[VATCODE], ''),
@VATVAL = ISNULL([XML].[VATVAL], 0),
@CLIENTYN = ISNULL([XML].[CLIENTYN], ''),
@OUTLAY = ISNULL([XML].[OUTLAY], ''),
@PENDING = ISNULL([XML].[PENDING], ''),
@YEAR = ISNULL([XML].[YEAR], @CURRENTYEAR),
@PERNO = ISNULL([XML].[PERNO], @CURRENTPERIOD),
@ENTRYCURRENCY = [XML].[ENTRYCURRENCY],
@CURRENCYVALUE = [XML].[CURRENCYVALUE],
@CURRENCYVAT = [XML].[CURRENCYVAT],
@OUTLAYCODE = ISNULL([XML].[OUTLAYCODE], ''),
@THIRDPARTY = ISNULL([XML].[THIRDPARTY], 'N'),
@PAYEE = ISNULL([XML].[PAYEE], ''),
@HEADPREF = ISNULL([XML].[HEADPREF], 0),
@HEADBATCH = ISNULL([XML].[HEADBATCH], 0),
@ALLOCBATCH = ISNULL([XML].[ALLOCBATCH], 0),
@ALLOCPREF = ISNULL([XML].[ALLOCPREF], 0),
@ALLOCREF = ISNULL([XML].[ALLOCREF], ''),
@ALLOCVALUE = ISNULL([XML].[ALLOCVALUE], 0),
@ALLOCWRITEOFF = ISNULL([XML].[ALLOCWRITEOFF], ''),
@PSUPP = ISNULL([XML].[PSUPP], ''),
@UNDETAKING = ISNULL([XML].[UNDETAKING], 0),
@KEYID = ISNULL([XML].[KEYID], 0),
@CaseAssCode = ISNULL([XML].[CaseAssCode], ''),
@OnceOffPayment = ISNULL([XML].[OnceOffPayment], 'N'),
@PayClient = ISNULL([XML].[PayClient], 'N'),
@ClientCode = ISNULL([XML].[ClientCode], ''),
@EFTEmailYorN = ISNULL([XML].[EFTEmailYorN], 'N'),
@RegisteredPost = ISNULL([XML].[RegisteredPost], 0),
@PreBilledOutlay = ISNULL([XML].[PreBilledOutlay], 0)
FROM OPENXML(@iSL, N'Data/BatchDetails')
WITH ([User] VARCHAR(10) '../@User',
[BATCHNO] INT '@BATCHNO',
[TYPE] CHAR(1) '@TYPE',
[CODE] CHAR(10) '@CODE',
[PREF] INT '@PREF',
[REF] CHAR(10) '@REF',
[DATE] DATETIME '@DATE',
[FEE] VARCHAR(10) '@FEE',
[BRANCH] VARCHAR(3) '@BRANCH',
[NARR] CHAR(100) '@NARR',
[MATTER] VARCHAR(20) '@MATTER',
[SUPP] CHAR(10) '@SUPP',
[VALUE] DECIMAL(17, 2) '@VALUE',
[VATCODE] CHAR(1) '@VATCODE',
[VATVAL] DECIMAL(17, 2) '@VATVAL',
[CLIENTYN] CHAR(1) '@CLIENTYN',
[OUTLAY] CHAR(1) '@OUTLAY',
[PENDING] CHAR(1) '@PENDING',
[YEAR] SMALLINT '@YEAR',
[PERNO] SMALLINT '@PERNO',
[ENTRYCURRENCY] CHAR(1) '@ENTRYCURRENCY',
[CURRENCYVALUE] DECIMAL(17, 2) '@CURRENCYVALUE',
[CURRENCYVAT] DECIMAL(17, 2) '@CURRENCYVAT',
[OUTLAYCODE] CHAR(4) '@OUTLAYCODE',
[THIRDPARTY] CHAR(1) '@THIRDPARTY',
[PAYEE] CHAR(60) '@PAYEE',
[HEADPREF] INT '@HEADPREF',
[HEADBATCH] INT '@HEADBATCH',
[ALLOCBATCH] INT '@ALLOCBATCH',
[ALLOCPREF] INT '@ALLOCPREF',
[ALLOCREF] CHAR(10) '@ALLOCREF',
[ALLOCVALUE] DECIMAL(17, 2) '@ALLOCVALUE',
[ALLOCWRITEOFF] CHAR(1) '@ALLOCWRITEOFF',
[PSUPP] CHAR(10) '@PSUPP',
[UNDETAKING] SMALLINT '@UNDETAKING',
[KEYID] DECIMAL(9, 0) '@KEYID',
[CaseAssCode] VARCHAR(6) '@CaseAssCode',
[OnceOffPayment] CHAR(1) '@OnceOffPayment',
[PayClient] CHAR(1) '@PayClient',
[ClientCode] VARCHAR(10) '@ClientCode',
[EFTEmailYorN] CHAR(1) '@EFTEmailYorN',
[RegisteredPost] INT '@RegisteredPost',
[PreBilledOutlay] BIT '@PreBilledOutlay') AS [XML]
BEGIN TRY
EXEC sp_xml_removedocument @iSL
END TRY
BEGIN CATCH
END CATCH
IF @TYPE <> 'P' OR (@TYPE = 'P' AND @CODE = '')
BEGIN
SET @CODE = (SELECT CASE @OUTLAY
WHEN 'C' THEN ISNULL([CON].[CLIENT], '')
WHEN 'O' THEN ISNULL([CON].[OUTLAY], '')
WHEN 'D' THEN ISNULL([CON].[DEBTORS], '')
ELSE @CODE END
FROM [dbo].[control] AS [CON])
END
/*
Prepare dates by handling timezones
Remove time component for backwards compatibility
with Clarion apps
*/
SET @DATE = DATEADD(DAY, DATEDIFF(DAY, 0,@DATE), 0)
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[KEYID] = @KEYID)
BEGIN
UPDATE [BAD]
SET [BAD].[BATCHNO] = @BATCHNO,
[BAD].[TYPE] = @TYPE,
[BAD].[CODE] = @CODE,
[BAD].[PREF] = @PREF,
[BAD].[REF] = @REF,
[BAD].[DATE] = @DATE,
[BAD].[FEE] = @FEE,
[BAD].[BRANCH] = @BRANCH,
[BAD].[NARR] = @NARR,
[BAD].[MATTER] = @MATTER,
[BAD].[SUPP] = @SUPP,
[BAD].[VALUE] = @VALUE,
[BAD].[VATCODE] = @VATCODE,
[BAD].[VATVAL] = @VATVAL,
[BAD].[CLIENTYN] = @CLIENTYN,
[BAD].[OUTLAY] = @OUTLAY,
[BAD].[PENDING] = @PENDING,
[BAD].[YEAR] = @YEAR,
[BAD].[PERNO] = @PERNO,
[BAD].[ENTRYCURRENCY] = @ENTRYCURRENCY,
[BAD].[CURRENCYVALUE] = ISNULL(@CURRENCYVALUE, CONVERT(DECIMAL(19, 2),
CASE
WHEN @TYPE = 'J'
THEN (@VALUE/@EICONVERT)
WHEN @TYPE = 'T'
THEN
(CASE WHEN @BASECURRENCY = @ENTRYCURRENCY
THEN (@VALUE * @IECONVERT)
ELSE 0 END)
ELSE (@VALUE * @IECONVERT) END)),
[BAD].[CURRENCYVAT] = ISNULL(@CURRENCYVAT, CONVERT(DECIMAL(19, 2), @VATVAL * @IECONVERT)),
[BAD].[OUTLAYCODE] = @OUTLAYCODE,
[BAD].[THIRDPARTY] = @THIRDPARTY,
[BAD].[PAYEE] = @PAYEE,
[BAD].[HEADPREF] = @HEADPREF,
[BAD].[HEADBATCH] = @HEADBATCH,
[BAD].[ALLOCBATCH] = @ALLOCBATCH,
[BAD].[ALLOCPREF] = @ALLOCPREF,
[BAD].[ALLOCREF] = @ALLOCREF,
[BAD].[ALLOCVALUE] = @ALLOCVALUE,
[BAD].[ALLOCWRITEOFF] = @ALLOCWRITEOFF,
[BAD].[PSUPP] = @PSUPP,
[BAD].[UNDETAKING] = @UNDETAKING,
[BAD].[CaseAssCode] = @CaseAssCode,
[BAD].[OnceOffPayment] = @OnceOffPayment,
[BAD].[PayClient] = @PayClient,
[BAD].[ClientCode] = @ClientCode,
[BAD].[EFTEmailYorN] = @EFTEmailYorN,
[BAD].[RegisteredPost] = @RegisteredPost,
[BAD].[PreBilledOutlay] = @PreBilledOutlay
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[KEYID] = @KEYID
END
ELSE
BEGIN
INSERT INTO [dbo].[BatchDetails] (
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay])
VALUES (@BATCHNO,
@TYPE,
@CODE,
@PREF,
@REF,
@DATE,
@FEE,
@BRANCH,
@NARR,
@MATTER,
@SUPP,
@VALUE,
@VATCODE,
@VATVAL,
@CLIENTYN,
@OUTLAY,
@PENDING,
@YEAR,
@PERNO,
@ENTRYCURRENCY,
ISNULL(@CURRENCYVALUE, CONVERT(DECIMAL(19, 2),
CASE
WHEN @TYPE = 'J'
THEN (@VALUE/@EICONVERT)
WHEN @TYPE = 'T'
THEN (CASE WHEN @BASECURRENCY = @ENTRYCURRENCY
THEN (@VALUE * @IECONVERT)
ELSE 0 END)
ELSE (@VALUE * @IECONVERT) END)),
ISNULL(@CURRENCYVAT, CONVERT(DECIMAL(19, 2), @VATVAL * @IECONVERT)),
@OUTLAYCODE,
@THIRDPARTY,
@PAYEE,
@HEADPREF,
@HEADBATCH,
@ALLOCBATCH,
@ALLOCPREF,
@ALLOCREF,
@ALLOCVALUE,
@ALLOCWRITEOFF,
@PSUPP,
@UNDETAKING,
@CaseAssCode,
@OnceOffPayment,
@PayClient,
@ClientCode,
@EFTEmailYorN,
@RegisteredPost,
@PreBilledOutlay)
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CreateBatchXML'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateBatchXML]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateBatchXML]
(@XML NVARCHAR(MAX))
AS
/*******************************************************************************************************
* Save the Batch Header *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateBatchXML] *
* *
* Modification History: *
* 2022-02-04 John Ginnane Created *
* 2022-02-16 Balamurugan.C Added new line end of the procedure *
* 2022-02-17 Balamurugan C Modified - Changed Syntax for currency rates *
* 2022-02-18 Balamurugan.C Modified - Currency Value need to fetch from form for journal *
* 2022-02-22 Balamurugan.C Modified - Currency Value is 0 for transfer type *
* 2022-02-23 Balamurugan.C Modified - Handled T-SQL Statements *
* 2022-05-04 Vignesh.M Modified - Entry Date Removed in Update Statement *
* 2022-05-09 Vignesh M Modified - UTC Conversion Removed *
* 2022-10-11 Ghayathri.S.V Modified - Currency Value logic for Bank Tranfer and
Purchase Bill Type *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
DECLARE @iSL INT
DECLARE @BASECURRENCY CHAR(1)
DECLARE @IECONVERT DECIMAL(17,6)
DECLARE @VATEXCLUDE VARCHAR(1)
DECLARE @CURRENTYEAR INT
DECLARE @CURRENTPERIOD INT
SELECT @BASECURRENCY = [CON].[BASECURRENCY],
@IECONVERT = [CON].[IECONVERT],
@VATEXCLUDE = [CON].[VATEXCLUDE],
@CURRENTYEAR = [CON].[YEAR],
@CURRENTPERIOD = [CON].[CURPER]
FROM [dbo].[control] AS [CON]
BEGIN TRY
EXEC sp_xml_preparedocument @iSL OUTPUT, @XML
END TRY
BEGIN CATCH
EXEC sp_xml_preparedocument @iSL OUTPUT, N''
END CATCH
DECLARE @USER VARCHAR(100)
DECLARE @BATCHNO INT
DECLARE @POSTFWD CHAR(1)
DECLARE @TYPE CHAR(1)
DECLARE @CODE CHAR(10)
DECLARE @BRANCH VARCHAR(3)
DECLARE @PREF INT
DECLARE @REF CHAR(10)
DECLARE @DATE DATETIME
DECLARE @FEE VARCHAR(10)
DECLARE @MATTER VARCHAR(20)
DECLARE @SUPP CHAR(10)
DECLARE @NARR CHAR(150)
DECLARE @VALUE DECIMAL(17, 2)
DECLARE @SUBTOT DECIMAL(17, 2)
DECLARE @POSTED CHAR(1)
DECLARE @CLIENTAC CHAR(1)
DECLARE @PERNO SMALLINT
DECLARE @YEAR SMALLINT
DECLARE @PAYEE CHAR(60)
DECLARE @OUTLAYTOT DECIMAL(17, 2)
DECLARE @VATTOT DECIMAL(17, 2)
DECLARE @FEETOT DECIMAL(17, 2)
DECLARE @INVCR CHAR(1)
DECLARE @THIRDPARTY CHAR(1)
DECLARE @USERCODE CHAR(8)
DECLARE @ENTRYDATE DATETIME
DECLARE @CLIENTBANK CHAR(10)
DECLARE @CURRENCY CHAR(1)
DECLARE @CURRENCYVALUE DECIMAL(17, 2)
DECLARE @CUROUTLAYTOT DECIMAL(17, 2)
DECLARE @CURVATTOT DECIMAL(17, 2)
DECLARE @CURFEETOT DECIMAL(17, 2)
DECLARE @RECNO INT
DECLARE @SINGLELINE CHAR(1)
DECLARE @TEMPLATE CHAR(10)
DECLARE @CHEQUEREQNO INT
DECLARE @WRITEDOWN DATETIME
DECLARE @WRITEBACKHOURS DECIMAL(7, 2)
DECLARE @WRITEBACKVALUE DECIMAL(13, 2)
DECLARE @CORRECTCOPY CHAR(1)
DECLARE @CreditInvoiceNo INT
DECLARE @DraftBillNo INT
DECLARE @EFTSent CHAR(1)
DECLARE @EFTDate DATETIME
DECLARE @EFTFileNumber INT
DECLARE @EFTFileName VARCHAR(500)
DECLARE @EFTYorN CHAR(1)
DECLARE @ClientCode VARCHAR(10)
DECLARE @PayClient CHAR(1)
DECLARE @OnceOffPayment CHAR(1)
DECLARE @CaseAssCode VARCHAR(6)
DECLARE @EFTEmailYorN CHAR(1)
DECLARE @HandlerCode VARCHAR(10)
DECLARE @PaymentMethod INT
DECLARE @ClearedDate DATETIME
SELECT @USER = ISNULL([XML].[User], ''),
@BATCHNO = ISNULL([XML].[BATCHNO], 0),
@POSTFWD = ISNULL([XML].[POSTFWD], ''),
@TYPE = ISNULL([XML].[TYPE], ''),
@CODE = ISNULL([XML].[CODE], ''),
@BRANCH = ISNULL([XML].[BRANCH], ''),
@PREF = ISNULL([XML].[PREF], 0),
@REF = ISNULL([XML].[REF], ''),
@DATE = ISNULL([XML].[DATE], NULL),
@FEE = ISNULL([XML].[FEE], ''),
@MATTER = ISNULL([XML].[MATTER], ''),
@SUPP = ISNULL([XML].[SUPP], ''),
@NARR = ISNULL([XML].[NARR], ''),
@VALUE = ISNULL([XML].[VALUE], 0),
@SUBTOT = ISNULL([XML].[SUBTOT], 0),
@POSTED = ISNULL([XML].[POSTED], 'N'),
@CLIENTAC = ISNULL([XML].[CLIENTAC], 'N'),
@PERNO = ISNULL([XML].[PERNO], @CURRENTPERIOD),
@YEAR = ISNULL([XML].[YEAR], @CURRENTYEAR),
@PAYEE = ISNULL([XML].[PAYEE], ''),
@OUTLAYTOT = ISNULL([XML].[OUTLAYTOT], 0),
@VATTOT = ISNULL([XML].[VATTOT], 0),
@FEETOT = ISNULL([XML].[FEETOT], 0),
@INVCR = ISNULL([XML].[INVCR], ''),
@THIRDPARTY = ISNULL([XML].[THIRDPARTY], ''),
@USERCODE = ISNULL([XML].[USERCODE], ''),
@ENTRYDATE = ISNULL([XML].[ENTRYDATE], DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)),
@CLIENTBANK = ISNULL([XML].[CLIENTBANK], ''),
@CURRENCY = ISNULL([XML].[CURRENCY], @BASECURRENCY),
@CURRENCYVALUE = [XML].[CURRENCYVALUE],
@CUROUTLAYTOT = [XML].[CUROUTLAYTOT],
@CURVATTOT = [XML].[CURVATTOT],
@CURFEETOT = [XML].[CURFEETOT],
@RECNO = ISNULL([XML].[RECNO], 0),
@SINGLELINE = ISNULL([XML].[SINGLELINE], ''),
@TEMPLATE = ISNULL([XML].[TEMPLATE], ''),
@CHEQUEREQNO = ISNULL([XML].[CHEQUEREQNO], 0),
@WRITEDOWN = ISNULL([XML].[WRITEDOWN], NULL),
@WRITEBACKHOURS = ISNULL([XML].[WRITEBACKHOURS], 0),
@WRITEBACKVALUE = ISNULL([XML].[WRITEBACKVALUE], 0),
@CORRECTCOPY = ISNULL([XML].[CORRECTCOPY], ''),
@CreditInvoiceNo = ISNULL([XML].[CreditInvoiceNo], 0),
@DraftBillNo = ISNULL([XML].[DraftBillNo], 0),
@EFTSent = ISNULL([XML].[EFTSent], 'N'),
@EFTDate = ISNULL([XML].[EFTDate], NULL),
@EFTFileNumber = ISNULL([XML].[EFTFileNumber], NULL),
@EFTFileName = ISNULL([XML].[EFTFileName], ''),
@EFTYorN = ISNULL([XML].[EFTYorN], 'N'),
@ClientCode = ISNULL([XML].[ClientCode], ''),
@PayClient = ISNULL([XML].[PayClient], 'N'),
@OnceOffPayment = ISNULL([XML].[OnceOffPayment], 'N'),
@CaseAssCode = ISNULL([XML].[CaseAssCode], ''),
@EFTEmailYorN = ISNULL([XML].[EFTEmailYorN], 'N'),
@HandlerCode = ISNULL([XML].[HandlerCode], NULL),
@PaymentMethod = ISNULL([XML].[PaymentMethod], NULL),
@ClearedDate = ISNULL([XML].[ClearedDate], NULL)
FROM OPENXML(@iSL, N'Data/BatchH')
WITH ([User] VARCHAR(10) '../@User',
[BATCHNO] INT '@BATCHNO',
[POSTFWD] CHAR(1) '@POSTFWD',
[TYPE] CHAR(1) '@TYPE',
[CODE] CHAR(10) '@CODE',
[BRANCH] VARCHAR(3) '@BRANCH',
[PREF] INT '@PREF',
[REF] CHAR(10) '@REF',
[DATE] DATETIME '@DATE',
[FEE] VARCHAR(10) '@FEE',
[MATTER] VARCHAR(20) '@MATTER',
[SUPP] CHAR(10) '@SUPP',
[NARR] CHAR(150) '@NARR',
[VALUE] DECIMAL(17, 2) '@VALUE',
[SUBTOT] DECIMAL(17, 2) '@SUBTOT',
[POSTED] CHAR(1) '@POSTED',
[CLIENTAC] CHAR(1) '@CLIENTAC',
[PERNO] SMALLINT '@PERNO',
[YEAR] SMALLINT '@YEAR',
[PAYEE] CHAR(60) '@PAYEE',
[OUTLAYTOT] DECIMAL(17, 2) '@OUTLAYTOT',
[VATTOT] DECIMAL(17, 2) '@VATTOT',
[FEETOT] DECIMAL(17, 2) '@FEETOT',
[INVCR] CHAR(1) '@INVCR',
[THIRDPARTY] CHAR(1) '@THIRDPARTY',
[USERCODE] CHAR(8) '@USERCODE',
[ENTRYDATE] DATETIME '@ENTRYDATE',
[CLIENTBANK] CHAR(10) '@CLIENTBANK',
[CURRENCY] CHAR(1) '@CURRENCY',
[CURRENCYVALUE] DECIMAL(17, 2) '@CURRENCYVALUE',
[CUROUTLAYTOT] DECIMAL(17, 2) '@CUROUTLAYTOT',
[CURVATTOT] DECIMAL(17, 2) '@CURVATTOT',
[CURFEETOT] DECIMAL(17, 2) '@CURFEETOT',
[RECNO] INT '@RECNO',
[SINGLELINE] CHAR(1) '@SINGLELINE',
[TEMPLATE] CHAR(10) '@TEMPLATE',
[CHEQUEREQNO] INT '@CHEQUEREQNO',
[WRITEDOWN] DATETIME '@WRITEDOWN',
[WRITEBACKHOURS] DECIMAL(7, 2) '@WRITEBACKHOURS',
[WRITEBACKVALUE] DECIMAL(13, 2) '@WRITEBACKVALUE',
[CORRECTCOPY] CHAR(1) '@CORRECTCOPY',
[CreditInvoiceNo] INT '@CreditInvoiceNo',
[DraftBillNo] INT '@DraftBillNo',
[EFTSent] CHAR(1) '@EFTSent',
[EFTDate] DATETIME '@EFTDate',
[EFTFileNumber] INT '@EFTFileNumber',
[EFTFileName] VARCHAR(500) '@EFTFileName',
[EFTYorN] CHAR(1) '@EFTYorN',
[ClientCode] VARCHAR(10) '@ClientCode',
[PayClient] CHAR(1) '@PayClient',
[OnceOffPayment] CHAR(1) '@OnceOffPayment',
[CaseAssCode] VARCHAR(6) '@CaseAssCode',
[EFTEmailYorN] CHAR(1) '@EFTEmailYorN',
[HandlerCode] VARCHAR(10) '@HandlerCode',
[PaymentMethod] INT '@PaymentMethod',
[ClearedDate] DATETIME '@ClearedDate') AS [XML]
BEGIN TRY
EXEC sp_xml_removedocument @iSL
END TRY
BEGIN CATCH
END CATCH
/*
Prepare dates by handling timezones
Remove time component for backwards compatibility
with Clarion apps
*/
SET @DATE = DATEADD(DAY, DATEDIFF(DAY, 0, @DATE ), 0)
SET @ENTRYDATE = DATEADD(DAY, DATEDIFF(DAY, 0, @ENTRYDATE ), 0)
SET @WRITEDOWN = DATEADD(DAY, DATEDIFF(DAY, 0, @WRITEDOWN ), 0)
SET @EFTDate = DATEADD(DAY, DATEDIFF(DAY, 0, @EFTDate ), 0)
SET @ClearedDate = DATEADD(DAY, DATEDIFF(DAY, 0, @ClearedDate), 0)
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO)
BEGIN
UPDATE [BAH]
SET [BAH].[POSTFWD] = @POSTFWD,
[BAH].[TYPE] = @TYPE,
[BAH].[CODE] = @CODE,
[BAH].[BRANCH] = @BRANCH,
[BAH].[PREF] = @PREF,
[BAH].[REF] = @REF,
[BAH].[DATE] = @DATE,
[BAH].[FEE] = @FEE,
[BAH].[MATTER] = @MATTER,
[BAH].[SUPP] = @SUPP,
[BAH].[NARR] = @NARR,
[BAH].[VALUE] = @VALUE,
[BAH].[SUBTOT] = @SUBTOT,
[BAH].[POSTED] = @POSTED,
[BAH].[CLIENTAC] = @CLIENTAC,
[BAH].[PERNO] = @PERNO,
[BAH].[YEAR] = @YEAR,
[BAH].[PAYEE] = @PAYEE,
[BAH].[OUTLAYTOT] = @OUTLAYTOT,
[BAH].[VATTOT] = @VATTOT,
[BAH].[FEETOT] = @FEETOT,
[BAH].[INVCR] = @INVCR,
[BAH].[THIRDPARTY] = @THIRDPARTY,
[BAH].[USERCODE] = @USERCODE,
[BAH].[CLIENTBANK] = @CLIENTBANK,
[BAH].[CURRENCY] = @CURRENCY,
[BAH].[CURRENCYVALUE] = ISNULL(@CURRENCYVALUE, CONVERT(DECIMAL(19, 2),
CASE
WHEN @TYPE = 'T'
THEN (CASE WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'I'
THEN @VALUE / 0.787564
WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'E'
THEN @VALUE * 0.787564
ELSE 0 END)
WHEN @TYPE = 'B'
THEN (CASE WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'I'
THEN @SUBTOT / 0.787564
WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'E'
THEN @SUBTOT * 0.787564
ELSE 0 END)
ELSE (@VALUE * @IECONVERT) END)),
[BAH].[CUROUTLAYTOT] = ISNULL(@CUROUTLAYTOT, CONVERT(DECIMAL(19, 2), @OUTLAYTOT * @IECONVERT)),
[BAH].[CURVATTOT] = ISNULL(@CURVATTOT, CONVERT(DECIMAL(19, 2), @VATTOT * @IECONVERT)),
[BAH].[CURFEETOT] = ISNULL(@CURFEETOT, CONVERT(DECIMAL(19, 2), @FEETOT * @IECONVERT)),
[BAH].[RECNO] = @RECNO,
[BAH].[SINGLELINE] = @SINGLELINE,
[BAH].[TEMPLATE] = @TEMPLATE,
[BAH].[CHEQUEREQNO] = @CHEQUEREQNO,
[BAH].[WRITEDOWN] = @WRITEDOWN,
[BAH].[WRITEBACKHOURS] = @WRITEBACKHOURS,
[BAH].[WRITEBACKVALUE] = @WRITEBACKVALUE,
[BAH].[CORRECTCOPY] = @CORRECTCOPY,
[BAH].[CreditInvoiceNo] = @CreditInvoiceNo,
[BAH].[DraftBillNo] = @DraftBillNo,
[BAH].[EFTSent] = @EFTSent,
[BAH].[EFTDate] = @EFTDate,
[BAH].[EFTFileNumber] = @EFTFileNumber,
[BAH].[EFTFileName] = @EFTFileName,
[BAH].[EFTYorN] = @EFTYorN,
[BAH].[ClientCode] = @ClientCode,
[BAH].[PayClient] = @PayClient,
[BAH].[OnceOffPayment] = @OnceOffPayment,
[BAH].[CaseAssCode] = @CaseAssCode,
[BAH].[EFTEmailYorN] = @EFTEmailYorN,
[BAH].[HandlerCode] = @HandlerCode,
[BAH].[PaymentMethod] = @PaymentMethod,
[BAH].[ClearedDate] = @ClearedDate
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
END
ELSE
BEGIN
INSERT INTO [dbo].[BatchH] (
[BATCHNO],
[POSTFWD],
[TYPE],
[CODE],
[BRANCH],
[PREF],
[REF],
[DATE],
[FEE],
[MATTER],
[SUPP],
[NARR],
[VALUE],
[SUBTOT],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[OUTLAYTOT],
[VATTOT],
[FEETOT],
[INVCR],
[THIRDPARTY],
[USERCODE],
[ENTRYDATE],
[CLIENTBANK],
[CURRENCY],
[CURRENCYVALUE],
[CUROUTLAYTOT],
[CURVATTOT],
[CURFEETOT],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[WRITEDOWN],
[WRITEBACKHOURS],
[WRITEBACKVALUE],
[CORRECTCOPY],
[CreditInvoiceNo],
[DraftBillNo],
[EFTSent],
[EFTDate],
[EFTFileNumber],
[EFTFileName],
[EFTYorN],
[ClientCode],
[PayClient],
[OnceOffPayment],
[CaseAssCode],
[EFTEmailYorN],
[HandlerCode],
[PaymentMethod],
[ClearedDate])
SELECT @BATCHNO,
@POSTFWD,
@TYPE,
@CODE,
@BRANCH,
@PREF,
@REF,
@DATE,
@FEE,
@MATTER,
@SUPP,
@NARR,
@VALUE,
@SUBTOT,
@POSTED,
@CLIENTAC,
@PERNO,
@YEAR,
@PAYEE,
@OUTLAYTOT,
@VATTOT,
@FEETOT,
@INVCR,
@THIRDPARTY,
@USERCODE,
@ENTRYDATE,
@CLIENTBANK,
@CURRENCY,
ISNULL(@CURRENCYVALUE, CONVERT(DECIMAL(19, 2),
CASE
WHEN @TYPE = 'T'
THEN (CASE WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'I'
THEN @VALUE / 0.787564
WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'E'
THEN @VALUE * 0.787564
ELSE 0 END)
WHEN @TYPE = 'B'
THEN (CASE WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'I'
THEN @SUBTOT / 0.787564
WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'E'
THEN @SUBTOT * 0.787564
ELSE 0 END)
ELSE (@VALUE * @IECONVERT) END)),
ISNULL(@CUROUTLAYTOT, CONVERT(DECIMAL(19, 2), @OUTLAYTOT * @IECONVERT)),
ISNULL(@CURVATTOT, CONVERT(DECIMAL(19, 2), @VATTOT * @IECONVERT)),
ISNULL(@CURFEETOT, CONVERT(DECIMAL(19, 2), @FEETOT * @IECONVERT)),
@RECNO,
@SINGLELINE,
@TEMPLATE,
@CHEQUEREQNO,
@WRITEDOWN,
@WRITEBACKHOURS,
@WRITEBACKVALUE,
@CORRECTCOPY,
@CreditInvoiceNo,
@DraftBillNo,
@EFTSent,
@EFTDate,
@EFTFileNumber,
@EFTFileName,
@EFTYorN,
@ClientCode,
@PayClient,
@OnceOffPayment,
@CaseAssCode,
@EFTEmailYorN,
@HandlerCode,
@PaymentMethod,
@ClearedDate
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
BEGIN
IF OBJECT_ID(N'KAAS_CreateCostTransferBatch',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_CreateCostTransferBatch]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_CreateCostTransferBatch]
(@XML NVARCHAR(MAX),
@REF VARCHAR(10),
@Handler VARCHAR(10),
@DataCount VARCHAR(MAX))
AS
/*************************************************************************************************************
* *
* KAAS_CreateCostTransferBatch *
* Create Cost Transfer Batch
* Copied from ky_NETSPCCreateCostTransferBatch *
* @XML: *
* *
* *
* *
* *
* *
* @Handler: currently logged in handler *
* *
* Compatibility information - PLEASE update older versions if necessary to ensure the compatible software *
* remains fully functional *
* ***************************************************************************************************** *
* * * *
* * Supersedes: - * *
* * Original: - * *
* * First compatible version: 5.8.1.19 * *
* * Last compatible software version: - * *
* * Superseded by: - * *
* * * *
* ***************************************************************************************************** *
* *
* Modification History: *
* 2024-03-01 Ghayathri S.V Created *
* 2024-03-20 Ghayathri S.V Modified to fetch multiple batch numbers *
*************************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @MATTERS TABLE
([Code] VARCHAR(20) NOT NULL,
[id] INT IDENTITY(1, 1) NOT NULL PRIMARY KEY,
[BRANCH] CHAR(3) NOT NULL,
[BATCHNO] INT NOT NULL,
[PREF] INT NOT NULL,
[VALUE] DECIMAL(17, 2) NOT NULL,
[WRITEOFF] CHAR(1) NOT NULL,
UNIQUE NONCLUSTERED
([BRANCH], [id]))
DECLARE @BRANCHTOTALS TABLE
([BRANCH] CHAR(3) NOT NULL PRIMARY KEY,
[VALUE] DECIMAL(17, 2) NOT NULL,
[CURRENCYVALUE] DECIMAL(17, 2) NOT NULL)
DECLARE @LOGON VARCHAR(8)
--Try and get the [LOGON] from the [dbo].[Handlers] table. If nothing is found, use the [CODE] instead but only if it's
--8 characters or less. If that fails, revert back to the ADM [LOGON]
--START
SET @Handler = ISNULL(@Handler, 'ADM')
IF NOT EXISTS
(SELECT TOP 1 1
FROM [dbo].[Handlers] [HAN]
WHERE [HAN].[CODE] = @Handler)
BEGIN
SET @Handler = 'ADM'
END
SELECT @LOGON = CASE WHEN RTRIM(ISNULL([HAN].[LOGON], '')) <> ''
THEN RTRIM([HAN].[LOGON])
WHEN LEN(@Handler) > 8
THEN ISNULL((SELECT [HAM].[LOGON] FROM [dbo].[Handlers] [HAM] WHERE [HAM].[CODE] = 'ADM'), '')
WHEN @Handler = ''
THEN ISNULL((SELECT [HAM].[LOGON] FROM [dbo].[Handlers] [HAM] WHERE [HAM].[CODE] = 'ADM'), '')
ELSE RTRIM(CONVERT(VARCHAR(8), @Handler)) END
FROM [dbo].[Handlers] [HAN]
WHERE [HAN].[CODE] = @Handler
--END
DECLARE @iSL INT
EXEC sp_xml_preparedocument @iSL OUTPUT, @XML
INSERT
INTO @MATTERS
([Code],
[BRANCH],
[BATCHNO],
[PREF],
[VALUE],
[WRITEOFF])
SELECT [CODE],
[BRANCH],
ISNULL([BATCHNO], 0),
ISNULL([PREF], 0),
[VALUE],
[WRITEOFF]
FROM OPENXML(@iSL, N'MATTERS/MATTER')
WITH ([CODE] VARCHAR(20) '@CODE',
[BRANCH] CHAR(3) '@BRANCH',
[BATCHNO] INT '@BATCHNO',
[PREF] INT '@PREF',
[VALUE] DECIMAL(17, 2) '@VALUE',
[WRITEOFF] CHAR(1) '@WRITEOFF')
EXEC sp_xml_removedocument @iSL
IF NOT EXISTS
(SELECT TOP 1 1
FROM @MATTERS)
BEGIN
--Nothing to do here
SET NOCOUNT OFF
RETURN
END
DECLARE @BATCHNO INT
DECLARE @PREF INT
DECLARE @TYPE CHAR(1)
DECLARE @YEAR INT
DECLARE @CURPER INT
DECLARE @OUTLAY VARCHAR(10)
DECLARE @VATE CHAR(1)
DECLARE @OFFICEAC CHAR(10)
DECLARE @CLIENTAC CHAR(10)
DECLARE @DEBTRSAC CHAR(10)
DECLARE @IECONVERT FLOAT
SET @TYPE = 'R'
SELECT @YEAR = [CTL].[YEAR],
@CURPER = [CTL].[CURPER],
@OUTLAY = [CTL].[OUTLAY],
@VATE = [CTL].[VATEXCLUDE],
@OFFICEAC = [CTL].[DEFAULTOFFICEAC],
@CLIENTAC = [CTL].[DEFAULTCLIENTAC],
@DEBTRSAC = [CTL].[DEBTORS],
@IECONVERT = CONVERT(FLOAT, [CTL].[IECONVERT])
FROM [dbo].[control] [CTL]
-- Use new function to get next value
SELECT @BATCHNO = [LAST].[BATCHNO],
@PREF = [LAST].[PREF]
FROM [dbo].[ky_NETTFGetLastBatchNoAndPostRef]() AS [LAST]
-- Sum the Currency Converted Values to get the total value in BATCHH,
-- rather than converting the total afterwards. In the test data there was
-- a 1p difference between the two if you sum first and then convert,
-- and doing it this way gave the same result.
INSERT
INTO @BRANCHTOTALS
([BRANCH],
[VALUE],
[CURRENCYVALUE])
SELECT [MTR].[BRANCH],
SUM([MTR].[VALUE]) AS [VALUE],
SUM(CONVERT(DECIMAL(17, 2),
ROUND( CONVERT(FLOAT,
[MTR].[VALUE])
* CONVERT(FLOAT,
@IECONVERT),
2))) AS [CURRENCYVALUE]
FROM @MATTERS [MTR]
GROUP BY [MTR].[BRANCH]
DECLARE @CurrentBranch CHAR(3)
SELECT TOP 1
@CurrentBranch = [BT].[BRANCH]
FROM @BRANCHTOTALS [BT]
WHILE @CurrentBranch IS NOT NULL
BEGIN
/* Get the next Batch Number and PREF */
SET @BATCHNO = @BATCHNO + 1
SET @PREF = @PREF + 1
/* We need to create a separate BatchH row for each Branch so the first thing
we'll do is get the first available branch in the summary, and create that BatchH */
INSERT
INTO [dbo].[BatchH]
([BATCHNO],
[POSTFWD],
[TYPE],
[CODE],
[BRANCH],
[PREF],
[REF],
[DATE],
[FEE],
[MATTER],
[SUPP],
[NARR],
[VALUE],
[SUBTOT],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[OUTLAYTOT],
[VATTOT],
[FEETOT],
[INVCR],
[THIRDPARTY],
[USERCODE],
[ENTRYDATE],
[CLIENTBANK],
[CURRENCY],
[CURRENCYVALUE],
[CUROUTLAYTOT],
[CURVATTOT],
[CURFEETOT],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[WRITEBACKHOURS],
[WRITEBACKVALUE],
[CORRECTCOPY],
[CreditInvoiceNo],
[DraftBillNo],
[EFTSent],
[EFTFileNumber],
[EFTFileName],
[EFTYorN],
[ClientCode],
[PayClient],
[OnceOffPayment],
[CaseAssCode],
[EFTEmailYorN],
[HandlerCode])
SELECT @BATCHNO AS [BATCHNO],
CONVERT(CHAR(1), '') AS [POSTFWD],
@TYPE AS [TYPE],
@OFFICEAC AS [CODE],
@CurrentBranch AS [BRANCH],
@PREF AS [PREF],
CONVERT(CHAR(10), @REF) AS [REF],
CONVERT(DATETIME,
CONVERT(VARCHAR,
GETDATE(),
112),
112) AS [DATE],
'' AS [FEE],
'' AS [MATTER],
CONVERT(CHAR(10), '') AS [SUPP],
CONVERT(CHAR(150), 'Transfers for Costs (Auto)') AS [NARR],
[BT].[VALUE] AS [VALUE],
CONVERT(DECIMAL(17, 2), 0) AS [SUBTOT],
CONVERT(CHAR(1), 'N') AS [POSTED],
CONVERT(CHAR(1), '') AS [CLIENTAC],
@CURPER AS [PERNO],
@YEAR AS [YEAR],
CONVERT(CHAR(60), '') AS [PAYEE],
CONVERT(DECIMAL(17, 2), 0) AS [OUTLAYTOT],
CONVERT(DECIMAL(17, 2), 0) AS [VATTOT],
CONVERT(DECIMAL(17, 2), 0) AS [FEETOT],
CONVERT(CHAR(1), '') AS [INVCR],
CONVERT(CHAR(1), 'Y') AS [THIRDPARTY],
@LOGON AS [USERCODE],
CONVERT(DATETIME,
CONVERT(VARCHAR,
GETDATE(),
112),
112) AS [ENTRYDATE],
@CLIENTAC AS [CLIENTBANK],
CONVERT(CHAR(1), 'E') AS [CURRENCY],
[BT].[CURRENCYVALUE] AS [CURRENCYVALUE],
CONVERT(DECIMAL(17, 2), 0) AS [CUROUTLAYTOT],
CONVERT(DECIMAL(17, 2), 0) AS [CURVATTOT],
CONVERT(DECIMAL(17, 2), 0) AS [CURFEETOT],
0 AS [RECNO],
CONVERT(CHAR(1), '') AS [SINGLELINE],
CONVERT(CHAR(10), '') AS [TEMPLATE],
0 AS [CHEQUEREQNO],
CONVERT(DECIMAL(7, 2), 0) AS [WRITEBACKHOURS],
CONVERT(DECIMAL(13, 2), 0) AS [WRITEBACKVALUE],
CONVERT(CHAR(1), '') AS [CORRECTCOPY],
0 AS [CreditInvoiceNo],
0 AS [DraftBillNo],
CONVERT(CHAR(1), 'N') AS [EFTSent],
0 AS [EFTFileNumber],
'' AS [EFTFileName],
CONVERT(CHAR(1), 'N') AS [EFTYorN],
'' AS [ClientCode],
CONVERT(CHAR(1), 'N') AS [PayClient],
CONVERT(CHAR(1), 'N') AS [OnceOffPayment],
'' AS [CaseAssCode],
CONVERT(CHAR(1), 'N') AS [EFTEmailYorN],
@Handler AS [HandlerCode]
FROM @BRANCHTOTALS [BT]
WHERE [BT].[BRANCH] = @CurrentBranch
DECLARE @CurrentBDID INT
DECLARE @CurrentBDMatter VARCHAR(20)
DECLARE @CurrentBDValue DECIMAL(17, 2)
DECLARE @CurrentBDAllocBatch INT
DECLARE @CurrentBDAllocREF CHAR(10)
DECLARE @CurrentBDAllocPREF INT
DECLARE @CurrentBDAllocValue DECIMAL(17, 2)
DECLARE @CurrentBDWriteOff CHAR(1)
/* Get the first Batch Detail data for this Branch */
SELECT TOP 1
@CurrentBDID = [MTS].[id],
@CurrentBDMatter = [MTS].[Code],
@CurrentBDValue = [MTS].[VALUE],
@CurrentBDAllocBatch = [MTS].[BATCHNO],
@CurrentBDAllocREF = [DTL].[REF],
@CurrentBDAllocPREF = [DTL].[PREF],
@CurrentBDAllocValue = [DTL].[OSVALUE],
@CurrentBDWriteOff = [MTS].[WRITEOFF]
FROM @MATTERS [MTS]
INNER JOIN [dbo].[DebtorsLedger] AS [DTL]
ON [DTL].[BATCHNO] = [MTS].[BATCHNO]
AND [DTL].[PREF] = [MTS].[PREF]
WHERE [MTS].[BRANCH] = @CurrentBranch
WHILE @CurrentBDMatter IS NOT NULL
BEGIN
/* Get the next PREF */
SET @PREF = @PREF + 1
/* Insert the Batch Detail */
INSERT
INTO [dbo].[BatchDetails]
([BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CASEASSCODE],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay])
SELECT @BATCHNO AS [BATCHNO],
@TYPE AS [TYPE],
@DEBTRSAC AS [CODE],
@PREF AS [PREF],
CONVERT(CHAR(10), @REF) AS [REF],
CONVERT(DATETIME,
CONVERT(VARCHAR,
GETDATE(),
112),
112) AS [DATE],
'' AS [FEE],
@CurrentBranch AS [BRANCH],
'Transfer for Costs (Auto)' AS [NARR],
@CurrentBDMatter AS [MATTER],
CONVERT(CHAR(10), '') AS [SUPP],
@CurrentBDValue AS [VALUE],
CONVERT(CHAR(1), '') AS [VATCODE],
CONVERT(DECIMAL(17, 2), 0) AS [VATVAL],
CONVERT(CHAR(1), '') AS [CLIENTYN],
CONVERT(CHAR(1), 'D') AS [OUTLAY],
CONVERT(CHAR(1), '') AS [PENDING],
@YEAR AS [YEAR],
@CURPER AS [PERNO],
CONVERT(CHAR(1), 'E') AS [ENTRYCURRENCY],
CONVERT(DECIMAL(17, 2),
ROUND( CONVERT(FLOAT,
@CurrentBDValue)
* CONVERT(FLOAT,
@IECONVERT),
2)) AS [CURRENCYVALUE],
CONVERT(DECIMAL(17, 2), 0) AS [CURRENCYVAT],
CONVERT(CHAR(4), '') AS [OUTLAYCODE],
CONVERT(CHAR(1), '') AS [THIRDPARTY],
CONVERT(CHAR(60), '') AS [PAYEE],
0 AS [HEADPREF],
0 AS [HEADBATCH],
@CurrentBDAllocBatch AS [ALLOCBATCH],
@CurrentBDAllocPREF AS [ALLOCPREF],
@CurrentBDAllocREF AS [ALLOCREF],
@CurrentBDAllocValue AS [ALLOCVALUE],
CASE WHEN @CurrentBDWriteOff = 'Y'
THEN CONVERT(CHAR(1), 'Y')
ELSE CONVERT(CHAR(1), '') END AS [ALLOCWRITEOFF],
CONVERT(CHAR(10), '') AS [PSUPP],
CONVERT(SMALLINT, 0) AS [UNDETAKING],
'' AS [CASEASSCODE],
CONVERT(CHAR(1), 'N') AS [OnceOffPayment],
CONVERT(CHAR(1), 'N') AS [PayClient],
'' AS [ClientCode],
CONVERT(CHAR(1), 'N') AS [EFTEmailYorN],
0 AS [RegisteredPost],
CONVERT(BIT, 0) AS [PreBilledOutlay]
/* Remove the matter we've just inserted so that .... */
DELETE @MATTERS WHERE [id] = @CurrentBDID
SET @CurrentBDMatter = NULL
/* .... when we read the first Batch Detail for this Branch again it'll actually be the next available one. Or none. */
SELECT TOP 1
@CurrentBDID = [MTS].[id],
@CurrentBDMatter = [MTS].[Code],
@CurrentBDValue = [MTS].[VALUE],
@CurrentBDAllocBatch = [MTS].[BATCHNO],
@CurrentBDAllocREF = [DTL].[REF],
@CurrentBDAllocPREF = [DTL].[PREF],
@CurrentBDAllocValue = [DTL].[OSVALUE],
@CurrentBDWriteOff = [MTS].[WRITEOFF]
FROM @MATTERS [MTS]
INNER JOIN [dbo].[DebtorsLedger] AS [DTL]
ON [DTL].[BATCHNO] = [MTS].[BATCHNO]
AND [DTL].[PREF] = [MTS].[PREF]
WHERE [MTS].[BRANCH] = @CurrentBranch
END
/* Remove the Branch for which we've just inserted the BatchH and BatchDetails so that .... */
DELETE [BT]
FROM @BRANCHTOTALS [BT]
WHERE [BT].[BRANCH] = @CurrentBranch
SET @CurrentBranch = NULL
/* .... when we read the first branch again it'll actually be the next one. Or none. */
SELECT TOP 1
@CurrentBranch = [BT].[BRANCH]
FROM @BRANCHTOTALS [BT]
END
UPDATE [dbo].[control]
SET [LASTBATCH] = @BATCHNO,
[LASTPREF] = @PREF
PRINT @BATCHNO
DECLARE @Today DATETIME
SET @Today = CONVERT(DATETIME,CONVERT(VARCHAR,GETDATE(),112),112)
SELECT TOP (CAST (@DataCount AS INT)) [BATCHNO] AS [BatchNo] FROM [dbo].[BatchH]
WHERE [BATCHNO] <= @BATCHNO AND [REF] = @REF
AND [DATE] = @Today
ORDER BY BATCHNO DESC
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CreateEditSAMCreditorList'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateEditSAMCreditorList]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateEditSAMCreditorList]
(
@Date DATE = NULL,
@PayValue DECIMAL(18,2) = 0,
@RecordID INT = 0,
@Mode VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Create Creditors List for Supplier Ledger *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateEditSAMCreditorList] *
* *
* Modification History: *
* 2021-10-12 Balamurugan C Created *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
IF(@Mode='Create')
BEGIN
DELETE
FROM [dbo].[CreditorsList]
INSERT
INTO [dbo].[CreditorsList]
( [SupplyCode],
[BatchNo],
[Pref],
[Ref],
[Date],
[OrigValue],
[OsValue],
[PayValue]
)
SELECT [TSL].[Supp],
[TSL].[BatchNo],
[TSL].[Pref],
[TSL].[Ref],
[TSL].[Date],
[TSL].[Original],
[TSL].[OsValue],
0.00 AS [PayValue]
FROM (
SELECT [Supp]
,[BatchNo]
,[Pref]
,[Ref]
,[Date]
,[Original]
,[OsValue] + ISnull((SELECT SUM([BTD].[AllocValue])
FROM [dbo].[BatchH] [BTH]
INNER JOIN [dbo].[BatchDetails] [BTD]
ON [BTH].[BatchNo] = [BTD].[BatchNo]
WHERE [BTH].[Posted] = 'N' AND [SPL].[BatchNo] = [BTD].[AllocBatch] ),0) AS [OsValue]
FROM [dbo].[SupplierLedger] AS [SPL]
WHERE [SPL].[OsValue] < 0
AND [SPL].[BatchNo] <> 0
)[TSL]
WHERE [OsValue] < 0
AND CAST([Date] AS DATE) <= CAST(@Date AS DATE)
ORDER BY [Supp] ASC
END
ELSE
BEGIN
UPDATE [dbo].[CreditorsList]
SET [PayValue] = @PayValue
WHERE [RecordID] = @RecordID
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_CreateEFT',N'P')IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateEFT]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_CreateEFT]
(
@NextFileNumber INT,
@Bank VARCHAR(50),
@PaymentDate DATETIME,
@Narrative VARCHAR(100),
@TotalAmount VARCHAR(100),
@HandlerName VARCHAR(100),
@BatchNumber VARCHAR(100),
@Type CHAR(1)
)
AS
/************************************************************************************************************* *
* Modification History *
* 2024-03-05 Ghayathri S.V Created *
* 2024-03-25 Ghayathri S.V Modified - Updated the logic to update batch details based on batch Type *
*************************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @AccountName VARCHAR(50),
@SortCode VARCHAR(10),
@AccountNumber VARCHAR(10),
@Iban VARCHAR(34),
@Bic VARCHAR(20),
@OrgNumber VARCHAR(34)
SELECT @AccountName = NOM.ACCOUNTNAME,
@SortCode = NOM.SORTCODE,
@AccountNumber = NOM.ACCOUNTNO,
@Iban = NOM.IBAN,
@Bic = NOM.BIC,
@OrgNumber = NOM.OrgIDNumber
FROM dbo.[Nominal] NOM
WHERE NOM.CODE = @Bank
DECLARE @Today DATETIME
SET @Today = CONVERT(DATETIME,CONVERT(VARCHAR,GETDATE(),102),102)
DECLARE @EFTNo INT
SET @EFTNo = @NextFileNumber
DECLARE @EFTTotal VARCHAR(100)
SET @EFTTotal = @TotalAmount
DECLARE @CurrBatchNo VARCHAR(10)
DECLARE @CurrPref VARCHAR(20)
DECLARE @NewBatchNo VARCHAR(10)
DECLARE @NewPref VARCHAR(20)
DECLARE @CurrYear INT
DECLARE @CurrPer INT
--1) UPDATE THE EFT DETAILS TABLE WITH THE LATEST FILE NUMBER
BEGIN
UPDATE dbo.[EFTDetails]
SET FileNumber = @NextFileNumber
WHERE RecordID = 1
END
--2) INSERT THE REQUIRED DATA INTO THE EFT LOG TABLE
BEGIN
INSERT INTO dbo.[EFTLog]
(
[Bank],
[CreatedDate],
[PaymentDate],
[FileName],
[Amount],
[SeqNumber],
[Logon]
)
VALUES (
@Bank,
@Today,
@PaymentDate,
'Downloads',
@TotalAmount,
@NextFileNumber,
@HandlerName
)
END
--3) FETCH AND UPDATE THE LASTBATCH AND LASTPREF FROM CONTROL TABLE
BEGIN
SELECT @CurrBatchNo = LASTBATCH, @CurrPref = LASTPREF FROM dbo.[control]
SET @NewBatchNo = @CurrBatchNo + 1
SET @NewPref = @CurrPref + 1
UPDATE dbo.[control]
SET LASTBATCH = @NewBatchNo,
LASTPREF = @NewPref
END
--4) UPDATE THE BATCH HEADER WITH NEW REF,EFT DETAILS AND BATCH DETAILS OF HEADBATCH WITH NEW BATCH NUMBER
BEGIN
IF EXISTS (SELECT TOP 1 1 FROM dbo.[BatchH]
WHERE BATCHNO IN ( SELECT CAST(value AS INT) FROM STRING_SPLIT(@BatchNumber, ',')))
BEGIN
UPDATE dbo.[BatchH]
SET EFTFileNumber = @EFTNo,
EFTDate = @Today,
EFTSent = 'Y',
REF = 'EFT' + CAST(@EFTNo AS VARCHAR)
WHERE BATCHNO IN ( SELECT CAST(value AS INT) FROM STRING_SPLIT(@BatchNumber, ','))
END
END
BEGIN
UPDATE dbo.[BatchDetails]
SET HeadBatch = @NewBatchNo
FROM BatchDetails
INNER JOIN dbo.[BatchH] ON dbo.BatchDetails.BATCHNO = dbo.BatchH.BATCHNO
WHERE dbo.BatchH.EFTSent = 'Y'
AND dbo.BatchH.EFTDate = @Today
AND dbo.BatchH.EFTFileNumber = @EFTNo
END
--5) CREATE A NEW NOMINAL LEDGER RECORD WITH THE NEW BATCH NUMBER AND TOTAL EFT AMOUNT
BEGIN
INSERT INTO dbo.[NominalLedger]
(
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate]
)
VALUES (
@Bank,
'',
@NewBatchNo,
@NewPref,
@Today,
'EFT: '+ CAST(@EFTNo AS VARCHAR),
'EFT File No: ' +CAST(@EFTNo AS VARCHAR),
'',
'',
'',
ABS(@EFTTotal) * -1,
ABS(@EFTTotal) * -1 / 1.27,
@CurrPer,
@CurrYear,
@Today,
0,
''
)
END
--6) DELETE THE OLD NOMINAL LEDGER EFT RECORD
BEGIN
DELETE
FROM dbo.[NominalLedger]
WHERE dbo.[NominalLedger].CODE = @Bank
AND dbo.[NominalLedger].BATCHNO
IN ( SELECT dbo.[BatchH].BATCHNO from dbo.[batchH]
WHERE dbo.BatchH.EFTSent = 'Y'
AND dbo.BatchH.EFTDate = @Today
AND dbo.BatchH.EFTFileNumber = @EFTNo
)
END
--7) IF THERE IS ALREADY A BANK RECON RECORD THEN DELETE THE OLDER RECORD AND INSERT A NEW RECORD WITH NEW EFT VALUES
-- FIRST CHECK IF THERE IS A BANK RECN RECORD
DECLARE @RecordTransactionId INT
DECLARE @RecNo INT
DECLARE @OSRecNo INT
DECLARE @NomTranId INT
SELECT @RecordTransactionId = MAX(RECORDID)
FROM dbo.[BankRecTransactions] BRT
INNER JOIN dbo.BatchH BAH
ON BAH.BATCHNO = BRT.BATCH
WHERE BAH.EFTSent = 'Y'
AND BAH.EFTDate = @Today
AND BAH.EFTFileNumber = @EFTNo
IF(@RecordTransactionId > 0)
BEGIN
SELECT @RecNo = RecNo, @OSRecNo = OSRecNo
FROM dbo.BankRecTransactions
WHERE dbo.BankRecTransactions.RecordId = @RecordTransactionId
SELECT @NomTranId = RecordID
FROM NominalLedger
WHERE BatchNo = @NewBatchNo
AND PRef = @NewPref
AND Code = @Bank
DELETE
FROM dbo.BankRecTransactions
WHERE dbo.BankRecTransactions.BankAc = @Bank
AND dbo.BankRecTransactions.BATCH
IN ( SELECT dbo.[BatchH].BATCHNO from dbo.[batchH]
WHERE dbo.BatchH.EFTSent = 'Y'
AND dbo.BatchH.EFTDate = @Today
AND dbo.BatchH.EFTFileNumber = @EFTNo
)
INSERT
INTO dbo.[BankRecTransactions]
(
[BANKAC],
[TYPE],
[DATE],
[REF],
[BATCH],
[PREF],
[NARR],
[VALUE],
[OSRECNO],
[RECNO],
[TICKED],
[NomTransId]
)
VALUES (
@Bank,
'P',
@Today,
'EFT: ' + CAST(@EFTNo AS VARCHAR),
@NewBatchNo,
@NewPref,
'EFT File No: ' + CAST(@EFTNo AS VARCHAR),
ABS(@EFTTotal),
@OSRecNo,
@RecNo,
'',
@NomTranId
)
END
----8) DELETE THE RECORDS FROM EFFTTABLE
BEGIN
DELETE
FROM dbo.[EFTTable]
END
----9) INSERT THE NEW RECORD INTO THE EFTTABLE
BEGIN
CREATE
TABLE #TempTable
(
BatchNo INT,
Code VARCHAR(10),
BatchType CHAR(1),
ClientBank VARCHAR(100),
BatchValue DECIMAL,
Supp VARCHAR(10),
PayClient CHAR(1),
ClientCode VARCHAR(10),
OnceOffPayment CHAR(1),
CaseAssCode VARCHAR(10)
)
INSERT
INTO #TempTable
(
BatchNo,
Code,
BatchType,
ClientBank,
BatchValue,
Supp,
PayClient,
ClientCode,
OnceOffPayment,
CaseAssCode
)
SELECT BATCHNO,
Code,
[TYPE],
CLIENTBANK,
[VALUE],
SUPP,
PayClient,
ClientCode,
OnceOffPayment,
CaseAssCode
FROM dbo.[BatchH]
WHERE BATCHNO IN ( SELECT CAST(value AS INT) FROM STRING_SPLIT(@BatchNumber, ','))
--BASED ON TYPE,CODE AND OTHER CONDITIONS INSERT THE DATA FROM THE TABLE INTO THE EFTTABLE
DECLARE @Bcode VARCHAR(10),
@BType CHAR(1),
@BClientBank VARCHAR(100),
@BValue DECIMAL,
@BSupp VARCHAR(10),
@BPayClient CHAR(1),
@BClientCode VARCHAR(10),
@BOnceOffPayment CHAR(1),
@BCaseAssCode VARCHAR(10)
-- DECLARE THE CURSOR TO ITERATE THROUGH THE TEMP TABLE TO INSERT RECORDS TO EFTTABLE
DECLARE cursor_temp CURSOR FOR
SELECT Code,
BatchType,
ClientBank,
BatchValue,
Supp,
PayClient,
ClientCode,
OnceOffPayment,
CaseAssCode
FROM #TempTable
OPEN cursor_temp
FETCH NEXT FROM cursor_temp
INTO @Bcode,@BType,@BClientBank,@BValue,@BSupp,@BPayClient,@BClientCode,@BOnceOffPayment,@BCaseAssCode
WHILE @@FETCH_STATUS = 0
BEGIN
IF @BType ='R' OR @BType = 'T'
BEGIN
IF @BClientBank <> ''
BEGIN
INSERT
INTO dbo.[EFTTable]
(
[BankCode],
[BankName],
[BankSortCode],
[BankAccountNum],
[BankIBAN],
[BankBIC],
[BANKOIN],
[PaymentDate],
[Narrative],
[SequenceNo],
[FileName],
[PayeeType],
[PayeeCode],
[PayeeName],
[PayeeSortCode],
[PayeeAccountNum],
[PayeeIBAN],
[PayeeBIC],
[PayeeAmount],
[NoofTransactions],
[SumofTransactions]
)
SELECT @BClientBank,
@AccountName,
@SortCode,
@AccountNumber,
@Iban,
@Bic,
@OrgNumber,
@PaymentDate,
@Narrative,
@NextFileNumber,
'Download',
'T',
@Bcode,
NOM.ACCOUNTNAME,
NOM.SORTCODE,
NOM.ACCOUNTNO,
NOM.IBAN,
NOM.BIC,
@BValue,
0,
0
FROM dbo.[Nominal] NOM
WHERE NOM.CODE = @Bcode
END
END
ELSE
BEGIN
IF @BSupp <> ''
BEGIN
INSERT
INTO dbo.[EFTTable]
(
[BankCode],
[BankName],
[BankSortCode],
[BankAccountNum],
[BankIBAN],
[BankBIC],
[BANKOIN],
[PaymentDate],
[Narrative],
[SequenceNo],
[FileName],
[PayeeType],
[PayeeCode],
[PayeeName],
[PayeeSortCode],
[PayeeAccountNum],
[PayeeIBAN],
[PayeeBIC],
[PayeeAmount],
[NoofTransactions],
[SumofTransactions]
)
SELECT @Bcode,
@AccountName,
@SortCode,
@AccountNumber,
@Iban,
@Bic,
@OrgNumber,
@PaymentDate,
@Narrative,
@NextFileNumber,
'Download',
'S',
@BSupp,
SUPP.[NAME],
SUPP.BankSortCode,
SUPP.BankAccNo,
SUPP.IBAN,
SUPP.BIC,
@BValue,
0,
0
FROM dbo.[Suppliers] SUPP
WHERE SUPP.CODE = @BSupp
END
ELSE IF @BPayClient = 'Y' AND @BClientCode <> ''
BEGIN
INSERT
INTO dbo.[EFTTable]
(
[BankCode],
[BankName],
[BankSortCode],
[BankAccountNum],
[BankIBAN],
[BankBIC],
[BANKOIN],
[PaymentDate],
[Narrative],
[SequenceNo],
[FileName],
[PayeeType],
[PayeeCode],
[PayeeName],
[PayeeSortCode],
[PayeeAccountNum],
[PayeeIBAN],
[PayeeBIC],
[PayeeAmount],
[NoofTransactions],
[SumofTransactions]
)
SELECT @Bcode,
@AccountName,
@SortCode,
@AccountNumber,
@Iban,
@Bic,
@OrgNumber,
@PaymentDate,
@Narrative,
@NextFileNumber,
'Download',
'C',
@BClientCode,
CNT.[Name],
CNT.BankSortCode,
CNT.BankAccNo,
CNT.IBAN,
CNT.BIC,
@BValue,
0,
0
FROM dbo.[Contacts] CNT
WHERE CNT.CODE = @BClientCode
END
ELSE IF @BOnceOffPayment = 'Y' AND @BCaseAssCode <> ''
BEGIN
INSERT
INTO dbo.[EFTTable]
(
[BankCode],
[BankName],
[BankSortCode],
[BankAccountNum],
[BankIBAN],
[BankBIC],
[BANKOIN],
[PaymentDate],
[Narrative],
[SequenceNo],
[FileName],
[PayeeType],
[PayeeCode],
[PayeeName],
[PayeeSortCode],
[PayeeAccountNum],
[PayeeIBAN],
[PayeeBIC],
[PayeeAmount],
[NoofTransactions],
[SumofTransactions]
)
SELECT @Bcode,
@AccountName,
@SortCode,
@AccountNumber,
@Iban,
@Bic,
@OrgNumber,
@PaymentDate,
@Narrative,
@NextFileNumber,
'Download',
'A',
@BCaseAssCode,
CAN.[Name],
CAN.BankSortCode,
CAN.BankAccNo,
CAN.IBAN,
CAN.BIC,
@BValue,
0,
0
FROM dbo.[CaseAssociatesNames] CAN
WHERE CAN.CODE = @BCaseAssCode
END
END
FETCH NEXT FROM cursor_temp
INTO @Bcode,@BType,@BClientBank,@BValue,@BSupp,@BPayClient,@BClientCode,@BOnceOffPayment,@BCaseAssCode
END
CLOSE cursor_temp;
DEALLOCATE cursor_temp;
END
-- UPDATE THE EFTTTABLE NoofTransactions AND SumofTransactions COLUMNS
BEGIN
DECLARE @NoOfTransaction INT
SELECT @NoOfTransaction = COUNT(*)
FROM dbo.[EFTTable]
WHERE SequenceNo = @EFTNo
IF EXISTS (SELECT TOP 1 1 FROM dbo.[EFTTable] WHERE SequenceNo = @EFTNo)
BEGIN
UPDATE dbo.[EFTTable]
SET NoofTransactions = @NoOfTransaction,
SumofTransactions = @TotalAmount
WHERE SequenceNo = @EFTNo
END
END
--10) UPDATE THE REF IN ALL LEDGER TABLES AND THE CONTROL TABLE AS WELL
IF EXISTS (SELECT TOP 1 1 FROM dbo.[MatterLedger]
WHERE BATCHNO IN ( SELECT CAST(value AS INT) FROM STRING_SPLIT(@BatchNumber, ',')))
BEGIN
UPDATE dbo.[MatterLedger]
SET REF = 'EFT' + CAST(@EFTNo AS VARCHAR)
WHERE BATCHNO IN ( SELECT CAST(value AS INT) FROM STRING_SPLIT(@BatchNumber, ','))
END
IF EXISTS (SELECT TOP 1 1 FROM dbo.[NominalLedger]
WHERE BATCHNO IN ( SELECT CAST(value AS INT) FROM STRING_SPLIT(@BatchNumber, ',')))
BEGIN
UPDATE dbo.[NominalLedger]
SET REF = 'EFT' + CAST(@EFTNo AS VARCHAR)
WHERE BATCHNO IN ( SELECT CAST(value AS INT) FROM STRING_SPLIT(@BatchNumber, ','))
END
IF EXISTS (SELECT TOP 1 1 FROM dbo.[SupplierLedger]
WHERE BATCHNO IN ( SELECT CAST(value AS INT) FROM STRING_SPLIT(@BatchNumber, ',')))
BEGIN
UPDATE dbo.[SupplierLedger]
SET REF = 'EFT' + CAST(@EFTNo AS VARCHAR)
WHERE BATCHNO IN ( SELECT CAST(value AS INT) FROM STRING_SPLIT(@BatchNumber, ','))
END
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_CreateMemorizeRBatch', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateMemorizeRBatch]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateMemorizeRBatch] (
@BATCHNO INT,
@POSTFWD CHAR(1) = '',
@TYPE CHAR(1),
@CODE CHAR(10),
@BRANCH VARCHAR(3) = '',
@PREF INT,
@REF CHAR(10),
@DATE DATETIME,
@FEE VARCHAR(10) = '',
@MATTER VARCHAR(20) = '',
@SUPP CHAR(10) = '',
@NARR CHAR(150),
@VALUE DECIMAL(17, 2),
@SUBTOT DECIMAL(17, 2) = 0.00,
@POSTED CHAR(1),
@CLIENTAC CHAR(1),
@PERNO SMALLINT,
@YEAR SMALLINT,
@PAYEE CHAR(60) = '',
@OUTLAYTOT DECIMAL(17, 2) = 0.00,
@VATTOT DECIMAL(17, 2) = 0.00,
@FEETOT DECIMAL(17, 2) = 0.00,
@INVCR CHAR(1),
@THIRDPARTY CHAR(1) = '',
@USERCODE CHAR(8) = '',
@ENTRYDATE DATETIME,
@CLIENTBANK CHAR(10) = '',
@CURRENCY CHAR(1) = 'E',
@CURRENCYVALUE DECIMAL(17, 2) = 0.00,
@CUROUTLAYTOT DECIMAL(17, 2) = 0.00,
@CURVATTOT DECIMAL(17, 2) = 0.00,
@CURFEETOT DECIMAL(17, 2) = 0.00,
@RECNO INT = 0,
@SINGLELINE CHAR(1) = '',
@TEMPLATE CHAR(10) = '',
@CHEQUEREQNO INT = 0,
@WRITEDOWN DATETIME = NULL,
@WRITEBACKHOURS DECIMAL(7, 2) = 0.00,
@WRITEBACKVALUE DECIMAL(13, 2) = 0.00,
@CORRECTCOPY CHAR(1) = '',
@CREDITINVOICENO INT = 0,
@DRAFTBILLNO INT = 0,
@EFTSENT CHAR(1) = 'N',
@EFTDATE DECIMAL = NULL,
@EFTFILENUMBER INT = NULL,
@EFTFILENAME VARCHAR(500) = NULL,
@EFTYORN CHAR(1) = 'N',
@CLIENTCODE VARCHAR(10) = NULL,
@PAYCLIENT CHAR(1) = 'N',
@ONCEOFFPAYMENT CHAR(1) = 'N',
@CASEASSCODE VARCHAR(6) = NULL,
@EFTEMAILYORN CHAR(1) = 'N',
@FNCODE VARCHAR(10) = NULL,
@PAYMETHOD INT = 0,
@CLEARDATE DATETIME = NULL)
AS
/*******************************************************************************************************
* Save the RBatch Header even BatchH is not present (Used of Insert mode) *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateMemorizeRBatch] *
* *
* Modification History: *
* 2024-10-10 Balamurugan.C Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @XML NVARCHAR(MAX)
SET @XML = (SELECT @BATCHNO AS [BATCHNO],
@POSTFWD AS [POSTFWD],
@TYPE AS [TYPE],
@CODE AS [CODE],
@BRANCH AS [BRANCH],
@PREF AS [PREF],
@REF AS [REF],
@DATE AS [DATE],
@FEE AS [FEE],
@MATTER AS [MATTER],
@SUPP AS [SUPP],
@NARR AS [NARR],
@VALUE AS [VALUE],
@SUBTOT AS [SUBTOT],
@POSTED AS [POSTED],
@CLIENTAC AS [CLIENTAC],
@PERNO AS [PERNO],
@YEAR AS [YEAR],
@PAYEE AS [PAYEE],
@OUTLAYTOT AS [OUTLAYTOT],
@VATTOT AS [VATTOT],
@FEETOT AS [FEETOT],
@INVCR AS [INVCR],
@THIRDPARTY AS [THIRDPARTY],
@USERCODE AS [USERCODE],
@ENTRYDATE AS [ENTRYDATE],
@CLIENTBANK AS [CLIENTBANK],
CASE WHEN @TYPE IN ('T','B')
THEN ''
ELSE @CURRENCY
END AS [CURRENCY],
@CUROUTLAYTOT AS [CUROUTLAYTOT],
@CURFEETOT AS [CURFEETOT],
@RECNO AS [RECNO],
@SINGLELINE AS [SINGLELINE],
@TEMPLATE AS [TEMPLATE],
@CHEQUEREQNO AS [CHEQUEREQNO],
@WRITEDOWN AS [WRITEDOWN],
@WRITEBACKHOURS AS [WRITEBACKHOURS],
@WRITEBACKVALUE AS [WRITEBACKVALUE],
@CORRECTCOPY AS [CORRECTCOPY],
@CREDITINVOICENO AS [CreditInvoiceNo],
@DRAFTBILLNO AS [DraftBillNo],
@EFTSENT AS [EFTSent],
@EFTDATE AS [EFTDate],
@EFTFILENUMBER AS [EFTFileNumber],
@EFTFILENAME AS [EFTFileName],
@EFTYORN AS [EFTYorN],
@CLIENTCODE AS [ClientCode],
@PAYCLIENT AS [PayClient],
@ONCEOFFPAYMENT AS [OnceOffPayment],
@CASEASSCODE AS [CaseAssCode],
@EFTEMAILYORN AS [EFTEmailYorN],
@PAYMETHOD AS [PaymentMethod],
@CLEARDATE AS [ClearedDate]
FOR XML RAW('RBatchH'))
SET @XML = N'' + @XML + N''
EXEC [dbo].[KAAS_CreateMemorizeRBatchXML] @XML
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_CreateMemorizeRBatchXML', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateMemorizeRBatchXML]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateMemorizeRBatchXML]
(@XML NVARCHAR(MAX))
AS
/*******************************************************************************************************
* Save the RBatch Header even BatchH is not present (Used of Insert mode) *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateMemorizeRBatchXML] *
* *
* Modification History: *
* 2024-10-10 Balamurugan.C Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
DECLARE @iSL INT
DECLARE @BASECURRENCY CHAR(1)
DECLARE @IECONVERT DECIMAL(17,6)
DECLARE @VATEXCLUDE VARCHAR(1)
DECLARE @CURRENTYEAR INT
DECLARE @CURRENTPERIOD INT
SELECT @BASECURRENCY = [CON].[BASECURRENCY],
@IECONVERT = [CON].[IECONVERT],
@VATEXCLUDE = [CON].[VATEXCLUDE],
@CURRENTYEAR = [CON].[YEAR],
@CURRENTPERIOD = [CON].[CURPER]
FROM [dbo].[control] AS [CON]
BEGIN TRY
EXEC sp_xml_preparedocument @iSL OUTPUT, @XML
END TRY
BEGIN CATCH
EXEC sp_xml_preparedocument @iSL OUTPUT, N''
END CATCH
DECLARE @USER VARCHAR(100)
DECLARE @BATCHNO INT
DECLARE @POSTFWD CHAR(1)
DECLARE @TYPE CHAR(1)
DECLARE @CODE CHAR(10)
DECLARE @BRANCH VARCHAR(3)
DECLARE @PREF INT
DECLARE @REF CHAR(10)
DECLARE @DATE DATETIME
DECLARE @FEE VARCHAR(10)
DECLARE @MATTER VARCHAR(20)
DECLARE @SUPP CHAR(10)
DECLARE @NARR CHAR(150)
DECLARE @VALUE DECIMAL(17, 2)
DECLARE @SUBTOT DECIMAL(17, 2)
DECLARE @POSTED CHAR(1)
DECLARE @CLIENTAC CHAR(1)
DECLARE @PERNO SMALLINT
DECLARE @YEAR SMALLINT
DECLARE @PAYEE CHAR(60)
DECLARE @OUTLAYTOT DECIMAL(17, 2)
DECLARE @VATTOT DECIMAL(17, 2)
DECLARE @FEETOT DECIMAL(17, 2)
DECLARE @INVCR CHAR(1)
DECLARE @THIRDPARTY CHAR(1)
DECLARE @USERCODE CHAR(8)
DECLARE @ENTRYDATE DATETIME
DECLARE @CLIENTBANK CHAR(10)
DECLARE @CURRENCY CHAR(1)
DECLARE @CURRENCYVALUE DECIMAL(17, 2)
DECLARE @CUROUTLAYTOT DECIMAL(17, 2)
DECLARE @CURVATTOT DECIMAL(17, 2)
DECLARE @CURFEETOT DECIMAL(17, 2)
DECLARE @RECNO INT
DECLARE @SINGLELINE CHAR(1)
DECLARE @TEMPLATE CHAR(10)
DECLARE @CHEQUEREQNO INT
DECLARE @WRITEDOWN DATETIME
DECLARE @WRITEBACKHOURS DECIMAL(7, 2)
DECLARE @WRITEBACKVALUE DECIMAL(13, 2)
DECLARE @CORRECTCOPY CHAR(1)
DECLARE @CreditInvoiceNo INT
DECLARE @DraftBillNo INT
DECLARE @EFTSent CHAR(1)
DECLARE @EFTDate DATETIME
DECLARE @EFTFileNumber INT
DECLARE @EFTFileName VARCHAR(500)
DECLARE @EFTYorN CHAR(1)
DECLARE @ClientCode VARCHAR(10)
DECLARE @PayClient CHAR(1)
DECLARE @OnceOffPayment CHAR(1)
DECLARE @CaseAssCode VARCHAR(6)
DECLARE @EFTEmailYorN CHAR(1)
DECLARE @HandlerCode VARCHAR(10)
DECLARE @PaymentMethod INT
DECLARE @ClearedDate DATETIME
SELECT @USER = ISNULL([XML].[User], ''),
@BATCHNO = ISNULL([XML].[BATCHNO], 0),
@POSTFWD = ISNULL([XML].[POSTFWD], ''),
@TYPE = ISNULL([XML].[TYPE], ''),
@CODE = ISNULL([XML].[CODE], ''),
@BRANCH = ISNULL([XML].[BRANCH], ''),
@PREF = ISNULL([XML].[PREF], 0),
@REF = ISNULL([XML].[REF], ''),
@DATE = ISNULL([XML].[DATE], NULL),
@FEE = ISNULL([XML].[FEE], ''),
@MATTER = ISNULL([XML].[MATTER], ''),
@SUPP = ISNULL([XML].[SUPP], ''),
@NARR = ISNULL([XML].[NARR], ''),
@VALUE = ISNULL([XML].[VALUE], 0),
@SUBTOT = ISNULL([XML].[SUBTOT], 0),
@POSTED = ISNULL([XML].[POSTED], 'N'),
@CLIENTAC = ISNULL([XML].[CLIENTAC], 'N'),
@PERNO = ISNULL([XML].[PERNO], @CURRENTPERIOD),
@YEAR = ISNULL([XML].[YEAR], @CURRENTYEAR),
@PAYEE = ISNULL([XML].[PAYEE], ''),
@OUTLAYTOT = ISNULL([XML].[OUTLAYTOT], 0),
@VATTOT = ISNULL([XML].[VATTOT], 0),
@FEETOT = ISNULL([XML].[FEETOT], 0),
@INVCR = ISNULL([XML].[INVCR], ''),
@THIRDPARTY = ISNULL([XML].[THIRDPARTY], ''),
@USERCODE = ISNULL([XML].[USERCODE], ''),
@ENTRYDATE = ISNULL([XML].[ENTRYDATE], DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)),
@CLIENTBANK = ISNULL([XML].[CLIENTBANK], ''),
@CURRENCY = ISNULL([XML].[CURRENCY], @BASECURRENCY),
@CURRENCYVALUE = [XML].[CURRENCYVALUE],
@CUROUTLAYTOT = [XML].[CUROUTLAYTOT],
@CURVATTOT = [XML].[CURVATTOT],
@CURFEETOT = [XML].[CURFEETOT],
@RECNO = ISNULL([XML].[RECNO], 0),
@SINGLELINE = ISNULL([XML].[SINGLELINE], ''),
@TEMPLATE = ISNULL([XML].[TEMPLATE], ''),
@CHEQUEREQNO = ISNULL([XML].[CHEQUEREQNO], 0),
@WRITEDOWN = ISNULL([XML].[WRITEDOWN], NULL),
@WRITEBACKHOURS = ISNULL([XML].[WRITEBACKHOURS], 0),
@WRITEBACKVALUE = ISNULL([XML].[WRITEBACKVALUE], 0),
@CORRECTCOPY = ISNULL([XML].[CORRECTCOPY], ''),
@CreditInvoiceNo = ISNULL([XML].[CreditInvoiceNo], 0),
@DraftBillNo = ISNULL([XML].[DraftBillNo], 0),
@EFTSent = ISNULL([XML].[EFTSent], 'N'),
@EFTDate = ISNULL([XML].[EFTDate], NULL),
@EFTFileNumber = ISNULL([XML].[EFTFileNumber], NULL),
@EFTFileName = ISNULL([XML].[EFTFileName], ''),
@EFTYorN = ISNULL([XML].[EFTYorN], 'N'),
@ClientCode = ISNULL([XML].[ClientCode], ''),
@PayClient = ISNULL([XML].[PayClient], 'N'),
@OnceOffPayment = ISNULL([XML].[OnceOffPayment], 'N'),
@CaseAssCode = ISNULL([XML].[CaseAssCode], ''),
@EFTEmailYorN = ISNULL([XML].[EFTEmailYorN], 'N'),
@HandlerCode = ISNULL([XML].[HandlerCode], NULL),
@PaymentMethod = ISNULL([XML].[PaymentMethod], NULL),
@ClearedDate = ISNULL([XML].[ClearedDate], NULL)
FROM OPENXML(@iSL, N'Data/RBatchH')
WITH ([User] VARCHAR(10) '../@User',
[BATCHNO] INT '@BATCHNO',
[POSTFWD] CHAR(1) '@POSTFWD',
[TYPE] CHAR(1) '@TYPE',
[CODE] CHAR(10) '@CODE',
[BRANCH] VARCHAR(3) '@BRANCH',
[PREF] INT '@PREF',
[REF] CHAR(10) '@REF',
[DATE] DATETIME '@DATE',
[FEE] VARCHAR(10) '@FEE',
[MATTER] VARCHAR(20) '@MATTER',
[SUPP] CHAR(10) '@SUPP',
[NARR] CHAR(150) '@NARR',
[VALUE] DECIMAL(17, 2) '@VALUE',
[SUBTOT] DECIMAL(17, 2) '@SUBTOT',
[POSTED] CHAR(1) '@POSTED',
[CLIENTAC] CHAR(1) '@CLIENTAC',
[PERNO] SMALLINT '@PERNO',
[YEAR] SMALLINT '@YEAR',
[PAYEE] CHAR(60) '@PAYEE',
[OUTLAYTOT] DECIMAL(17, 2) '@OUTLAYTOT',
[VATTOT] DECIMAL(17, 2) '@VATTOT',
[FEETOT] DECIMAL(17, 2) '@FEETOT',
[INVCR] CHAR(1) '@INVCR',
[THIRDPARTY] CHAR(1) '@THIRDPARTY',
[USERCODE] CHAR(8) '@USERCODE',
[ENTRYDATE] DATETIME '@ENTRYDATE',
[CLIENTBANK] CHAR(10) '@CLIENTBANK',
[CURRENCY] CHAR(1) '@CURRENCY',
[CURRENCYVALUE] DECIMAL(17, 2) '@CURRENCYVALUE',
[CUROUTLAYTOT] DECIMAL(17, 2) '@CUROUTLAYTOT',
[CURVATTOT] DECIMAL(17, 2) '@CURVATTOT',
[CURFEETOT] DECIMAL(17, 2) '@CURFEETOT',
[RECNO] INT '@RECNO',
[SINGLELINE] CHAR(1) '@SINGLELINE',
[TEMPLATE] CHAR(10) '@TEMPLATE',
[CHEQUEREQNO] INT '@CHEQUEREQNO',
[WRITEDOWN] DATETIME '@WRITEDOWN',
[WRITEBACKHOURS] DECIMAL(7, 2) '@WRITEBACKHOURS',
[WRITEBACKVALUE] DECIMAL(13, 2) '@WRITEBACKVALUE',
[CORRECTCOPY] CHAR(1) '@CORRECTCOPY',
[CreditInvoiceNo] INT '@CreditInvoiceNo',
[DraftBillNo] INT '@DraftBillNo',
[EFTSent] CHAR(1) '@EFTSent',
[EFTDate] DATETIME '@EFTDate',
[EFTFileNumber] INT '@EFTFileNumber',
[EFTFileName] VARCHAR(500) '@EFTFileName',
[EFTYorN] CHAR(1) '@EFTYorN',
[ClientCode] VARCHAR(10) '@ClientCode',
[PayClient] CHAR(1) '@PayClient',
[OnceOffPayment] CHAR(1) '@OnceOffPayment',
[CaseAssCode] VARCHAR(6) '@CaseAssCode',
[EFTEmailYorN] CHAR(1) '@EFTEmailYorN',
[HandlerCode] VARCHAR(10) '@HandlerCode',
[PaymentMethod] INT '@PaymentMethod',
[ClearedDate] DATETIME '@ClearedDate') AS [XML]
BEGIN TRY
EXEC sp_xml_removedocument @iSL
END TRY
BEGIN CATCH
END CATCH
/*
Prepare dates by handling timezones
Remove time component for backwards compatibility
with Clarion apps
*/
SET @DATE = DATEADD(DAY, DATEDIFF(DAY, 0, @DATE ), 0)
SET @ENTRYDATE = DATEADD(DAY, DATEDIFF(DAY, 0, @ENTRYDATE ), 0)
SET @WRITEDOWN = DATEADD(DAY, DATEDIFF(DAY, 0, @WRITEDOWN ), 0)
SET @EFTDate = DATEADD(DAY, DATEDIFF(DAY, 0, @EFTDate ), 0)
SET @ClearedDate = DATEADD(DAY, DATEDIFF(DAY, 0, @ClearedDate), 0)
BEGIN
INSERT INTO [dbo].[RBatchH] (
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[MATTER],
[SUPP],
[NARR],
[VALUE],
[SUBTOT],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[OUTLAYTOT],
[VATTOT],
[FEETOT],
[INVCR],
[THIRDPARTY],
[USERCODE],
[ENTRYDATE],
[CLIENTBANK],
[CURRENCY],
[CURRENCYVALUE],
[CUROUTLAYTOT],
[CURVATTOT],
[CURFEETOT],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[WRITEDOWN],
[WRITEBACKHOURS],
[WRITEBACKVALUE],
[CORRECTCOPY],
[CreditInvoiceNo],
[DraftBillNo],
[EFTSent],
[EFTDate],
[EFTFileNumber],
[EFTFileName],
[EFTYorN],
[ClientCode],
[PayClient],
[OnceOffPayment],
[CaseAssCode])
SELECT @BATCHNO,
@TYPE,
@CODE,
@PREF,
@REF,
@DATE,
@FEE,
@MATTER,
@SUPP,
@NARR,
@VALUE,
@SUBTOT,
@POSTED,
@CLIENTAC,
@PERNO,
@YEAR,
@PAYEE,
@OUTLAYTOT,
@VATTOT,
@FEETOT,
@INVCR,
@THIRDPARTY,
@USERCODE,
@ENTRYDATE,
@CLIENTBANK,
@CURRENCY,
ISNULL(@CURRENCYVALUE, CONVERT(DECIMAL(19, 2),
CASE
WHEN @TYPE = 'T'
THEN (CASE WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'I'
THEN @VALUE / 0.787564
WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'E'
THEN @VALUE * 0.787564
ELSE 0 END)
WHEN @TYPE = 'B'
THEN (CASE WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'I'
THEN @SUBTOT / 0.787564
WHEN @CURRENCY = @BASECURRENCY AND @CURRENCY = 'E'
THEN @SUBTOT * 0.787564
ELSE 0 END)
ELSE (@VALUE * @IECONVERT) END)),
ISNULL(@CUROUTLAYTOT, CONVERT(DECIMAL(19, 2), @OUTLAYTOT * @IECONVERT)),
ISNULL(@CURVATTOT, CONVERT(DECIMAL(19, 2), @VATTOT * @IECONVERT)),
ISNULL(@CURFEETOT, CONVERT(DECIMAL(19, 2), @FEETOT * @IECONVERT)),
@RECNO,
@SINGLELINE,
@TEMPLATE,
@CHEQUEREQNO,
@WRITEDOWN,
@WRITEBACKHOURS,
@WRITEBACKVALUE,
@CORRECTCOPY,
@CreditInvoiceNo,
@DraftBillNo,
@EFTSent,
@EFTDate,
@EFTFileNumber,
@EFTFileName,
@EFTYorN,
@ClientCode,
@PayClient,
@OnceOffPayment,
@CaseAssCode
IF((SELECT COUNT(1) FROM dbo.[RBatchH] WHERE [BatchNo] = @BATCHNO) > 0)
BEGIN
INSERT INTO
[dbo].[RBatchD] (
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[DATE],
[NARR],
[MATTER],
[VALUE],
[VATCODE],
[VATVAL],
[OUTLAY],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCWRITEOFF],
[CASEASSCODE],
[ONCEOFFPAYMENT],
[PAYCLIENT],
[CLIENTCODE],
[SUPP],
[OUTLAYCODE],
[FEE],
[PAYEE],
[THIRDPARTY])
SELECT [BATCHNO],
@Type,
[CODE],
[PREF],
@DATE,
[NARR],
[MATTER],
[VALUE],
[VATCODE],
[VATVAL],
[OUTLAY],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCWRITEOFF],
[CASEASSCODE],
[ONCEOFFPAYMENT],
[PAYCLIENT],
[CLIENTCODE],
[SUPP],
[OUTLAYCODE],
[FEE],
[PAYEE],
[THIRDPARTY]
FROM [DBO].[BatchDetails]
WHERE BATCHNO=@BATCHNO
END
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_CreateNominalAccountDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateNominalAccountDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateNominalAccountDetails]
(
@Code VARCHAR(10) = '',
@Retired VARCHAR(1) = '',
@Description VARCHAR(30) = '',
@Type VARCHAR(6) = '',
@Pbtype CHAR(1) = '',
@Currency CHAR(1) = '',
@Repseq VARCHAR(4) = '',
@Clientbankacct CHAR(1) = '',
@Deposit CHAR(1) = '',
@DepositType VARCHAR(4) = '',
@Allowchqreq CHAR(1) = '',
@Chqprinter VARCHAR(40) = '',
@Lastchqno INT = 0,
@Bank VARCHAR(40) = '',
@BankBranch VARCHAR(40) = '',
@Address VARCHAR(120) ='',
@BankType CHAR(1) = '',
@BankPhone VARCHAR(50) = '',
@AccountNo VARCHAR(10) = '',
@SortCode VARCHAR(10) = '',
@AccountName VARCHAR(50) = '',
@Signatories VARCHAR(255) = '',
@DateOpened DATETIME = null,
@DateClosed DATETIME = null,
@Iban VARCHAR(34) ='',
@Bic VARCHAR(20) ='',
@OrgIdNum VARCHAR(34) ='',
@Branch VARCHAR(40) = '',
@Mode VARCHAR(10) =''
)
AS
/*******************************************************************************************************
* Save the Nominal Account Details *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateNominalAccountDetails] *
* *
* Modification History: *
* Balamurugan 24-May-2021 Created *
* Prabhu.V 15-Feb-2021 Script Not handled properly for Insert and Edit *
* and here delete script not required *
* Balamurugan.C 01-Mar-2022 Modified - Handled TCL Statements *
* Vignesh.M 01-Jun-2022 Modified - Branch column implemented *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
/*CHECK THE DATA ALREADY PRESENT OR NOT*/
IF( @Mode = 'EDIT' )
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Nominal]
WHERE [Code] = @CODE
)
BEGIN
/*IF DATA ALREADY PRESENT UPDATE PROCESS*/
UPDATE [dbo].[Nominal]
SET [Desc] = @Description,
[Type] = @Type,
[Pb] = @Pbtype,
[Retired] = @Retired,
[Currency] = @Currency,
[Seq] = @Repseq,
[ClientAc] = @Clientbankacct,
[DepositYN] = @Deposit,
[DepositType] = @DepositType,
[ChequeReq] = @Allowchqreq,
[ChequePrinter] = @Chqprinter,
[LastNo] = @Lastchqno,
[Bank] = @Bank,
[BankBranch] = @BankBranch,
[Branch] = @Branch,
[BankAddress] = @Address,
[BankType] = @BankType,
[BankPhone] = @BankPhone,
[AccountNo] = @AccountNo,
[SortCode] = @SortCode,
[AccountName] = @AccountName,
[WithdrawNames] = @Signatories,
[AcOpened] = @DateOpened,
[AcClosed] = @DateClosed,
[Iban] = @Iban,
[Bic] = @Bic,
[OrgIDNumber] = @OrgIdNum
WHERE [Code] = @Code
END
END
ELSE
BEGIN
/*INSERT PROCESS IF DATA NOT PRESENT*/
IF NOT EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Nominal]
WHERE [Code] = @CODE
)
BEGIN
INSERT
INTO [dbo].[nominal]
(
[Code],
[Desc],
[Type],
[Pb],
[Retired],
[Currency],
[Seq],
[Clientac],
[Deposityn],
[DepositType],
[ChequeReq],
[ChequePrinter],
[LastNo],
[Bank],
[BankBranch],
[Branch],
[BankAddress],
[BankType],
[BankPhone],
[AccountNo],
[SortCode],
[AccountName],
[WithdrawNames],
[AcOpened],
[AcClosed],
[Iban],
[Bic],
[OrgIDNumber]
)
VALUES (
@Code, /*[Code]*/
@Description, /*[Desc]*/
@Type, /*[Type]*/
@Pbtype, /*[Pb]*/
@Retired, /*[Retired]*/
@Currency, /*[Currency]*/
@Repseq, /*[Seq]*/
@Clientbankacct, /*[Clientac]*/
@Deposit, /*[Deposityn]*/
@DepositType, /*[DepositType]*/
@Allowchqreq, /*[ChequeReq]*/
@Chqprinter, /*[ChequePrinter]*/
@Lastchqno, /*[LastNo]*/
@Bank, /*[Bank]*/
@BankBranch, /*[BankBranch]*/
@Branch, /*[Branch]*/
@Address, /*[BankAddress]*/
@BankType, /*[BankType]*/
@BankPhone, /*[BankPhone]*/
@AccountNo, /*[AccountNo]*/
@SortCode, /*[SortCode]*/
@AccountName, /*[AccountName]*/
@Signatories, /*[WithdrawNames]*/
@DateOpened, /*[AcOpened]*/
@DateClosed, /*[AcClosed]*/
@Iban, /*[Iban]*/
@Bic, /*[Bic]*/
@OrgIdNum /*[OrgIDNumber]*/
)
END
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CreateNominalBudget'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateNominalBudget]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateNominalBudget]
(
@CODE VARCHAR(10),
@BRANCH VARCHAR(10),
@YEAR INT,
@PERIOD INT,
@BUDGET DECIMAL(19,2),
@RECORDID INT
)
AS
/*******************************************************************************************************
* Save the Nominal Budget *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateNominalBudget] *
* *
* Modification History: *
* 2021-09-27 Revathy D Created *
* 2022-03-01 Balamurugan C Modified - Handled TCL Statements and formatting *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
IF EXISTS
(
SELECT TOP 1 *
FROM [dbo].[NOMINALBUDGETS]
WHERE [RECORDID] = @RECORDID
)
BEGIN
UPDATE [NBT]
SET
[NBT].[Code] = @CODE,
[NBT].[Branch] = @BRANCH,
[NBT].[Year] = @YEAR,
[NBT].[Period] = @PERIOD,
[NBT].[Budget] = @BUDGET
FROM [dbo].[NominalBudgets] [NBT]
WHERE [NBT].[RecordID] = @RECORDID
END
ELSE
BEGIN
INSERT
INTO [dbo].[NominalBudgets]
(
[Code],
[Branch],
[Year],
[Period],
[Budget]
)
VALUES
(
@CODE, /*[Code]*/
@BRANCH, /*[Branch]*/
@YEAR, /*[Year]*/
@PERIOD, /*[Period]*/
@BUDGET /*[Budget]*/
)
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_CreateSAMControlAccountLog',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_CreateSAMControlAccountLog]
GO
CREATE PROCEDURE [dbo].[KAAS_CreateSAMControlAccountLog]
(
@HandlerCode VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Control Account differences will stored in start of the day with handler code *
* Each day one record need to be there *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateSAMControlAccountLog] *
* *
* Modification History: *
* 2021-12-23 Balamurugan C Created *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
* 2024-12-12 Balamurugan.C Modified - Added the logic to stored nominal,client and office *
total in log table in daily basis *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
IF NOT EXISTS
(
SELECT TOP 1 1
FROM [dbo].[ControlAccountLog]
WHERE CAST([EntryDate] AS DATE) = CAST(dbo.KEYHM_FNConvertDateToUTC(GETDATE(), @HandlerCode) AS DATE)
)
BEGIN
DECLARE @LastBatch INT = 0,
@CurrentDate DATE = NULL;
SET @CurrentDate = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KEYHM_FNConvertDateToUTC](GETDATE(), @HandlerCode)), 0)
DECLARE @FinalTable TABLE
(
[ClientAcMatterBalance] DECIMAL(17,2) NULL,
[OutlayAcMatterBalance] DECIMAL(17,2) NULL,
[BillingAcMatterBalance] DECIMAL(17,2) NULL,
[SupplierAcMatterBalance] DECIMAL(17,2) NULL,
[ClientControlAccounts] DECIMAL(17,2) NULL,
[OutlayControlAccounts] DECIMAL(17,2) NULL,
[BillingControlAccounts] DECIMAL(17,2) NULL,
[SupplierControlAccounts] DECIMAL(17,2) NULL,
[NominalControlTotal] DECIMAL(17,2) NULL,
[ClientBankTotal] DECIMAL(17,2) NULL,
[OfficeBankTotal] DECIMAL(17,2) NULL
)
INSERT INTO @FinalTable
(
[ClientAcMatterBalance],
[OutlayAcMatterBalance],
[BillingAcMatterBalance],
[SupplierAcMatterBalance],
[ClientControlAccounts],
[OutlayControlAccounts],
[BillingControlAccounts],
[SupplierControlAccounts],
[NominalControlTotal],
[ClientBankTotal],
[OfficeBankTotal]
)
SELECT SUM(ClientBal) AS [ClientAcMatterBalance],
SUM(OutlayBal) AS [OutlayAcMatterBalance],
SUM(DebtBal) AS [BillingAcMatterBalance],
(SELECT SUM(SupplierLedger.ORIGINAL)
AS Creditors
FROM [dbo].[SupplierLedger] WITH(NOLOCK) ) AS [SupplierAcMatterBalance],
(
SELECT SUM(ISNULL(VALUE,0)) AS ClientControlAc
FROM [dbo].[NominalLedger] WITH(NOLOCK)
WHERE [CODE]=(SELECT [CNT].[CLIENT]
FROM [dbo].[Control] [CNT] WITH(NOLOCK))
AND YEAR=(SELECT [CNT].[YEAR]
FROM [dbo].[Control] [CNT] WITH(NOLOCK))) AS [ClientControlAccounts],
(
SELECT ISNULL(SUM(ISNULL(VALUE,0)),0) AS OutlayControlAc
FROM [dbo].[NominalLedger] WITH(NOLOCK)
WHERE[CODE]=(SELECT [CNT].[OUTLAY]
FROM [dbo].[Control] [CNT] WITH(NOLOCK))
AND YEAR=(SELECT [CNT].[YEAR]
FROM [dbo].[Control] [CNT] WITH(NOLOCK))) AS [OutlayControlAccounts],
(
SELECT ISNULL(SUM(ISNULL(VALUE,0)),0) AS DebtorsControlAc
FROM [dbo].[NominalLedger] WITH(NOLOCK)
WHERE CODE=(SELECT [CNT].[DEBTORS] FROM [dbo].[Control] [CNT] WITH(NOLOCK))
AND YEAR=(SELECT [CNT].[YEAR]
FROM [dbo].[Control] [CNT] WITH(NOLOCK))) AS [BillingControlAccounts],
(SELECT ISNULL(SUM(ISNULL(VALUE,0)),0) AS CreditorsControlAc
FROM [dbo].[NominalLedger] WITH(NOLOCK)
WHERE [CODE]=(SELECT [CNT].[CREDITOR]
FROM [dbo].[Control] [CNT] WITH(NOLOCK))
AND YEAR=(SELECT [CNT].[YEAR]
FROM [dbo].[Control] [CNT] WITH(NOLOCK))) AS [SupplierControlAccounts],
(SELECT ISNULL(SUM([Value]),0) AS NominalControlTtl
FROM [dbo].[NominalLedger] WITH(NOLOCK)
WHERE YEAR=(SELECT [CNT].[YEAR]
FROM [dbo].[Control] [CNT] WITH(NOLOCK))) AS [NominalControlTotal],
(SELECT ISNULL(SUM(ISNULL([NOL].[VALUE],0)),0) AS ClientBankTtl
FROM [dbo].[NominalLedger] [NOL] WITH(NOLOCK)
INNER JOIN [dbo].[Nominal] [NOM] WITH(NOLOCK)
ON [NOL].[CODE] = [NOM].[CODE]
WHERE ([NOM].[TYPE] = 'Bank')
AND ([NOM].[CLIENTAC] = 'Y')
AND YEAR=(SELECT [CNT].[YEAR] FROM [dbo].[Control] [CNT] WITH(NOLOCK))) AS [ClientBankTotal],
(SELECT ISNULL(SUM(ISNULL([NOL].[VALUE],0)),0) AS OfficeBankTtl
FROM [dbo].[NominalLedger] [NOL] WITH(NOLOCK)
INNER JOIN [dbo].[Nominal] [NOM] WITH(NOLOCK)
ON [NOL].[CODE] = [NOM].[CODE]
WHERE ([NOM].[TYPE] = 'Bank')
AND ([NOM].[CLIENTAC] <> 'Y')
AND YEAR=(SELECT [CNT].[YEAR] FROM [dbo].[Control] [CNT] WITH(NOLOCK))) AS [OfficeBankTotal]
FROM [dbo].[Matters] WITH(NOLOCK)
SELECT @LastBatch = [LastBatch] FROM [dbo].[Control] WITH(NOLOCK)
INSERT INTO [dbo].[ControlAccountLog]
(
[User],
[EntryDate],
[ModifiedDate],
[LastBatchNo],
[ClientAcMatterBalance],
[OutlayAcMatterBalance],
[BillingAcMatterBalance],
[SupplierAcMatterBalance],
[ClientControlAccounts],
[OutlayControlAccounts],
[BillingControlAccounts],
[SupplierControlAccounts],
[NominalControlTotal],
[ClientBankTotal],
[OfficeBankTotal]
)
SELECT @HandlerCode,
@CurrentDate,
@CurrentDate,
@LastBatch,
[ClientAcMatterBalance],
[OutlayAcMatterBalance],
[BillingAcMatterBalance],
[SupplierAcMatterBalance],
[ClientControlAccounts],
[OutlayControlAccounts],
[BillingControlAccounts],
[SupplierControlAccounts],
[NominalControlTotal],
[ClientBankTotal],
[OfficeBankTotal]
FROM @FinalTable
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CreateSAMCreditorMultiPayment'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateSAMCreditorMultiPayment]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateSAMCreditorMultiPayment]
(
@SupplierCode VARCHAR(15) = '',
@SupplierName VARCHAR(50) = '',
@BankCode VARCHAR(15) = '',
@UnpaidValue DECIMAL(18,2) = 0,
@PayValue DECIMAL(18,2) = 0,
@AllocBatch INT = 0,
@AllocPref INT = 0,
@AllocRef VARCHAR(20) = '',
@RecordID INT = 0,
@SumOfPayValue DECIMAL(18,2) = 0,
@TotalRecordCount INT = 0,
@Mode VARCHAR(20) = '',
@UnPaidNarr VARCHAR(100) = '',
@CurrentBatch INT = 0,
@UpdateBatch INT = 0
)
AS
/*******************************************************************************************************
* Create Multi Payment Batch and Details *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateSAMCreditorMultiPayment] *
* *
* Modification History: *
* 2021-10-12 Balamurugan C Created *
* 2021-10-18 Balamurugan C Modified - Removed Supplier Ledger Update Part *
* 2021-12-24 Balamurugan C Modified - Changed @UpdateBatch from default string to int *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
* 2024-10-03 Balamurugan.C Modified - Error Fixed: Ticket ID: 18968 *
HeadBatch and HeadPref Swapped and *
changed the Batch insert logic *
* 2024-10-07 Balamurugan.C Modified - Added the unpaid narrative as parameter for narrative *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DECLARE @LastBatch INT = 0,
@LastPref INT = 0,
@Year INT = 0,
@CurPer INT = 0,
@LastPrefDetails INT = 0,
@DefaultCreditor VARCHAR(15) = ''
(
SELECT @LastBatch = [LASTBATCH],
@LastPref = [LASTPREF],
@Year = [Year],
@CurPer = CurPer,
@DefaultCreditor = [Creditor]
FROM [dbo].[Control]
)
IF(@Mode = 'BatchHeader')
BEGIN
DECLARE @NewBatchNo INT = 0,
@NewPref INT = 0
SET @NewBatchNo = @LastBatch + 1;
SET @NewPref = @LastPref + 1;
/* INSERT TO BATCH HEADER TABLE */
IF NOT EXISTS
(
SELECT TOP 1 1
FROM [dbo].[BatchH]
WHERE [BatchNo] = @NewBatchNo
)
INSERT INTO [dbo].[BatchH]
( [Batchno],
[Postfwd],
[Type],
[Code],
[Branch],
[Pref],
[Ref],
[Date],
[Fee],
[Matter],
[Supp],
[Narr],
[Value],
[Subtot],
[Posted],
[ClientAc],
[PerNo],
[Year],
[Payee],
[OutlayTot],
[VatTot],
[FeeTot],
[Invcr],
[ThirdParty],
[UserCode],
[EntryDate],
[ClientBank],
[Currency],
[CurrencyValue],
[CuroutlayTot],
[CurVatTot],
[CurFeeTot],
[RecNo],
[Singleline],
[Template],
[ChequeReqNo],
[WriteDown],
[WriteBackHours],
[WriteBackValue],
[CorrectCopy],
[CreditInvoiceNo],
[DraftBillNo],
[EFTSent],
[EFTDate],
[EFTFileNumber],
[EFTFileName],
[EFTYorN],
[ClientCode],
[PayClient],
[OnceOffPayment],
[CaseAssCode],
[EFTEmailYorN],
[HandlerCode],
[PaymentMethod],
[ClearedDate]
)
VALUES
(
@NewBatchNo, /*[Batchno],*/
'', /*[Postfwd],*/
'M', /*[Type],*/
@BankCode, /*[Code],*/
'', /*[Branch],*/
@NewPref, /*[Pref],*/
'EFT', /*[Ref],*/
CAST(GETUTCDATE() AS DATE), /*[Date],*/
'', /*[Fee],*/
'', /*[Matter],*/
'', /*[Supp],*/
'', /*[Narr],*/
@SumOfPayValue, /*[Value],*/
0.00, /*[Subtot],*/
'N', /*[Posted],*/
'', /*[ClientAc],*/
@CurPer, /*[PerNo],*/
@Year, /*[Year],*/
'', /*[Payee],*/
0.00, /*[OutlayTot],*/
0.00, /*[VatTot],*/
0.00, /*[FeeTot],*/
'', /*[Invcr],*/
'', /*[ThirdParty],*/
'keyhouse', /*[UserCode],*/
CAST(GETUTCDATE() AS DATE), /*[EntryDate],*/
'', /*[ClientBank],*/
'E', /*[Currency],*/
@SumOfPayValue, /*[CurrencyValue],*/
0.00, /*[CuroutlayTot],*/
0.00, /*[CurVatTot],*/
0.00, /*[CurFeeTot],*/
0, /*[RecNo],*/
'', /*[Singleline],*/
'', /*[Template],*/
0, /*[ChequeReqNo],*/
NULL, /*[WriteDown],*/
0.00, /*[WriteBackHours],*/
0.00, /*[WriteBackValue],*/
'', /*[CorrectCopy],*/
0, /*[CreditInvoiceNo],*/
0, /*[DraftBillNo],*/
'N', /*[EFTSent],*/
NULL, /*[EFTDate],*/
0, /*[EFTFileNumber],*/
'', /*[EFTFileName],*/
'Y', /*[EFTYorN],*/
'', /*[ClientCode],*/
'N', /*[PayClient],*/
'N', /*[OnceOffPayment],*/
'', /*[CaseAssCode],*/
'N', /*[EFTEmailYorN],*/
'', /*[HandlerCode],*/
0, /*[PaymentMethod],*/
NULL /*[ClearedDate]*/
)
UPDATE [dbo].[Control]
SET [LASTPREF] = @NewPref,
[LASTBATCH] = @NewBatchNo
WHERE [NEXT_DOC_NO] = 0
SELECT @NewBatchNo 'ResultBatch'
END
IF(@Mode='Record')
BEGIN
DECLARE @NewHeadBatch INT = 0,
@NewHeadPref INT = 0;
SELECT @LastPrefDetails = @LastPref + 1 ,
@NewHeadBatch = @LastBatch + 1
UPDATE [dbo].[Control]
SET [LASTPREF] = @LastPrefDetails;
SELECT @NewHeadPref = [LASTPREF] + 1 FROM [dbo].[Control]
/* INSERT TO BATCH DETAILS TABLE */
INSERT INTO [dbo].[Batchdetails]
(
[BatchNo],
[Type],
[Code],
[Pref],
[Ref],
[Date],
[Fee],
[Branch],
[Narr],
[Matter],
[Supp],
[Value],
[Vatcode],
[Vatval],
[Clientyn],
[Outlay],
[Pending],
[Year],
[Perno],
[Entrycurrency],
[Currencyvalue],
[Currencyvat],
[Outlaycode],
[Thirdparty],
[Payee],
[Headpref],
[Headbatch],
[Allocbatch],
[Allocpref],
[Allocref],
[Allocvalue],
[Allocwriteoff],
[Psupp],
[Undetaking],
[Caseasscode],
[Onceoffpayment],
[Payclient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay]
)
VALUES
(
@CurrentBatch, /*[BatchNo],*/
'M', /*[Type],*/
@DefaultCreditor, /*[Code],*/
@LastPrefDetails, /*[Pref],*/
'EFT', /*[Ref],*/
CAST(GETUTCDATE() AS DATE), /*[Date],*/
'', /*[Fee],*/
'', /*[Branch],*/
'Auto Pd '+@SupplierName+' bill(s) for '+ CONVERT(varchar(20),@UnPaidNarr), /*[Narr],*/
'', /*[Matter],*/
@SupplierCode, /*[Supp],*/
@PayValue, /*[Value],*/
'', /*[Vatcode],*/
0.00, /*[Vatval],*/
'', /*[Clientyn],*/
'N', /*[Outlay],*/
'', /*[Pending],*/
@Year, /*[Year],*/
@CurPer, /*[Perno],*/
'E', /*[Entrycurrency],*/
@PayValue, /*[Currencyvalue],*/
0.00, /*[Currencyvat],*/
'', /*[Outlaycode],*/
'', /*[Thirdparty],*/
@SupplierName, /*[Payee],*/
@NewHeadPref, /*[Headpref],*/
@NewHeadBatch, /*[Headbatch],*/
@AllocBatch, /*[Allocbatch],*/
@AllocPref, /*[Allocpref],*/
@AllocRef, /*[Allocref],*/
@PayValue, /*[Allocvalue],*/
'N', /*[Allocwriteoff],*/
@SupplierCode, /*[Psupp],*/
0, /*[Undetaking],*/
'', /*[Caseasscode],*/
'N', /*[Onceoffpayment],*/
'N', /*[Payclient],*/
'', /*[ClientCode],*/
'N', /*[EFTEmailYorN],*/
0, /*[RegisteredPost],*/
0 /*[PreBilledOutlay]*/
)
UPDATE [dbo].[Control]
SET [LASTPREF] = @NewHeadPref,
[LASTBATCH] = @NewHeadBatch
IF(@TotalRecordCount=1)
BEGIN
UPDATE [dbo].[CreditorsList]
SET [OsValue] = CONVERT(NUMERIC(18,2),[OsValue]) + CONVERT(NUMERIC(18,2),ABS(@PayValue))
WHERE [RecordID] = @RecordID
END
SELECT @CurrentBatch 'ResultBatch'
END
IF(@Mode='Batch')
BEGIN
UPDATE [dbo].[Control]
SET [LASTBATCH] = @UpdateBatch
WHERE [NEXT_DOC_NO] = 0
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CreateSAMReconHistoryRecord'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateSAMReconHistoryRecord]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateSAMReconHistoryRecord]
(
@BankAc VARCHAR(10) = '',
@RecDate DATE = NULL,
@OsLodgements DECIMAL(17,2) = 0,
@OsCheques DECIMAL(17,2) = 0,
@BankBal DECIMAL(17,2) = 0,
@ClosingBal DECIMAL(17,2) = 0,
@Diff DECIMAL(17,2) = 0,
@HandlerCode VARCHAR(10) = '',
@Mode VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Bank Reconciliation -Insert Update Recon History Records *
* Proceed Functionality -Update Nominal Ledger RecNo Columns based on BankAccount *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateSAMReconHistoryRecord] *
* *
* Modification History: *
* 2022-01-19 Balamurugan C Created *
* 2022-01-20 Balamurugan C Modified - Added where condition for nominal ledger *
* 2022-02-08 Balamurugan C Modified - Added date condition for proceed functionality *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
IF(@Mode = 'SAVE')
BEGIN
IF NOT EXISTS
(
SELECT TOP 1 1
FROM [dbo].[BankRecHistory]
WHERE [BankAc] = @BankAc
AND [RecNo] = 0
)
BEGIN
INSERT
INTO [dbo].[BankRecHistory]
(
[RecNo],
[BankAc],
[RecDate],
[DateComplete],
[LastRec],
[Currency],
[OpeningBalance],
[Lodgements],
[Cheques],
[OsLodgements],
[OsCheques],
[BankBal],
[ClosingBal],
[Diff]
)
VALUES
(
0,
@BankAc,
dbo.KEYHM_FNConvertDateToUTC(@RecDate, @HandlerCode),
CAST(dbo.KEYHM_FNConvertDateToUTC(GETDATE(), @HandlerCode) AS DATE),
0,
'',
0.00,
0.00,
0.00,
@OsLodgements,
@OsCheques,
@BankBal,
@ClosingBal,
@Diff
)
END
ELSE
BEGIN
UPDATE [dbo].[BankRecHistory]
SET [RecDate] = dbo.KEYHM_FNConvertDateToUTC(@RecDate, @HandlerCode),
[ClosingBal] = @ClosingBal,
[OsLodgements] = @OsLodgements,
[OsCheques] = @OsCheques,
[BankBal] = @BankBal
WHERE [BankAc] = @BankAc
AND [RECNO] = 0
END
END
IF(@Mode = 'PROCEED')
BEGIN
UPDATE [dbo].[NominalLedger]
SET [RECNO] = 1
WHERE RTRIM([Code]) = @BankAc
AND [Date] <= @RecDate
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CreateSAMReconOutstandingTransRecord'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateSAMReconOutstandingTransRecord]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateSAMReconOutstandingTransRecord]
(
@Type VARCHAR(1) = '',
@Date DATETIME = NULL,
@Ref VARCHAR(8) = '',
@Narr VARCHAR(60) = '',
@Value DECIMAL(17,2) = 0,
@BankCode VARCHAR(10) = '',
@RecordId INT = 0,
@HandlerCode VARCHAR(10) = '',
@Mode VARCHAR(15) = ''
)
AS
/*******************************************************************************************************
* Bank Reconciliation -Insert Update Recon Outstanding Trans REcords *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateSAMReconOutstandingTransRecord] *
* *
* Modification History: *
* 2022-01-18 Balamurugan C Created *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
IF(@Mode = 'INSERTUPDATE')
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[BankRecOutstandingTrans]
WHERE [RecordId] = @RecordId
)
BEGIN
UPDATE [dbo].[BankRecOutstandingTrans]
SET [Type] = @Type,
[Date] = dbo.KEYHM_FNConvertDateToUTC(CAST(@Date AS DATE), @HandlerCode),
[Ref] = @Ref,
[Narr] = @Narr,
[Value] = @Value
WHERE [RecordId] = @RecordId
END
ELSE
BEGIN
INSERT
INTO [dbo].[BankRecOutstandingTrans]
(
[BankAc],
[Type],
[Date],
[Ref],
[Batch],
[Pref],
[Narr],
[Value],
[RecNo]
)
VALUES
(
@BankCode,
@Type,
dbo.KEYHM_FNConvertDateToUTC(CAST(@Date AS DATE), @HandlerCode),
@Ref,
0,
dbo.KAAS_FN_ConvertDateToClarion(dbo.KEYHM_FNConvertDateToUTC(GETDATE(),''))
+ ([dbo].[ky_ConvertTimeToClarion](dbo.KEYHM_FNConvertDateToUTC(GETDATE(),'')) / 100 ),
@Narr,
@Value,
0
)
END
END
ELSE
BEGIN
DELETE
FROM [dbo].[BankRecOutstandingTrans]
WHERE [RecordId] = @RecordId
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CreateSAMWriteOffIssueInvoice'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateSAMWriteOffIssueInvoice]
END
GO
CREATE PROCEDURE [dbo].[KAAS_CreateSAMWriteOffIssueInvoice]
(
@ParamsBatchNo INT = 0,
@ParamsType VARCHAR(1) = '',
@ParamsRef VARCHAR(20) = '',
@ParamsDate DATETIME = NULL,
@ParamsAllocBatch INT = 0,
@HandlerCode VARCHAR(15) = ''
)
AS
/*******************************************************************************************************
* Create Write Off Issue Invoice Batch Details *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateSAMWriteOffIssueInvoice] *
* *
* Modification History: *
* 2022-01-12 Balamurugan C Created *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRANSACTION
DECLARE
@LastPref INT = 0,
@CurrentYear INT = 0,
@CurPer INT = 0,
@SystemCurrenyValue DECIMAL(17,6) = 0
SELECT @CurrentYear = [Year],
@CurPer = [CurPer],
@SystemCurrenyValue = [IECONVERT]
FROM [dbo].[Control]
DECLARE @Code CHAR(10) ,
@Ref CHAR(10) ,
@Fee VARCHAR(10) ,
@Branch VARCHAR(3) ,
@Narr CHAR(100) ,
@Matter VARCHAR(20) ,
@Supp CHAR(10) ,
@Value DECIMAL(17, 2),
@VatCode CHAR(1) ,
@VatVal DECIMAL(17, 2),
@ClientYN CHAR(1) ,
@Outlay CHAR(1) ,
@Pending CHAR(1) ,
@EntryCurrency CHAR(1) ,
@CurrencyVat DECIMAL(17, 2),
@OutlayCode CHAR(4) ,
@ThirdParty CHAR(1) ,
@Payee CHAR(60) ,
@HeadPref INT ,
@HeadBatch INT ,
@AllocBatch INT ,
@AllocPref INT ,
@AllocRef CHAR(10) ,
@AllocValue DECIMAL(17, 2),
@AllocWriteOff CHAR(1) ,
@Psupp CHAR(10) ,
@Undetaking SMALLINT ,
@CaseAssCode VARCHAR(6) ,
@OnceOffPayment CHAR(1) ,
@PayClient CHAR(1) ,
@ClientCode VARCHAR(10) ,
@EFTemailYorN CHAR(1) ,
@RegisteredPost INT ,
@PreBilledOutlay BIT ,
@KeyId INT
DECLARE batchDetails_Cursor CURSOR FOR
SELECT [Code],
[Ref],
[Fee],
[Branch],
[Narr],
[Matter],
[Supp],
[Value],
[VatCode],
[VatVal],
[ClientYN],
[Outlay],
[Pending],
[EntryCurrency],
[CurrencyVat],
[OutlayCode],
[ThirdParty],
[Payee],
[HeadPref],
[HeadBatch],
[AllocBatch],
[AllocPref],
[AllocRef],
[AllocValue],
[Allocwriteoff],
[Psupp],
[Undetaking],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay]
FROM [dbo].[BatchDetails]
WHERE [BatchNo] = @ParamsAllocBatch
OPEN batchDetails_Cursor
FETCH
NEXT FROM batchDetails_Cursor
INTO
@Code
,@Ref
,@Fee
,@Branch
,@Narr
,@Matter
,@Supp
,@Value
,@VatCode
,@VatVal
,@ClientYN
,@Outlay
,@Pending
,@EntryCurrency
,@CurrencyVat
,@OutlayCode
,@ThirdParty
,@Payee
,@HeadPref
,@HeadBatch
,@AllocBatch
,@AllocPref
,@AllocRef
,@AllocValue
,@AllocWriteOff
,@Psupp
,@Undetaking
,@CaseAssCode
,@OnceOffPayment
,@PayClient
,@ClientCode
,@EFTemailYorN
,@RegisteredPost
,@PreBilledOutlay
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @LastPref = [LastPref] + 1 FROM [dbo].[Control] WITH(NOLOCK) WHERE [NEXT_DOC_NO] = 0
INSERT
INTO [dbo].[Batchdetails]
(
[BatchNo],
[Type],
[Code],
[Pref],
[Ref],
[Date],
[Fee],
[Branch],
[Narr],
[Matter],
[Supp],
[Value],
[Vatcode],
[Vatval],
[Clientyn],
[Outlay],
[Pending],
[Year],
[Perno],
[Entrycurrency],
[CurrencyValue],
[Currencyvat],
[Outlaycode],
[Thirdparty],
[Payee],
[Headpref],
[Headbatch],
[Allocbatch],
[Allocpref],
[Allocref],
[Allocvalue],
[Allocwriteoff],
[Psupp],
[Undetaking],
[Caseasscode],
[Onceoffpayment],
[Payclient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay]
)
( SELECT @ParamsBatchNo /*[BatchNo]*/
,@ParamsType /*[Type]*/
,@Code /*[Code]*/
,@LastPref /*[Pref]*/
,@Ref /*[Ref]*/
,dbo.KEYHM_FNConvertDateToUTC(@ParamsDate,@HandlerCode) /*[Date]*/
,@Fee /*[Fee]*/
,@Branch /*[Branch]*/
,@Narr /*[Narr]*/
,@Matter /*[Matter]*/
,@Supp /*[Supp]*/
,@Value /*[Value]*/
,@VatCode /*[Vatcode]*/
,@VatVal /*[Vatval]*/
,@ClientYN /*[Clientyn]*/
,@Outlay /*[Outlay]*/
,@Pending /*[Pending]*/
,@CurrentYear /*[Year]*/
,@CurPer /*[Perno]*/
,@EntryCurrency /*[Entrycurrency]*/
,@Value * @SystemCurrenyValue /*[CurrencyValue]*/
,@CurrencyVat /*[Currencyvat]*/
,@OutlayCode /*[Outlaycode]*/
,@ThirdParty /*[Thirdparty]*/
,@Payee /*[Payee]*/
,@HeadPref /*[Headpref]*/
,@HeadBatch /*[Headbatch]*/
,@AllocBatch /*[Allocbatch]*/
,@AllocPref /*[Allocpref]*/
,@AllocRef /*[Allocref]*/
,@AllocValue /*[Allocvalue]*/
,@AllocWriteOff /*[Allocwriteoff]*/
,@Psupp /*[Psupp]*/
,@Undetaking /*[Undetaking]*/
,@CaseAssCode /*[Caseasscode]*/
,@OnceOffPayment /*[Onceoffpayment]*/
,@PayClient /*[Payclient]*/
,@ClientCode /*[ClientCode]*/
,@EFTemailYorN /*[EFTEmailYorN]*/
,@RegisteredPost /*[RegisteredPost]*/
,@PreBilledOutlay /*[PreBilledOutlay]*/
)
UPDATE [dbo].[Control]
SET [LASTPREF] = (@LastPref)
WHERE [NEXT_DOC_NO] = 0
SELECT @LastPref = [LastPref] + 1 FROM [dbo].[Control] WITH(NOLOCK) WHERE [NEXT_DOC_NO] = 0
FETCH
NEXT FROM batchDetails_Cursor
INTO
@Code
,@Ref
,@Fee
,@Branch
,@Narr
,@Matter
,@Supp
,@Value
,@VatCode
,@VatVal
,@ClientYN
,@Outlay
,@Pending
,@EntryCurrency
,@CurrencyVat
,@OutlayCode
,@ThirdParty
,@Payee
,@HeadPref
,@HeadBatch
,@AllocBatch
,@AllocPref
,@AllocRef
,@AllocValue
,@AllocWriteOff
,@Psupp
,@Undetaking
,@CaseAssCode
,@OnceOffPayment
,@PayClient
,@ClientCode
,@EFTemailYorN
,@RegisteredPost
,@PreBilledOutlay
END
CLOSE batchDetails_Cursor;
DEALLOCATE batchDetails_Cursor;
COMMIT TRANSACTION
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_DeleteBatchDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_DeleteBatchDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_DeleteBatchDetails] (
@KeyId DECIMAL)
AS
/*******************************************************************************************************
* Delete Batch Details *
* *
* Stored Procedure Name : [dbo].[KAAS_DeleteBatchDetails] *
* *
* Modification History: *
* 2021-04-10 Revathy D Created *
* 2022-02-11 John Ginnane Revised to match standard *
* 2022-02-16 Balamurugan.C Added new line end of the procedure *
* 2022-02-25 Balamurugan.C Modified - Handled TCL Statements *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
DELETE [BAD]
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[KEYID] = @KeyId
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_DeleteBatchHeader',N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_DeleteBatchHeader]
END
GO
CREATE PROCEDURE [dbo].[KAAS_DeleteBatchHeader] (
@BatchNo INT)
AS
/*******************************************************************************************************
* Delete Batch Header *
* *
* Stored Procedure Name : [dbo].[KAAS_DeleteBatchHeader] *
* *
* Modification History: *
* 2021-04-10 Revathy D Created *
* 2022-02-11 John Ginnane Revised to match standard *
* 2022-02-16 Balamurugan.C Added new line end of the procedure *
* 2022-02-23 Balamurugan.C Modified - Handled TCL Statements *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
DELETE [BAH]
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BatchNo
DELETE [BAD]
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[BATCHNO] = @BatchNo
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = N'KAAS_DeleteDebtorsLedgerAllocation'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_DeleteDebtorsLedgerAllocation]
END
GO
CREATE PROCEDURE [dbo].[KAAS_DeleteDebtorsLedgerAllocation] (
@KeyId INT,
@Result TINYINT OUTPUT)
AS
/*******************************************************************************************************
* Used to Insert supplier ledger allocation *
* Stored Procedure Name: [dbo].[KAAS_DeleteDebtorsLedgerAllocation] *
* *
* Modification History: *
* 2021-03-26 Natarajan S Created *
* 2021-03-28 Natarajan S Modified - Added @result parameter after update *
* 2023-11-30 John Ginnane #17517 - Fixed conversion issues and refactored code *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON;
-- Make sure record exists
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[Allocations] AS [ALO]
WHERE [ALO].[KEYID] = @KeyId)
BEGIN
SET @Result = 0
RETURN
END
BEGIN TRY
BEGIN TRANSACTION
DECLARE @INVBATCHNO INT
DECLARE @RECBATCHNO INT
DECLARE @VALUE DECIMAL(17, 2)
DECLARE @FEES DECIMAL(17, 2)
DECLARE @OUTLAY DECIMAL(17, 2)
DECLARE @VAT DECIMAL(17, 2)
DECLARE @AllNo INT
SELECT @INVBATCHNO = [ALO].[BATCHNO],
@RECBATCHNO = [ALO].[ABATCHNO],
@VALUE = [ALO].[VALUE],
@FEES = [ALO].[FEES],
@OUTLAY = [ALO].[OUTLAY],
@VAT = [ALO].[VAT],
@AllNo = [ALO].[AllNo]
FROM [dbo].[Allocations] AS [ALO]
WHERE [ALO].[KEYID] = @KeyId
UPDATE [DTL]
SET [DTL].[OSVALUE] = CASE WHEN [DTL].[Type]= 'R'
THEN [DTL].[OSValue] + @Value
ELSE [DTL].[OSValue] - @Value END,
[DTL].[OSFEES] = CASE WHEN [DTL].[Type] = 'R'
THEN [DTL].[OSFees] + @FEES
ELSE [DTL].[OSFees] - @FEES END,
[DTL].[OSOUTLAY] = CASE WHEN [DTL].[Type] = 'R'
THEN [DTL].[OSOutlay] + @OUTLAY
ELSE [DTL].[OSOutlay] - @OUTLAY END,
[DTL].[OSVat] = CASE WHEN [DTL].[Type] = 'R'
THEN [DTL].[OSVat] + @VAT
ELSE [DTL].[OSVat] - @VAT END
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[BatchNo] IN (@INVBATCHNO, @RECBATCHNO)
DELETE [ALO]
FROM [dbo].[Allocations] AS [ALO]
WHERE [ALO].[AllNo] = @AllNo
SET @Result = 1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @Result = 0
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_DeleteMasters',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_DeleteMasters]
GO
CREATE PROCEDURE
[dbo].[KAAS_DeleteMasters]
(
@TableName varchar(100),
@CodeVal varchar(20),
@Result int =0 Output
)
AS
/*******************************************************************************************************
* Delete Master details *
* select * from departments *
* Stored Procedure Name : [dbo].[KAAS_DeleteMasters] 'departments', '' *
* *
* Modification History: *
* 2021-06-17 Natarajan S Created
* 2021-03-01 Ghayathri.S.V Modified Delete Logic for Category Type
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
IF(@TableName = 'CategoryType')
BEGIN
DELETE
FROM [dbo].[CategoryType]
WHERE CategoryType = @CodeVal
SET @Result =1
END
ELSE
DECLARE @Qry Nvarchar(max)
DECLARE @ColCode varchar(20)
SET @ColCode = ( SELECT
C.COLUMN_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS T
JOIN
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE C
ON
C.CONSTRAINT_NAME=T.CONSTRAINT_NAME
WHERE
C.TABLE_NAME=@TableName
AND
T.CONSTRAINT_TYPE='PRIMARY KEY'
)
SET @Qry = 'DELETE FROM '+@TableName+' WHERE ' +@ColCode+'=''' +@CodeVal +''''
SET @Result =1
exec sp_executesql @Qry
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'Kaas_DeleteMatterledger'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[Kaas_DeleteMatterledger]
END
go
CREATE PROCEDURE [dbo].[Kaas_DeleteMatterledger] (@LRef INT,@Result TINYINT OUTPUT)
AS
/*******************************************************************************************************
* *
* Used to delete the matter ledger *
* Stored Procedure Name: [dbo].[Kaas_DeleteMatterledger] *
* Modification History: *
* 2021-04-12 Natarajan S Created *
*******************************************************************************************************/
BEGIN
DELETE FROM
[dbo].[MatterLedger]
WHERE
[LREF]=@LRef
SET @Result = 1
END
go
IF OBJECT_ID(N'KAAS_DeleteNominalAccountDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_DeleteNominalAccountDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_DeleteNominalAccountDetails]
(
@Code VARCHAR(10) = '',
@Mode VARCHAR(10) = '',
@User VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Validate and Delete the Nominal Account Details
* *
* Stored Procedure Name : [dbo].[KAAS_DeleteNominalAccountDetails] *
* *
* Modification History: *
* Ghayathri.S.V 09-Feb-2022 Created *
* Balamurugan.C 01-Mar-2022 Modified - Handled TCL Statements and formatting *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
IF(@Mode = 'VALIDATE')
BEGIN
DECLARE @Balance DECIMAL(17,2) = 0,
@deleteCount INT = 0,
@LastYearBalanceOne DECIMAL(17,2) = 0,
@LastYearBalanceTwo DECIMAL(17,2) = 0,
@LastYearBalanceThree DECIMAL(17,2) = 0,
@LastYearBalanceFour DECIMAL(17,2) = 0,
@LastYearBalanceFive DECIMAL(17,2) = 0,
@LastYearBalanceSix DECIMAL(17,2) = 0,
@LastYearBalanceSeven DECIMAL(17,2) = 0,
@LastYearBalanceEight DECIMAL(17,2) = 0,
@LastYearBalanceNine DECIMAL(17,2) = 0,
@LastYearBalanceTen DECIMAL(17,2) = 0,
@LastYearBalanceEleven DECIMAL(17,2) = 0,
@LastYearBalanceTweleve DECIMAL(17,2) = 0,
@CurrentDate DATE = NULL
SELECT @Balance = [Balance],
@LastYearBalanceOne = [LASTYEAR1],
@LastYearBalanceTwo = [LASTYEAR2],
@LastYearBalanceThree = [LASTYEAR3],
@LastYearBalanceFour = [LASTYEAR4],
@LastYearBalanceFive = [LASTYEAR5],
@LastYearBalanceSix = [LASTYEAR6],
@LastYearBalanceSeven = [LASTYEAR7],
@LastYearBalanceEight = [LASTYEAR8],
@LastYearBalanceNine = [LASTYEAR9],
@LastYearBalanceTen = [LASTYEAR10],
@LastYearBalanceEleven = [LASTYEAR11],
@LastYearBalanceTweleve = [LASTYEAR12]
FROM [dbo].[Nominal]
WHERE [Code] = @Code
SET @CurrentDate = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](GETDATE(), @User)), 0)
IF(@Balance <> 0 OR
(@LastYearBalanceOne <> 0 OR @LastYearBalanceTwo <> 0 OR @LastYearBalanceThree <> 0 OR @LastYearBalanceFour <> 0
OR @LastYearBalanceFive <> 0 OR @LastYearBalanceSix <> 0 OR @LastYearBalanceSeven <> 0 OR @LastYearBalanceEight <> 0
OR @LastYearBalanceNine <> 0 OR @LastYearBalanceTen <> 0 OR @LastYearBalanceEleven <> 0 OR @LastYearBalanceTweleve <> 0))
BEGIN
IF(@Balance <> 0)
BEGIN
SELECT 'Balance Outstanding' AS [Message]
END
ELSE
BEGIN
SELECT 'Balances From Last Year' AS [Message]
END
END
ELSE
BEGIN
SET @deleteCount =
(
SELECT COUNT(1)
FROM [dbo].[Nominal] [NOM]
JOIN [dbo].[NominalLedger] [NOL]
ON [NOM].[Code] = [NOL].[Code]
WHERE [NOM].[Code] = @Code
)
IF(@deleteCount > 0)
BEGIN
SELECT 'Transactions Present' AS [Message]
END
ELSE
BEGIN
SELECT 'Delete Nominal Account' AS [Message]
END
END
END
IF(@Mode = 'DELETE' )
BEGIN
DELETE
FROM [dbo].[ChequeNumbers]
WHERE [BankCode] = @Code
DELETE
FROM [dbo].[Nominal]
WHERE [Code] = @Code
--Insert Into Log Table
INSERT
INTO [dbo].[Log]
(
[Date],
[User],
[Event]
)
VALUES
(
@CurrentDate,
@User,
'Delete Nominal ' + @Code
)
INSERT
INTO [dbo].[Log]
(
[Date],
[User],
[Event]
)
VALUES
(
@CurrentDate,
@User,
'Delete ChequeNumbers of ' + @Code
)
SELECT '1' AS [Message]
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_DeleteNominalBudget'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_DeleteNominalBudget]
END
GO
CREATE PROCEDURE [dbo].[KAAS_DeleteNominalBudget]
(
@RecordId DECIMAL
)
AS
/*******************************************************************************************************
* Delete Nominal Budget *
* *
* Stored Procedure Name : [dbo].[KAAS_DeleteNominalBudget] *
* *
* Modification History: *
* 2021-09-27 Revathy D Created *
* 2022-03-01 Balamurugan C Modified - Handled TCL Statements and formatting *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
DELETE
FROM [dbo].[NominalBudgets]
WHERE [RECORDID] = @RecordId
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_DeleteSAMAccruals', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_DeleteSAMAccruals]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_DeleteSAMAccruals]
(
@RecordId INT
)
AS
/*******************************************************************************************************
* [dbo].[KAAS_DeleteSAMAccruals] *
* Description: Used to delete accrual detail *
* Modification History: *
* 2021-08-04 Revathy D Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN
DELETE FROM [dbo].[Accruals]
WHERE [RECORDID] = @RecordId
END
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_DeleteSupplierLedger'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_DeleteSupplierLedger]
END
GO
CREATE PROCEDURE [dbo].[KAAS_DeleteSupplierLedger]
(
@RecordId INT,
@Result TINYINT OUTPUT
)
AS
/*******************************************************************************************************
* *
* Used to delete the supplier ledger *
* Stored Procedure Name: [dbo].[KAAS_DeleteSupplierLedger] *
* Modification History: *
* 2021-07-07 Natarajan S Created *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
DELETE
FROM [dbo].[SupplierLedger]
WHERE [RecordId]=@RecordId
SET @Result = 1
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = N'KAAS_DeleteSupplierLedgerAllocation'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_DeleteSupplierLedgerAllocation]
END
GO
CREATE PROCEDURE [dbo].[KAAS_DeleteSupplierLedgerAllocation] (
@KeyId INT,
@Result TINYINT OUTPUT)
AS
/*******************************************************************************************************
* Used to delete a single supplier ledger allocation *
* Stored Procedure Name: [dbo].[KAAS_DeleteSupplierLedgerAllocation] *
* *
* Modification History: *
* 2021-03-26 Natarajan S Created *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
* 2023-10-19 Revathy.D Modified - Added Type 'B' to the existing condition (Ticket id:17256) *
* 2024-01-30 John Ginnane #17689 - Delete now updates figures correctly and refactored code *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON;
-- Make sure record exists
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[Allocations] AS [ALO]
WHERE [ALO].[KEYID] = @KeyId)
BEGIN
SET @Result = 0
RETURN
END
BEGIN TRY
BEGIN TRANSACTION
DECLARE @BILLRECORDID INT
DECLARE @PAYMENTRECORDID INT
DECLARE @VALUE DECIMAL(17, 2)
DECLARE @AllNo INT
SELECT @BILLRECORDID = ISNULL([BIL].[RECORDID], 0),
@PAYMENTRECORDID = ISNULL([PAY].[RECORDID], 0),
@VALUE = ISNULL([ALO].[VALUE], 0),
@AllNo = ISNULL([ALO].[AllNo], 0)
FROM [dbo].[Allocations] AS [ALO]
LEFT OUTER JOIN [dbo].[SupplierLedger] AS [BIL]
ON [ALO].[BATCHNO] = [BIL].[BATCHNO]
AND [ALO].[PREF] = [BIL].[PREF]
LEFT OUTER JOIN [dbo].[SupplierLedger] AS [PAY]
ON [ALO].[ABATCHNO] = [PAY].[BATCHNO]
AND [ALO].[OPREF] = [PAY].[PREF]
WHERE [ALO].[KEYID] = @KeyId
UPDATE [SPL]
SET [SPL].[OSValue] = CASE WHEN [SPL].[ORIGINAL] > 0 -- This is how we know whether to subtract or add the allocation value, according to original code
THEN [SPL].[OSValue] + @VALUE
ELSE [SPL].[OSValue] - @VALUE END
FROM [dbo].[SupplierLedger] AS [SPL]
WHERE [SPL].[RECORDID] IN (@BILLRECORDID, @PAYMENTRECORDID)
DELETE [ALO]
FROM [dbo].[Allocations] AS [ALO]
WHERE [ALO].[AllNo] = @AllNo
SET @Result = 1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @Result = 0
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'Kaas_DeleteUndertaking'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[Kaas_DeleteUndertaking]
END
GO
CREATE PROCEDURE [dbo].[Kaas_DeleteUndertaking]
(
@RecordId INT,
@MatterCode VARCHAR(20),
@Narrative VARCHAR(MAX),
@ClientMin VARCHAR(30),
@ActionId INT,
@DiaryMessage VARCHAR(MAX),
@LogMessage VARCHAR(MAX),
@User VARCHAR(30) = '',
@Result TINYINT OUTPUT
)
AS
/*******************************************************************************************************
* *
* Used to delete the matter ledger *
* Stored Procedure Name: [dbo].[Kaas_DeleteUndertaking] 115,'000001/0000','test','20.00',7489, *
'test','test',0 *
* Modification History: *
* 2021-04-12 Natarajan S Created *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
* 2023-10-25 Revathy.D Modified - Added the missed param 'Handler code' to KAAS_INSERTSAMMatterLedgerComment *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DECLARE @CurrDate DATETIME,
@TIMECONVERT INT;
SET @CurrDate = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](GETDATE(), @User)), 0)
SET @TIMECONVERT = [dbo].[KAAS_ConvertTimeToClarion](GETDATE())
DELETE
FROM [dbo].[Undertakings]
WHERE [RECORDID]=@RecordId
SET @Result = 1
EXEC [dbo].[KAAS_INSERTSAMMatterLedgerComment] @MatterCode,@Narrative,@ClientMin,@CurrDate,@User,0,@Result
UPDATE [dbo].[diary]
SET [DATE] = @CurrDate,
[STATUS] = 1,
[TEXT1] = @DiaryMessage
WHERE [ACTIONID] = @ActionId
INSERT
INTO [dbo].[Log]
( [DATE],
[USER],
[EVENT]
)
VALUES
( @CurrDate,
@User,
@LogMessage
)
INSERT
INTO [dbo].[DesktopMessages]
( [MESSAGE],
[HEADING],
[DATE],
[TIME],
[BUTTON],
[DURATION],
[NAME],
[FLAG],
[EXTRAS],
[EXTRAL]
)
VALUES
( @LogMessage, /*[MESSAGE]*/
'Undertaking Deleted', /*[HEADING]*/
@TIMECONVERT, /*[DATE]*/
@TIMECONVERT, /*[TIME]*/
0, /*[BUTTON]*/
0, /*[DURATION]*/
'admin', /*[NAME]*/
0, /*[FLAG]*/
' ', /*[EXTRAS]*/
0 /*[EXTRAL]*/
)
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_ExcludeEFTDetail',N'P')IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_ExcludeEFTDetail]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_ExcludeEFTDetail]
(
@BATCHNO VARCHAR(20)
)
AS
/************************************************************************************************************* *
* Modification History *
* 2024-03-19 Ghayathri S.V Created *
*************************************************************************************************************/
BEGIN
SET NOCOUNT ON
UPDATE BatchH SET EFTYorN = 'N' WHERE BatchNo = @BATCHNO
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_FetchBankReconciliationStatement', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_FetchBankReconciliationStatement]
GO
CREATE PROCEDURE [dbo].[KAAS_FetchBankReconciliationStatement]
(
@RecNo INT = 0,
@Mode VARCHAR(15) = '',
@BankAc VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Fetch the Bank Reconciliation Statement Records *
* *
* Stored Procedure Name : [dbo].[KAAS_FetchBankReconciliationStatement] *
* *
* Modification History: *
* 2022-01-31 Balamurugan C Created *
* 2022-02-08 Balamurugan C Modified - Added Bank Complete Transaction Data *
* 2022-02-08 Balamurugan C Modified - Added Undo Recon Details *
* 2024-08-26 Ghayathri.S.V Modified - Added order by Batch *
* 2024-08-28 Balamurugan.C Modified - Fetch Pending Recon By Recon Number *
* 2024-09-12 Balamurugan.C Modified - Added the order by recon number *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON;
IF(@Mode = 'GRID')
BEGIN
SELECT [RecNo],
RTRIM([BankAc]) AS [BankAc],
[RecDate],
[DateComplete],
[OpeningBalance],
[Lodgements],
[Cheques],
[LastRec],
[OsLodgements]
FROM [dbo].[BankRecHistory] WITH(NOLOCK)
WHERE [RecNo] <> 0
ORDER BY [RecNo] DESC
END
IF(@Mode = 'BYRECON')
BEGIN
SELECT [RecNo],
RTRIM([BankAc]) AS [BankAc],
[RecDate],
[DateComplete],
[LastRec],
RTRIM([Currency]) AS [Currency],
[OpeningBalance],
[Lodgements],
[Cheques],
[OsLodgements],
[OsCheques],
[BankBal],
[ClosingBal],
[Diff]
FROM [dbo].[BankRecHistory] WITH(NOLOCK)
WHERE [RecNo] = @RecNo
SELECT RTRIM([BCT].[BankAc]) AS [BankAc],
RTRIM([BCT].[Type]) AS [Type],
[BCT].[Date],
RTRIM([BCT].[Ref]) AS [Ref],
[BCT].[Batch],
[BCT].[Pref],
RTRIM([BCT].[Narr]) AS [Narr],
[BCT].[Value],
[BCT].[OsRecNo],
[BCT].[RecNo],
RTRIM([BCT].[Ticked]) AS [Ticked],
[RecordId],
[BCT].[NomTransId]
FROM [dbo].[BankRecCompleteTrans] [BCT]
WHERE [BCT].[RecNo] = @RecNo
ORDER BY [BCT].[Batch] DESC
END
IF(@Mode = 'UNDORECON')
BEGIN
SELECT [RecNo],
RTRIM([BankAc]) AS [BankAc],
[RecDate],
[NOL].[Desc] AS [BankDesc]
FROM [dbo].[BankRecHistory] WITH(NOLOCK)
JOIN [dbo].[Nominal] [NOL]
ON [NOL].[Code] = RTRIM([BankAc])
WHERE [DateComplete] IS NULL
END
IF(@Mode = 'PENDINGRECON')
BEGIN
SELECT [RecNo],
RTRIM([BankAc]) AS [BankAc],
[RecDate],
[DateComplete],
[LastRec],
RTRIM([Currency]) AS [Currency],
[OpeningBalance],
[Lodgements],
[Cheques],
[OsLodgements],
[OsCheques],
[BankBal],
[ClosingBal],
[Diff]
FROM [dbo].[BankRecHistory]
WHERE [RecNo] = @RecNo
SELECT RTRIM([BRT].[BankAc]) AS [BankAc],
RTRIM([BRT].[Type]) AS [Type],
[BRT].[Date],
RTRIM([BRT].[Ref]) AS [Ref],
[BRT].[Batch],
[BRT].[Pref],
RTRIM([BRT].[Narr]) AS [Narr],
[BRT].[Value],
[BRT].[OsRecNo],
[BRT].[RecNo],
RTRIM([BRT].[Ticked]) AS [Ticked],
[RecordId],
[BRT].[NomTransId]
FROM [dbo].[BankRecTransactions] [BRT]
JOIN [dbo].[BankRecHistory] [BRH]
ON [BRH].[RecNo] = [BRT].[RecNo]
WHERE [BRT].[BankAc] = @BankAc
AND [BRT].[RecNo] = @RecNo
END
SET NOCOUNT OFF;
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_FetchSAMBankReconHistory'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_FetchSAMBankReconHistory]
END
GO
CREATE PROCEDURE [dbo].[KAAS_FetchSAMBankReconHistory]
(
@BankCode VARCHAR(10) = '',
@Mode VARCHAR(20) = '',
@HandlerCode VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Bank Reconciliation -Browse Forward Previous Reconciliation Details *
* *
* Stored Procedure Name : [dbo].[KAAS_FetchSAMBankReconHistory] *
* *
* Modification History: *
* 2022-01-17 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON;
IF(@Mode = 'ReconDetails')
BEGIN
SELECT ROW_NUMBER() OVER(ORDER BY [BankAc] ASC) AS [RowNum],
[RecNo] AS [RecNo],
RTRIM([BankAc]) AS [BankAc],
[dbo].KEYHM_FNConvertUTCDateToTargetTimeZone([RecDate], @handlerCode) AS [RecDate],
[dbo].KEYHM_FNConvertUTCDateToTargetTimeZone([DateComplete], @handlerCode) AS [DateComplete],
[LastRec] AS [LastRec],
RTRIM([Currency]) AS [Currency],
[OpeningBalance] AS [OpeningBalance],
[Lodgements] AS [Lodgements],
[Cheques] AS [Cheques],
[OsLodgements] AS [OsLodgements],
[OsCheques] AS [OsCheques],
[BankBal] AS [BankBal],
[ClosingBal] AS [ClosingBal],
[Diff] AS [Diff]
FROM [dbo].[BankRecHistory]
WHERE [RecNo] = 0
AND RTRIM([BankAc]) = @BankCode
END
IF(@Mode = 'OutstadingTrans')
BEGIN
SELECT RTRIM([BankAc]) AS [BankAc],
RTRIM([Type]) AS [Type],
[dbo].KEYHM_FNConvertUTCDateToTargetTimeZone([Date], @handlerCode) AS [Date],
RTRIM([Ref]) AS [Ref],
[Batch] AS [Batch],
[Pref] AS [Pref],
RTRIM([Narr]) AS [Narr],
[Value] AS [Value],
[RecNo] AS [RecNo],
[RecordId] AS [RecordId]
FROM [dbo].[BankRecOutstandingTrans]
WHERE RTRIM([BankAc]) = @BankCode
AND [RecNo] = 0
END
SET NOCOUNT OFF;
END
GO
IF OBJECT_ID(N'[KAAS_FetchContacts]',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_FetchContacts]
GO
CREATE PROCEDURE
[dbo].[KAAS_FetchContacts]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'Code',
@SortOrder VARCHAR(100) = 'ASC'
)
AS
/************************************************************************************
* This procedure is used To Fetch Contacts for Browse Contacts page *
* CaseContacts AND CaseAssociateTypes . *
* *
* Stored Procedure Name : [dbo].[KAAS_FetchContacts] *
* *
* Modification History : *
* 2021-07-14 Prabhu V Created
* 2022-07-14 Ghayathri S.V Modified to implement dynamic sql query to fetch sort
and search datas
* 2023-05-05 Revathy D Added address field in the search datas *
************************************************************************************/
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql = 'SELECT DISTINCT
[Con].[Code],
[Con].[Name],
[Con].[Address],
[Con].[Principal],
[Con].[FE],
[Con].[Client],
[Con].[Nation],
[Con].[ClientGroup],
[Con].[OpenMatters],
[Con].[StartDate],
[Con].[BillBal],
[Con].[OutlayBal],
[Con].[ClientCur],
[Con].[ClientDep],
[Con].[RSINo],
[Con].[OtherRef],
[Con].[OpsisRef],
[Con].[ContactNo],
[Con].[CompBillOnOff],
[Con].[TaxType]
FROM [dbo].[contacts] [Con]
WHERE [Con].[Client] = ''Y''' +
'AND (
[Con].[Code] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[Con].[Name] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Con].[Address] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Con].[Nation] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Con].[OtherRef] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Con].[BillBal] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Con].[Principal] LIKE ' + '''%' + @SearchString + '%' + '''' +
')
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
SELECT COUNT(*) 'TotalRecord'
FROM [dbo].[contacts] [Con]
WHERE [Con].[Client] = 'Y'
AND (
[Con].[Code] LIKE '%' + @SearchString + '%'
OR
[Con].[Name] LIKE '%' + @SearchString + '%'
OR
[Con].[Address] LIKE '%' + @SearchString + '%'
OR
[Con].[Nation] LIKE '%' + @SearchString + '%'
OR
[Con].[OtherRef] LIKE '%' + @SearchString + '%'
OR
[Con].[BillBal] LIKE '%' + @SearchString + '%'
OR
[Con].[Principal] LIKE '%' + @SearchString + '%'
)
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_FetchCrystalReportSetupDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_FetchCrystalReportSetupDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_FetchCrystalReportSetupDetails]
AS
/*******************************************************************************************************
* Fetch all Crystal Report and Relevent Report Group Details *
* *
* Stored Procedure Name : [dbo].[KAAS_FetchCrystalReportSetupDetails] *
* *
* Modification History: *
* 2022-03-10 Balamurugan C Created *
* 2023-02-21 Nithyanandham M Modified-Table name has been updated to newly created one *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @TempReportTable TABLE
(
[ReportId] DECIMAL,
[Name] VARCHAR(500),
[FileName] VARCHAR(500),
[GroupName] VARCHAR(500),
[Notes] VARCHAR(5000),
[Synopsis] VARCHAR(5000),
[Report_Type] VARCHAR(10),
[Created_On] DATETIME
)
INSERT INTO @TempReportTable
(
[ReportId],
[Name],
[FileName],
[Notes],
[Synopsis],
[Report_Type],
[Created_On],
[GroupName]
)
(
SELECT [CRR].[ReportId],
[CRR].[Name],
[CRR].[FileName],
[CRR].[Notes],
[CRR].[Synopsis],
[CRR].[Report_Type],
[CRR].[Created_On],
[CGP].[GroupName]
FROM [dbo].[KaaS_CRReport] [CRR]
JOIN [dbo].[KaaS_CRReportGroup] [CRG]
ON [CRG].[Reportid] = [CRR].[Reportid]
JOIN [dbo].[KaaS_CRGroup] [CGP]
ON [CGP].[groupid] = [CRG].[groupid]
)
SELECT [ReportId] AS [ReportId],
[Name] AS [Name],
[FileName] AS [FileName],
[Notes] AS [Notes],
[Synopsis] AS [Synopsis],
[Report_Type] AS [ReportType],
[Created_On] AS [CreatedOn],
STUFF((SELECT ', ' + CAST([GroupName] AS VARCHAR(MAX)) [text()]
FROM @TempReportTable
WHERE [ReportId] = [TMP].[ReportId]
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,' ') [GroupName]
FROM @TempReportTable [TMP]
GROUP BY [ReportId],
[Name],
[FileName],
[Notes],
[Synopsis],
[Report_Type],
[Created_On]
ORDER BY [Name]
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_FetchNominalLedgerByCode'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_FetchNominalLedgerByCode]
END
GO
CREATE PROCEDURE [dbo].[KAAS_FetchNominalLedgerByCode]
(
@Code VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Fetch Nominal Ledger by Code where ReconNo is 0 *
* *
* Stored Procedure Name : [dbo].[KAAS_FetchNominalLedgerByCode] *
* *
* Modification History: *
* 2022-02-01 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [NML].[Code],
[NML].[Branch],
[NML].[BatchNo],
[NML].[Pref],
[NML].[Date],
[NML].[Ref],
[NML].[Narr],
[NML].[Matter],
[NML].[Supp],
[NML].[Value],
[NML].[EntryDate],
[NML].[RecordId],
[BAH].[Type]
FROM [dbo].[NominalLedger] [NML]
LEFT JOIN [dbo].[BatchH] [BAH]
ON [BAH].[BatchNo] = [NML].[BatchNo]
WHERE [NML].[Code] = @Code
AND [NML].[RecNo] = 0
ORDER BY [NML].[Code] ASC,
[NML].[Date] ASC,
[NML].[RecordId] ASC
SELECT [Balance]
FROM [dbo].[Nominal]
WHERE [Code] = @Code
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_FetchSAMBankReconValidationDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_FetchSAMBankReconValidationDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_FetchSAMBankReconValidationDetails]
(
@BankAc VARCHAR(10) = '',
@Mode VARCHAR(25) = ''
)
AS
/*******************************************************************************************************
* Bank Reconciliation - Validation for Start Bank Reconcilation *
* *
* Stored Procedure Name : [dbo].[KAAS_FetchSAMBankReconValidationDetails] *
* *
* Modification History: *
* 2022-01-21 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
IF(@Mode='FetchReconNo')
BEGIN
SELECT [RecNo] AS [RecNo],
[RecDate] AS [RecDate]
FROM [dbo].[BankRecHistory]
WHERE [BankAc] = @BankAc
AND [DateComplete] IS NULL
END
IF(@Mode='PendingRecon')
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[BankRecHistory]
WHERE [BankAc] = @BankAc
AND [RecNo] = 0
)
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[BankRecHistory]
WHERE [BankAc] = @BankAc
AND [DateComplete] IS NULL
)
BEGIN
SELECT 'Y' AS [PendingStatus]
END
ELSE
BEGIN
SELECT 'N' AS [PendingStatus]
END
END
ELSE
BEGIN
SELECT 'O' AS [PendingStatus]
END
END
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_FetchSAMDebtorsAllocatedValue'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_FetchSAMDebtorsAllocatedValue]
END
GO
CREATE PROCEDURE [dbo].[KAAS_FetchSAMDebtorsAllocatedValue]
(
@BatchNo INT = 0,
@Pref INT = 0
)
AS
/*******************************************************************************************************
* Get Debtors Ledger Alllocated and Original Value *
* *
* Stored Procedure Name : [dbo].[KAAS_FetchSAMDebtorsAllocatedValue] *
* *
* Modification History: *
* 2021-11-08 vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON;
SELECT [Original],
[OsValue]
FROM [dbo].[DebtorsLedger]
WHERE [BatchNo] = @BatchNo
AND [Pref] = @Pref
SET NOCOUNT OFF;
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = N'KAAS_FetchSAMPaymentDropDownList'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_FetchSAMPaymentDropDownList]
END
GO
CREATE PROCEDURE [dbo].[KAAS_FetchSAMPaymentDropDownList]
(
@Mode VARCHAR(15)
)
AS
/*******************************************************************************************************
* Fetches Payment - Enter Cheque all dropdown values *
* *
* Stored Procedure Name : [dbo].[KAAS_FetchSAMPaymentDropDownList] *
* *
* Modification History: *
* 2024-01-31 Balamurugan.C Created *
* 2024-03-20 Ghayathri.S.V Modified : Included code to fetch the client contact details *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF(@Mode='EnterPayment')
BEGIN
/*Bank Details*/
SELECT RTRIM([NOM].[Code]) AS [Code],
RTRIM([NOM].[Desc]) AS [Desc],
[NOM].[Type],
[NOM].[Pb],
[NOM].[Seq],
[NOM].[Clientac] AS [Client],
[NOM].[Deposityn] AS [Deposit],
[NOM].[Deposittype] AS [DepType],
[NOM].[BankBranch],
ISNULL([NOM].[IBAN],'') AS [Iban],
ISNULL([NOM].[ACCOUNTNAME],'') AS [AccountName],
ISNULL([NOM].[ACCOUNTNO],'') AS [AccountNumber],
ISNULL([NOM].[SORTCODE],'') AS [SortCode],
ISNULL([NOM].[BIC],'') AS [Bic],
ISNULL([NOM].[Branch],'') AS [Branch],
NOM.[LASTNO] AS [LastNumber]
FROM [dbo].[Nominal] [NOM]
WHERE [NOM].[TYPE] = 'BANK'
AND [NOM].[RETIRED] <> 'Y'
ORDER BY [NOM].[CODE] ASC
/*Narratives*/
SELECT RTRIM(ISNULL([NAR].[CODE], '')) AS [Code],
RTRIM(ISNULL([NAR].[NARRATIVE], '')) AS [Narrative]
FROM [dbo].[Narratives] AS [NAR]
ORDER BY RTRIM(ISNULL([NAR].[CODE], '')) ASC
/*All Supplier List*/
SELECT [Code],
[Name],
[Address],
[Nominal],
[Phone],
ISNULL([EmailAddress],'') AS [EmailAddress],
[TaxNo],
[ServiceCode],
ISNULL([VATNo],'') AS [VATNo],
[DeftpStatus],
ISNULL([BankName],'') AS [BankName],
ISNULL([BankAddress],'') AS [BankAddress],
ISNULL([BankSortCode],'') AS [BankSortCode],
ISNULL([BankAccNo],'') AS [BankAccNo],
ISNULL([Iban],'') AS [Iban],
ISNULL([Bic],'') AS [Bic],
ISNULL([BankType],'') AS [BankType],
ISNULL([EFTEmailAddress],'') AS [EFTEmailAddress],
[Retired],
[TPBAL] AS [ThirdPartyBalance],
[BALANCE] AS [Balance],
[BALANCEFWD] AS [BalanceFwd]
FROM [dbo].[Suppliers]
ORDER BY [Code] ASC
/*EFT Alert Settings*/
SELECT TOP 1 [EFTYN] AS [EFTAlert]
FROM [dbo].[EFTDetails]
/*Branch Details*/
SELECT RTRIM([BRANCHCODE]) AS [Code],
RTRIM([DESCRIPTION]) AS [Description]
FROM [dbo].[Branch]
/*Client Contact Details*/
SELECT [BIC] AS [Bic],
[IBAN] AS [Iban],
[BankSortCode] AS [BankSortCode],
[BankAccNo] AS [BankAccNo],
[Code] AS [Code],
[Name] AS [Name]
FROM [dbo].[Contacts]
END
ELSE
BEGIN
/*Vat Codes*/
SELECT [VAC].[CODE] AS [Vat],
[VAC].[RATE] AS [Rate]
FROM [dbo].[VATCodes] [VAC]
WHERE [VAC].RETIRED <> 'Y'
ORDER BY [VAC].[CODE] ASC
/*Outlay Codes*/
SELECT RTRIM([OCD].[CODE]) AS [Code],
RTRIM([OCD].[DESCRIPTION]) AS [Description]
FROM [dbo].[OutlayCode] [OCD]
ORDER BY [OCD].[CODE] ASC
/*All Supplier List*/
SELECT [Code],
[Name],
[Address],
[Nominal],
[Phone],
ISNULL([EmailAddress],'') AS [EmailAddress],
[TaxNo],
[ServiceCode],
ISNULL([VATNo],'') AS [VATNo],
[DeftpStatus],
ISNULL([BankName],'') AS [BankName],
ISNULL([BankAddress],'') AS [BankAddress],
ISNULL([BankSortCode],'') AS [BankSortCode],
ISNULL([BankAccNo],'') AS [BankAccNo],
ISNULL([Iban],'') AS [Iban],
ISNULL([Bic],'') AS [Bic],
ISNULL([BankType],'') AS [BankType],
ISNULL([EFTEmailAddress],'') AS [EFTEmailAddress],
[Retired],
[TPBAL] AS [ThirdPartyBalance],
[BALANCE] AS [Balance],
[BALANCEFWD] AS [BalanceFwd]
FROM [dbo].[Suppliers]
ORDER BY [Code] ASC
/*Fee Earners List*/
SELECT [FEE].[Code],
[FEE].[Name],
[FEE].[Branch],
[FEE].[Nominal]
FROM [dbo].[FeeEarnerCodes] [FEE]
WHERE [FEE].[Retired] <> 'Y'
ORDER BY [FEE].[Code] ASC
/*Nominal List*/
SELECT [NOM].[CODE] AS [Code],
[NOM].[DESC] AS [Description],
[NOM].[TYPE] AS [Type]
FROM [dbo].[Nominal] [NOM]
ORDER BY [NOM].[CODE] ASC
/*Narratives*/
SELECT RTRIM(ISNULL([NAR].[CODE], '')) AS [Code],
RTRIM(ISNULL([NAR].[NARRATIVE], '')) AS [Narrative]
FROM [dbo].[Narratives] AS [NAR]
ORDER BY RTRIM(ISNULL([NAR].[CODE], '')) ASC
END
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetApprovedChequeRequisitionDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetApprovedChequeRequisitionDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetApprovedChequeRequisitionDetails]
(
@Mode VARCHAR(5) = '',
@ReqNo INT = 0
)
AS
/*******************************************************************************************************
* Fetches the Approved Cheque Reqisition Details *
* *
* Stored Procedure Name : [dbo].[dbo].[KAAS_GetApprovedChequeRequisitionDetails] *
* *
* Modification History: *
* 2021-09-13 Balamurugan.C Created *
* 2021-10-22 Balamurugan.C Modified - Added Third Party Column and handled fetch *
the record based on grid mode and single record mode
* 2022-06-08 Ghayathri.S.V Modified - Added outlay balance and current client balance columns
in select statement while fetching the records.
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
[CRH].[ReqNo] AS [ReqNo],
[CRH].[Date] AS [Date],
[CRH].[Who] AS [Who],
[CRH].[Bank] AS [Bank],
[CRH].[Value] AS [Value],
[CRH].[Narrative] AS [Narrative],
[CRH].[Payee] AS [Payee],
[CRH].[Status] AS [Status],
[CRH].[ReturnReason] AS [ReturnReason],
[CRH].[FeeEarner] AS [FeeEarner],
[CRH].[Supply] AS [Supply],
[CRH].[OutlayCode] AS [OutlayCode],
[CRH].[EFTYorN] AS [EFTYorN],
[CRH].[ThirdParty] AS [ThirdParty],
[CRD].[ReqNo] AS [DetailsReqNo],
[CRD].[Matter] AS [Matter],
[CRD].[Nominal] AS [Nominal],
[CRD].[RecordID] AS [RecordID],
[MAT].[Code] AS [MatterCode],
[MAT].[ClientCode] As [ClientCode],
[MAT].[FeCode] AS [MatterFeeEarnerCode],
[MAT].[Dept] AS [Dept],
[MAT].[Wtype] AS [Wtype],
[MAT].[Branch] AS [Branch],
[MAT].[FileNum] AS [FileNum],
[MAT].[ThirdPart] AS [ThirdPart],
[MAT].[ThPartSol] AS [ThPartSol],
[MAT].[OldRef] AS [OldRef],
[MAT].[Pcode] AS [Pcode],
[MAT].[PFeCode] AS [PFeCode],
[MAT].[User1] AS [User1],
[MAT].[User2] AS [User2],
[MAT].[User3] AS [User3],
[MAT].[FileColour] AS [FileColour],
[MAT].[OUTFileNo] AS [OUTFileNo],
[MAT].[Closed] AS [Closed],
[MAT].[OutlayBal] AS [OutlayBal],
[MAT].[ClientCurBal] AS [ClientCurBal]
FROM [dbo].[ChequeRequisitionHeader] [CRH]
LEFT OUTER JOIN [dbo].[ChequeRequisitionDetail] [CRD]
ON [CRH].[ReqNo]= [CRD].[ReqNo]
LEFT OUTER JOIN [dbo].[Matters] [MAT]
ON [CRD].[Matter]= [MAT].[Code]
WHERE [CRH].[Status] = '1'
AND [CRH].[ReqNo] = CASE WHEN @Mode='All' THEN [CRH].[ReqNo] ELSE @ReqNo END
ORDER BY [CRH].[Status] ASC,
[CRH].[ReqNo] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetAssociatesTypes',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetAssociatesTypes]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetAssociatesTypes]
(@SearchString VARCHAR(4000) = '',
@PageNumber INT = NULL,
@PageSize INT = NULL,
@SortColumn VARCHAR(50) = NULL,
@SortOrder VARCHAR(10) = NULL)
AS
/*******************************************************************************************************
* Fetches the case associate types *
* *
* Stored Procedure Name : [dbo].[KAAS_GetAssociatesTypes] *
* *
* Modification History: *
* 2021-04-09 Revathy D Created *
* 2024-10-14 Ghayathri.SV Modified - Updated the pagination and sort concept, included all option * *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SET @PageNumber = ISNULL(@PageNumber, 0) - 1; -- 0 BASED INDEX
SET @PageSize = ISNULL(@PageSize, 0) - 1; -- 0 BASED INDEX
DECLARE @StartRow INT = NULL;
DECLARE @EndRow INT = NULL;
IF(@PageNumber > -1 AND @PageSize > 0)
BEGIN
SET @StartRow = ((@PageNumber) * @PageSize) + 1;
SET @EndRow = (@StartRow + @PageSize) - 1;
END
IF(@SortColumn = '' OR @SortColumn = NULL)
BEGIN
SET @SortColumn = 'Code'
END
IF(@SortOrder = '' OR @SortOrder = NULL)
BEGIN
SET @SortOrder = 'ASC'
END
SELECT
IDENTITY(int, 1,1) AS [Row_Number],
*
INTO
#FoundTable
FROM
(SELECT
UPPER(CODE) AS CODE,
[DESCRIPTION]
FROM
AssociateTypes
WHERE
[CODE] LIKE '%' + @SearchString + '%'
OR
[DESCRIPTION] LIKE '%' + @SearchString + '%') AS Test
ORDER BY
CASE WHEN @SortOrder = 'ASC' THEN
CASE @SortColumn
WHEN 'Code' THEN [CODE]
END
END,
CASE WHEN @SortOrder = 'DESC' THEN
CASE @SortColumn
WHEN 'Code' THEN [CODE]
END
END DESC,
CASE WHEN @SortOrder = 'ASC' THEN
CASE @SortColumn
WHEN 'Description' THEN [DESCRIPTION]
END
END,
CASE WHEN @SortOrder = 'DESC' THEN
CASE @SortColumn
WHEN 'Description' THEN [DESCRIPTION]
END
END DESC
SELECT
0 AS [Row_Number],
'' AS [Code],
'ALL' AS [Description]
UNION ALL
SELECT
*
FROM
#FoundTable
WHERE
(
@StartRow IS NULL
OR
(
[Row_Number] BETWEEN @StartRow AND @EndRow
)
)
SELECT
(COUNT([Row_Number]) + 1) --Including the dynamically included row where CODE = '', DESCRIPTION = 'ALL'
FROM
#FoundTable
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KAAS_GetBankDetails]') AND type in (N'P', N'PC'))
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetBankDetails]
END
GO
/****** Object: StoredProcedure [dbo].[KAAS_GetBankDetails] Script Date: 23-03-2021 16:19:44 ******/
CREATE PROCEDURE [dbo].[KAAS_GetBankDetails]
AS
/*******************************************************************************************************
* Fetches the Bank details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetBankDetails] *
* *
* Modification History: *
* 2021-03-23 Revathy D Created *
* 2021-08-09 Vinodhkumar M Modified - columns added *
* 2021-09-09 Balamurugan Modified - columns added _branch
* 2022-10-06 Ghayathri Modified - columns added - LastNumber *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
RTRIM(NOM.[Code]) AS [Code],
RTRIM(NOM.[Desc]) AS [Desc],
NOM.[Type],
NOM.[Pb],
NOM.[Seq],
NOM.[Clientac] AS [Client],
NOM.[Deposityn] AS [Deposit],
NOM.[Deposittype] AS [DepType],
NOM.[BankBranch],
ISNULL(NOM.[IBAN],'') AS [Iban],
ISNULL(NOM.[ACCOUNTNAME],'') AS [AccountName],
ISNULL(NOM.[ACCOUNTNO],'') AS [AccountNumber],
ISNULL(NOM.[SORTCODE],'') AS [SortCode],
ISNULL(NOM.[BIC],'') AS [Bic],
ISNULL(NOM.[Branch],'') AS [Branch],
NOM.[LASTNO] AS [LastNumber]
FROM
dbo.[Nominal] NOM
WHERE NOM.[TYPE] = 'BANK'
AND NOM.[RETIRED] <> 'Y'
ORDER BY
NOM.[CODE] ASC
SET NOCOUNT OFF
END
GO
IF EXISTS(SELECT
TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetBatchByNo'
AND SO.[type] = 'P'
)
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetBatchByNo]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetBatchByNo] (
@BatchNo INT,
@handlerCode VARCHAR(10) = NULL
)
AS
/*******************************************************************************************************
* Fetches the batch details of unposted payments *
* *
* Stored Procedure Name : [dbo].[KAAS_GetBatchByNo] *
* *
* Modification History: *
* 03 May 2021 Natarajan S Created *
* 13 July 2021 Natarajan S Modified - Formatted as per coding standard *
* 16 August 2021 Vinodhkumar M Modified - Branch and ClientBank fields is added *
* 03 Dec 2021 Vinodhkumar M Modified - Payment and clear date fields is added *
* 07 Dec 2021 Vinodhkumar M Modified - CorrectCopy,Postfwd,invcr fields is added *
* 03 Jan 2022 Ghayathri.S.V Modified - Added Subtot Row while selecting data *
* 11 Jan 2021 Vinodhkumar M Modified - writedown,writebackhrs,writebackValue fields is added *
* 04 Feb 2022 Balamurugan C Modified - Added Single Line Column *
* 21 Nov 2022 Ghayathri.S.V Modified - Added Template Column while selecting data *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [BAT].[BatchNo] AS [BatchNo],
[BAT].[Type] AS [Type],
[BAT].[Code] AS [Code],
[BAT].[Ref] AS [Ref],
[dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone]([BAT].[Date], @handlerCode) AS [Date],
[BAT].[BRANCH] AS [Branch],
[BAT].[CLIENTBANK] AS [ClientBank],
[BAT].[Matter] AS [Matter],
[BAT].[Supp] AS [Supp],
[BAT].[Narr] AS [Narr],
[BAT].[Value] AS [Value],
[BAT].[Posted] AS [Posted],
[BAT].[PerNo] AS [PerNo],
[BAT].[Year] AS [Year],
[BAT].[EntryDate] AS [EntryDate],
[BAT].[RecNo] AS [RecNo],
[BAT].[ChequeReqNo] AS [ChequeReqNo],
[BAT].[Pref] AS [Pref],
[BAT].[Payee] AS [Payee],
[dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone]([BAT].[ENTRYDATE], @handlerCode) AS [ENTRYDATE],
[HAN].[NAME] AS [UserCode],
[BAT].[EFTYorN] AS [EFTYorN],
[BAT].[EFTSent] AS [EFTSent],
[BAT].[ClientAc] AS [ClientAc],
[BAT].[ThirdParty] AS [Thirdparty],
[BAT].[PayClient] AS [PayClient],
[BAT].[OnceOffPayment] AS [OnceOffPayment],
[BAT].[ClientCode] AS [ClientCode],
[BAT].[PaymentMethod] AS [PaymentMethod],
[BAT].[ClearedDate] AS [ClearedDate],
[BAT].[CORRECTCOPY] AS [CorrectCopy],
[BAT].[POSTFWD] AS [PostFwd],
[BAT].[INVCR] AS [Invcr],
[BAT].[SUBTOT] AS [SubTot],
[BAT].[WRITEDOWN] AS [WriteDown],
[BAT].[WRITEBACKHOURS] AS [WriteBackHours],
[BAT].[WRITEBACKVALUE] AS [WriteBackValue],
[BAT].[SINGLELINE] AS [SingleLine],
[BAT].[TEMPLATE] AS [Template],
[BAT].[EFTFileNumber] AS [EFTFileNumber],
[BAT].[EFTFileName] AS [EFTFileName],
[BAT].[CaseAssCode] AS [CaseAssCode],
[BAT].[EFTEmailYorN] AS [EFTEmailYorN]
FROM [dbo].[BatchH] [BAT]
LEFT JOIN [dbo].[Handlers] [HAN]
ON ([HAN].[Code] = [BAT].[UserCode])
OR ([HAN].[NAME] = [BAT].[UserCode])
WHERE [BAT].[BatchNo] = @BatchNo
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetBatchDetails',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetBatchDetails]
GO
CREATE PROCEDURE [dbo].[KAAS_GetBatchDetails]
(@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'BatchNo',
@SortOrder VARCHAR(100) = 'DESC',
@handlerCode VARCHAR(10) = '',
@Type VARCHAR(4) = '')
AS
/*******************************************************************************************************
* Fetches the batch details of unposted receipts *
* *
* Stored Procedure Name : [dbo].[KAAS_GetBatchDetails] *
* *
* Modification History: *
* 2021-03-19 Revathy D Created *
* 2021-08-20 Vinodhkumar M Modifed-Added branch field *
* 2021-09-03 Vinodhkumar M Modifed-Added vat total,outlay total,fee total *
* 2021-11-08 Vinodhkumar M Modifed-Added Payment method, ClearedDate *
* 2021-11-11 Vinodhkumar M Modifed-Changed Null to empty string for handlercode parameter *
* 2022-01-06 Vinodhkumar M Modifed-Added cost transfer awating Process Query for Receipt type *
* 2022-03-29 Vignesh M Modifed-Added S13 column Added *
* 2022-05-09 Vignesh M Modified - UTC Conversion Removed *
* 2022-07-14 Ghayathri.S.V Modified as dynamic query to implement scroll, sort and search *
* 2024-05-13 Balamurugan.C Modified - Added User Code in search condition *
* 2024-05-22 Nithyanandham M Modifed-Added Client Name, Matter Description Columns *
* 2024-06-04 Nithyanandham M Modifed-Fetch Client Name from Contacts table *
* 2024-07-25 Ponni M Modifed the sortcolumn and sortorder default value as BatchNo and Desc*
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @sql NVARCHAR(max),
@offset INT = @PageSize * (@PageNumber -1),
@WhereConditon NVARCHAR(max)
IF @Type = 'M'
BEGIN
SET @WhereConditon = 'WHERE'
END
ELSE
BEGIN
SET @WhereConditon = 'WHERE [TEM].[POSTED] = ''N''' + 'AND'
END
SET @sql = 'DECLARE @TEMP Table
([BatchNo] [int] NOT NULL,
[Type] [char](1) NULL,
[Code] [char](10) NULL,
[Ref] [char](10) NULL,
[Date] [datetime] NULL,
[Matter] [varchar](20) NULL,
[SubTotal] [decimal](17, 2) NULL,
[Supp] [char](10) NULL,
[Narr] [char](150) NULL,
[Value] [decimal](17, 2) NULL,
[Posted] [char](1) NULL,
[Branch] [varchar](3) NULL,
[PerNo] [smallint] NULL,
[Year] [smallint] NULL,
[EntryDate] [datetime] NULL,
[RecNo] [int] NULL,
[ChequeReqNo] [int] NULL,
[UserCode] [char](8) NULL,
[Pref] [int] NULL,
[ClientAc] [char](1) NULL,
[EFT] [char](1) NOT NULL,
[ClientBank] [char](10) NULL,
[ThirdParty] [char](1) NULL,
[Payee] [char](60) NULL,
[EFTSent] [char](1) NOT NULL,
[PayClient] [char](1) NOT NULL,
[OnceOffPayment] [char](1) NOT NULL,
[ClientCode] [varchar](10) NULL,
[Feetotal] [decimal](17, 2) NULL,
[Outlaytotal] [decimal](17, 2) NULL,
[VatTotal] [decimal](17, 2) NULL,
[WriteDown] [datetime] NULL,
[WriteBackHours] [decimal](7, 2) NULL,
[WriteBackValue] [decimal](13, 2) NULL,
[CreditInvoiceNo][int] NULL,
[Invcr] [char](1) NULL,
[Fee] [varchar](10) NULL,
[PaymentMethod] [int] NULL,
[ClearedDate] [datetime] NULL,
[S13] [char](1) NULL,
[ClientName] [varchar](256) NULL,
[Description] [varchar](200) NULL)
INSERT INTO @TEMP
SELECT [BAH].[BatchNo],
RTRIM(ISNULL([BAH].[Type],'''')),
[BAH].[Code],
RTRIM(ISNULL([BAH].[Ref],'''')),
[BAH].[Date],
[BAH].[Matter],
[BAH].[SUBTOT],
[BAH].[Supp],
[BAH].[Narr],
[BAH].[Value],
[BAH].[Posted],
[BAH].[Branch],
[BAH].[PerNo],
[BAH].[Year],
[BAH].[EntryDate],
[BAH].[RecNo],
[BAH].[ChequeReqNo],
[BAH].[UserCode],
[BAH].[Pref],
[BAH].[ClientAc],
[BAH].[EFTYorN],
[BAH].[CLIENTBANK],
[BAH].[ThirdParty],
[BAH].[Payee],
[BAH].[EFTSent],
[BAH].[PayClient],
[BAH].[OnceOffPayment],
[BAH].[ClientCode],
[BAH].[FEETOT],
[BAH].[OUTLAYTOT],
[BAH].[VATTOT],
[BAH].[WRITEDOWN],
[BAH].[WRITEBACKHOURS],
[BAH].[WRITEBACKVALUE],
[BAH].[CREDITINVOICENO],
[BAH].[INVCR],
[BAH].[FEE],
[BAH].[PaymentMethod],
[BAH].[ClearedDate],
[MAT].[S13],
[CON].[Name] AS [ClientName],
[Mat].[Description]
FROM [dbo].[BatchH] [BAH]
LEFT JOIN [DBO].[matters] [MAT] ON [MAT].[Code] = [BAH].[MATTER]
LEFT JOIN [DBO].[Contacts] [CON] ON [CON].[Code] = [MAT].[ClientCode]
WHERE [BAH].[TYPE] = ' + '''' + @Type + '''' +
'BEGIN
SELECT *
FROM @TEMP [TEM] ' +
@WhereConditon +
'(
[TEM].[BatchNo] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Ref] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Date] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Value] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Code] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Narr] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Supp] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[CLIENTBANK] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Matter] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[UserCode] LIKE' + '''%' + @SearchString + '%' + '''' +
')
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY;
SELECT COUNT(*) ''TotalRecord''
FROM @TEMP [TEM]
WHERE [TEM].[POSTED] = ''N''' + 'AND
(
[TEM].[BatchNo] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Ref] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Date] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Value] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Code] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Narr] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Supp] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[CLIENTBANK] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[Matter] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[TEM].[UserCode] LIKE' + '''%' + @SearchString + '%' + '''' +
')
END'
EXEC Sp_executesql @sql
IF @Type = 'R'
BEGIN
SELECT COUNT(*) AS [CostAwaitingProcessCount]
FROM [dbo].[CostTransGathering]
END
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = N'KAAS_GetBatchHeaderAndDetailByNo'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetBatchHeaderAndDetailByNo]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetBatchHeaderAndDetailByNo] (
@BatchNo INT,
@handlerCode VARCHAR(10) = NULL
)
AS
/*******************************************************************************************************
* Fetches Batch Header and Detail Based on Batch Number (Common to All Batches) *
* *
* Stored Procedure Name : [dbo].[KAAS_GetBatchHeaderAndDetailByNo] *
* *
* Modification History: *
* 01 Feb 2024 Balamurugan C Created *
* 13 Jun 2024 Nithyanandham M Draft Bill Number included in the stored procedure *
* 25 Jun 2024 Balamurugan C Credit Invoice Number Bil included in the stored procedure *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
/*Batch Header*/
SELECT [BAT].[BatchNo] AS [BatchNo],
[BAT].[Type] AS [Type],
[BAT].[Code] AS [Code],
[BAT].[Ref] AS [Ref],
[dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone]([BAT].[Date], @handlerCode) AS [Date],
[BAT].[BRANCH] AS [Branch],
[BAT].[CLIENTBANK] AS [ClientBank],
[BAT].[Matter] AS [Matter],
[BAT].[Supp] AS [Supp],
[BAT].[Narr] AS [Narr],
[BAT].[Value] AS [Value],
[BAT].[Posted] AS [Posted],
[BAT].[PerNo] AS [PerNo],
[BAT].[Year] AS [Year],
[BAT].[EntryDate] AS [EntryDate],
[BAT].[RecNo] AS [RecNo],
[BAT].[ChequeReqNo] AS [ChequeReqNo],
[BAT].[Pref] AS [Pref],
[BAT].[Payee] AS [Payee],
[dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone]([BAT].[ENTRYDATE], @handlerCode) AS [ENTRYDATE],
[HAN].[NAME] AS [UserCode],
[BAT].[EFTYorN] AS [EFTYorN],
[BAT].[EFTSent] AS [EFTSent],
[BAT].[ClientAc] AS [ClientAc],
[BAT].[ThirdParty] AS [Thirdparty],
[BAT].[PayClient] AS [PayClient],
[BAT].[OnceOffPayment] AS [OnceOffPayment],
[BAT].[ClientCode] AS [ClientCode],
[BAT].[PaymentMethod] AS [PaymentMethod],
[BAT].[ClearedDate] AS [ClearedDate],
[BAT].[CORRECTCOPY] AS [CorrectCopy],
[BAT].[POSTFWD] AS [PostFwd],
[BAT].[INVCR] AS [Invcr],
[BAT].[SUBTOT] AS [SubTot],
[BAT].[WRITEDOWN] AS [WriteDown],
[BAT].[WRITEBACKHOURS] AS [WriteBackHours],
[BAT].[WRITEBACKVALUE] AS [WriteBackValue],
[BAT].[SINGLELINE] AS [SingleLine],
[BAT].[TEMPLATE] AS [Template],
[BAT].[EFTFileNumber] AS [EFTFileNumber],
[BAT].[EFTFileName] AS [EFTFileName],
[BAT].[CaseAssCode] AS [CaseAssCode],
[BAT].[EFTEmailYorN] AS [EFTEmailYorN],
[BAT].[DraftBillNo] AS [DraftBillNo],
[BAT].[CreditInvoiceNo] AS [CreditInvoiceNo]
FROM [dbo].[BatchH] [BAT]
LEFT JOIN [dbo].[Handlers] [HAN]
ON ([HAN].[Code] = [BAT].[UserCode])
OR ([HAN].[NAME] = [BAT].[UserCode])
WHERE [BAT].[BatchNo] = @BatchNo
/*Batch Details*/
/*If Batch Detail Present then it will execute the select query*/
IF (SELECT COUNT(1) FROM [dbo].[BatchDetails] WHERE [BATCHNO] = @BatchNo) > 0
BEGIN
SELECT [BTD].[BatchNo],
[BTD].[Type],
[BTD].[Code],
[BTD].[Pref],
[BTD].[Ref],
[dbo].KEYHM_FNConvertUTCDateToTargetTimeZone(BTD.[Date], @handlerCode) AS [Date],
[BTD].[Fee],
[BTD].[Narr],
[BTD].[Matter],
[BTD].[Supp],
[BTD].[Value],
[BTD].[VatCode],
[BTD].[VatVal],
[BTD].[Outlay],
[BTD].[Year],
[BTD].[PerNo],
[BTD].[OutlayCode],
[BTD].[HeadBatch],
[BTD].[AllocBatch],
[BTD].[AllocPref],
[BTD].[KeyId] ,
[BTD].[ClientYN],
[BTD].[AllocRef],
[BTD].[AllocValue],
[BTD].[AllocWriteOff],
[BTD].[Payee],
[BTD].[Branch],
[BTD].[ThirdParty],
[BTD].[PayClient],
[BTD].[OnceOffPayment],
[BTD].[ClientCode],
[BTD].[EFTEmailYorN],
[BTD].[CaseAssCode],
[BTD].[HeadPref],
[BTD].[Supp],
[BAH].[POSTED],
[MAT].[S13]
FROM [dbo].[BatchDetails] [BTD]
LEFT JOIN [dbo].[BatchH] [BAH] ON [BAH].[BATCHNO] = [BTD].[BATCHNO]
LEFT JOIN [dbo].[matters] [MAT] ON [MAT].[Code] = [BTD].[MATTER]
WHERE [BTD].[BATCHNO] = @BatchNo
ORDER BY [BTD].[BATCHNO] ASC,
[BTD].[PREF] ASC,
[BTD].[KEYID] ASC
END
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetCaseAssociatesNames',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetCaseAssociatesNames]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetCaseAssociatesNames]
(
@TypeCode varchar(1000)
)
AS
/*******************************************************************************************************
* Fetches the case associate names *
* *
* Stored Procedure Name : [dbo].[KAAS_GetCaseAssociatesNames] *
* *
* Modification History: *
* 2021-04-09 Revathy D Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
[ACV].[NAMECODE] AS Code,
CASE WHEN
RTRIM(ISNULL([CAN].[COMPANY],'')) <> ''
THEN RTRIM([CAN].[NAME]) + ' ('+ RTRIM([CAN].[COMPANY]) +')'
ELSE RTRIM([CAN].[NAME])
END AS [NameNCompany],
[CAN].[ADDRESS] AS [Address],
[CAN].[PHONENO] AS [Phone],
[ACV].[CATEGORY] AS [Category],
[ACV].[TYPECODE] AS [Type],
[CAN].[NAME] AS [Name],
[CAN].[COMPANY] AS [Company],
RTRIM(ISNULL([CAT].[NAMECODE],'')) AS [NAMECODE],
RTRIM(ISNULL([CAT].[TYPECODE],'')) AS [TYPECODE],
[CAN].[NOTES] AS [Notes]
FROM
[dbo].[AssociateCategoryView] [ACV]
LEFT OUTER JOIN [dbo].[CaseAssociatesNames] [CAN]
ON [ACV].[NAMECODE]= [CAN].[CODE]
LEFT OUTER JOIN [dbo].[CaseAssoicatesTypes] [CAT]
ON [ACV].[NAMECODE]= [CAT].[NAMECODE] AND [ACV].[TYPECODE]= [CAT].[TYPECODE]
WHERE
UPPER([ACV].[TYPECODE]) = UPPER(@TypeCode)
ORDER BY
[ACV].[TYPECODE] ASC,
[ACV].[NAMECODE] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetCategoryContactList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetCategoryContactList]
GO
CREATE PROCEDURE [dbo].[KAAS_GetCategoryContactList]
(
@CategoryType VARCHAR(10) = '',
@Category VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Get contact list based on category code and type *
* *
* Stored Procedure Name : [dbo].[KAAS_GetCategoryContactList] *
* *
* Modification History: *
* 2021-11-01 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
SELECT [CAT].[RECORDID] AS [RecordId],
[CAT].[CONTACT] AS [Contact],
[CAT].[CATEGORYTYPE] AS [CategoryType],
[CAT].[CATEGORY] AS [Category],
[CAT].[DATE] AS [Date],
[CAT].[FIELDVALUE1] AS [FieldValue1],
[CAT].[FIELDVALUE2] AS [FieldValue2],
[CAT].[FIELDVALUE3] AS [FieldValue3],
[CAT].[FIELDVALUE4] AS [FieldValue4],
[CAT].[FIELDVALUE5] AS [FieldValue5],
[CAT].[FIELDVALUE6] AS [FieldValue6],
[CAT].[FIELDVALUE7] AS [FieldValue7],
[CAT].[FIELDVALUE8] AS [FieldValue8],
[CAT].[FIELDVALUE9] AS [FieldValue9],
[CAT].[FIELDVALUE10] AS [FieldValue10],
[CONT].[Name] AS [Name]
FROM
[DBO].[ContactCategories] [CAT]
LEFT JOIN
[Contacts] [CONT] ON [CONT].[Code] = [CAT].[CONTACT]
WHERE
[CategoryType] = @CategoryType
AND [Category] = @Category
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_GetClosedMatterDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetClosedMatterDetails]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetClosedMatterDetails]
AS
/************************************************************************************
* Fetching Closed Matter Details *
* *
* 2021-12-27 Vinodhkumar.M Created to Fetch the Closed Matter details for SAM *
************************************************************************************/
BEGIN
SELECT A.[Code] AS [Code],
A.[FECODE] AS [FECode],
B.[Name] AS [Name],
A.[Description] AS [Description],
A.[OldRef] AS [OldRef],
A.[FileNum] AS [FileNum],
A.[Dept] AS [Dept],
A.[WTYPE] AS [WorkType],
A.[User1] AS [Ref1],
A.[User2] AS [Ref2],
A.[User3] AS [Ref3],
A.[CloseDate] AS [CloseDate],
A.[OrgClosedDate] AS [OriginalClosedDate],
A.[ReOpenedDate] AS [ReopenedDate],
B.[Address] AS [Address],
A.[Comment] AS [Comment]
FROM [dbo].[Matters] A
LEFT JOIN
[dbo].[contacts] B ON A.[CLIENTCODE]= B.[CODE]
WHERE
[Closed] = 'Y'
ORDER BY
A.CODE ASC
END
GO
BEGIN
IF OBJECT_ID(N'KAAS_GetCostTransferCandidates',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetCostTransferCandidates]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetCostTransferCandidates]
(@DATE DATETIME)
AS
/*************************************************************************************************************
* *
* [dbo].[KAAS_GetCostTransferCandidates] *
* *
* Get Cost Transfer Candidates by Date *
* *
* Compatibility information - PLEASE update older versions if necessary to ensure the compatible software *
* remains fully functional *
* ***************************************************************************************************** *
* * * *
* * Supersedes: - * *
* * First compatible version: 5.8.1.19 * *
* * Last compatible software version: - * *
* * Superseded by: - * *
* * * *
* ***************************************************************************************************** *
* *
* Copied From [dbo].[ky_NETSPGetCostTransferCandidates] *
* Modification History *
* 2022-02-04 Vignesh.M Created *
* 2022-02-15 Prabhu.V Added IsWriteOff and Tagged to bind it by default as false *
* 2024-03-01 Ghayathri S.V Modified *
* 2024-04-02 Ghayathri S.V Modified to include Row Number *
*************************************************************************************************************/
BEGIN
SET NOCOUNT ON
SET @DATE = ISNULL(@DATE, CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 112)))
IF @DATE = CONVERT(DATETIME, '19000101', 112)
BEGIN
SET @DATE = CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 112))
END
SELECT [DL].[MATTER] AS [Matter],
RTRIM(ISNULL([BRC].[BRANCHCODE], '')) AS [BranchCode],
RTRIM(ISNULL([BRC].[DESCRIPTION], '')) AS [Branch],
[SM].[Name] AS [Name],
[SM].[Description] AS [Description],
[DL].[DATE] AS [LedgerDate],
[DL].[ORIGINAL] AS [Original],
[DL].[OSVALUE] AS [OSValue],
[PBO].[PreBilledOutlay] AS [UnpaidOutlay],
[MAT].[ClientCurBal] AS [ClientBalance],
[ML].[VALUECC] AS [ClearedClientBalance],
CASE WHEN [DL].[OSVALUE]
- [PBO].[PreBilledOutlay]
- [ALC].[AllocatedValue] <= -[ML].[VALUECC]
THEN [DL].[OSVALUE]
- [PBO].[PreBilledOutlay]
- [ALC].[AllocatedValue]
ELSE - [ML].[VALUECC]
- [ALC].[AllocatedValue] END AS [TransferAmount],
[DL].[REF] AS [BillNo],
[DL].[BATCHNO] AS [BatchNo],
[MAT].[DebtBal] AS [DebtBal],
[DL].[PREF] AS [PREF],
ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS [RowNumber]
FROM [dbo].[DebtorsLedger] [DL]
INNER JOIN [dbo].[SearchMatters] [SM]
INNER JOIN [dbo].[matters] [MAT]
LEFT OUTER JOIN [dbo].[Branch] [BRC]
ON [BRC].[BRANCHCODE] = [MAT].[Branch]
ON [MAT].[Code] = [SM].[Code]
ON [SM].[Code] = [DL].[MATTER]
CROSS APPLY (SELECT SUM([MLCCV].[VALUECC]) AS [VALUECC]
FROM [dbo].[MatLedgerCurClearedView] [MLCCV]
WITH (NOEXPAND)
WHERE [MLCCV].[MATTER] = [DL].[MATTER]
AND [MLCCV].[ClearedDate] <= @DATE) [ML]
CROSS APPLY (SELECT ISNULL(SUM([BD].[VALUE]), 0) AS [PreBilledOutlay]
FROM [dbo].[BatchDetails] [BD]
WHERE [BD].[BATCHNO] = [DL].[BATCHNO]
AND [BD].[OUTLAY] = 'O'
AND [BD].[PreBilledOutlay] = 1) [PBO]
CROSS APPLY (SELECT ISNULL(SUM([BDA].[VALUE]), 0) AS [AllocatedValue]
FROM [dbo].[BatchDetails] [BDA]
INNER JOIN [dbo].[BatchH] [BHA]
ON [BHA].[BATCHNO] = [BDA].[BATCHNO]
AND ISNULL([BHA].[POSTED], 'N') <> 'Y'
WHERE [BDA].[ALLOCBATCH] = [DL].[BATCHNO]
AND [BDA].[ALLOCPREF] = [DL].[PREF]
AND [BDA].[TYPE] = 'R'
AND [BDA].[OUTLAY] = 'D') [ALC]
WHERE [DL].[OSVALUE] > 0
AND [DL].[TYPE] = 'I'
AND ISNULL([ML].[VALUECC], 0) < 0 --<= -[DL].[OSVALUE] --to get the same output as the original
AND CASE WHEN [DL].[OSVALUE]
-- [PBO].[PreBilledOutlay]
- [ALC].[AllocatedValue] <= -[ML].[VALUECC]
THEN [DL].[OSVALUE]
-- [PBO].[PreBilledOutlay]
- [ALC].[AllocatedValue]
ELSE - [ML].[VALUECC]
- [ALC].[AllocatedValue] END > 0
ORDER BY [DL].[MATTER]
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetCreditorsList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetCreditorsList]
GO
CREATE PROCEDURE [dbo].[KAAS_GetCreditorsList]
(@handlerCode VARCHAR(10) = NULL)
AS
/*******************************************************************************************************
* Fetches the creditors list *
* *
* Stored Procedure Name : [dbo].[KAAS_GetCreditorsList] *
* *
* Modification History: *
* 2021-10-01 Revathy D Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [CLT].[SUPPLYCODE] AS [Supplycode],
[CLT].[BATCHNO] AS [Batchno],
[CLT].[PREF] AS [Pref],
[CLT].[REF] AS [Ref],
dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([CLT].[DATE], @handlerCode) AS [Date],
[CLT].[ORIGVALUE] AS [Origvalue],
[CLT].[OSVALUE] AS [Osvalue],
[CLT].[PAYVALUE] AS [Payvalue],
[CLT].[RECORDID] AS [Recordid],
[SUP].[CODE] AS [Code],
[SUP].[NAME] AS [Name],
[SUP].[NOMINAL] AS [Nominal]
FROM [dbo].[CreditorsList] [CLT]
LEFT OUTER JOIN [dbo].[Suppliers] [SUP]
ON [CLT].[SUPPLYCODE] = [SUP].[CODE]
ORDER BY [CLT].[SUPPLYCODE] ASC,
[CLT].[BATCHNO] ASC,
[CLT].[RECORDID] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetDateValidationControls',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetDateValidationControls]
GO
CREATE PROCEDURE [dbo].[KAAS_GetDateValidationControls]
AS
/*******************************************************************************************************
* This sp is used to GET THE CONTROL setting *
* *
* Stored Procedure Name : [dbo].[KAAS_GetDateValidationControls] *
* *
* Modification History: *
* 2021-05-19 Revathy Created *
* 2021-05-23 Balamurugan Modified - Default Outlay Code Added *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
CASE WHEN [DateFutValidation] = '' THEN 0
ELSE ISNULL([DateFutValidation],0) END AS DateFutValidation,
CASE WHEN [DatePastValidation] = '' THEN 0
ELSE ISNULL([DatePastValidation],0) END AS DatePastValidation,
ISNULL(VAC.[Code],'') AS DefaultVATCode,
ISNULL(VAC.[Rate],0.00) AS DefaultVATRate,
RTRIM(ISNULL(CNL.[Creditor],'')) AS CreditorControlAc,
RTRIM(ISNULL(CNL.[Client],'')) AS ClientControlAc,
RTRIM(ISNULL(CNL.[DefaultClientAc],'')) AS DefaultClientAc,
RTRIM(ISNULL(CNL.[DefaultClientDep],'')) AS DefaultClientDepAc,
YearEndDate AS YearEndDate,
[dbo].[KAAS_FN_GetDateFromClarion](PeriodEnd) AS PeriodEndDate,
RTRIM(Outlay) AS DefaultOutlayCode
FROM [dbo].[CONTROL] CNL
LEFT JOIN [dbo].[VATcodes] VAC ON CNL.[Vatexclude] = VAC.[Code]
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetDebtorsLedger', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetDebtorsLedger]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetDebtorsLedger] (
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500),
@SortColumn VARCHAR(100),
@SortOrder VARCHAR(100),
@MatterCode VARCHAR(20))
AS
/*******************************************************************************************************
* Fetches the Debtors Ledger by Matter Code *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMDebtorsLedgerbyMatterCode] *
* *
* Modification History: *
* 2021-03-25 Prabhu V Created *
* 2021-12-02 Vinodhkumar.M Modified - Account Bal, Cleared Bal query added *
* 2022-07-19 Ghayathri.S.V Modified - To implement dynamic sql query to fetch sort *
* and search datas and fetch debtor ledger balances *
* 2022-07-19 Ghayathri.S.V Modified - Included Narrative column in Search filter *
* 2024-02-21 John Ginnane Refactored and renamed procedure *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON;
SET @SortColumn = ISNULL(NULLIF(@SortColumn, ''), 'RECORDID')
IF @SortOrder NOT IN ('ASC', 'DESC')
BEGIN
SET @SortOrder = 'ASC'
END
DECLARE @sql NVARCHAR(max)
DECLARE @offset INT = @PageSize * (@PageNumber - 1)
SET @sql = 'SELECT LTRIM(RTRIM([DTL].[MATTER])) AS [MatterCode],
ISNULL(LTRIM(RTRIM([SM].[Description])), '''') AS [MatterDescription],
ISNULL(LTRIM(RTRIM([SM].[Name])), '''') AS [ClientName],
ISNULL(LTRIM(RTRIM([DTL].[TYPE])), '''') AS [Type],
LTRIM(RTRIM([DTL].[CLIENT])) AS [ClientCode],
[DTL].[DATE] AS [Date],
ISNULL(LTRIM(RTRIM([DTL].[REF])), '''') AS [Ref],
[DTL].[BATCHNO] AS [BatchNo],
[DTL].[PREF] AS [PRef],
ISNULL(LTRIM(RTRIM([DTL].[NARR])), '''') AS [Narrative],
ISNULL([DTL].[ORIGINAL], 0) AS [Original],
ISNULL([DTL].[OSVALUE], 0) AS [OSValue],
ISNULL([DTL].[ORFEES], 0) AS [OriginalFees],
ISNULL([DTL].[OROUTLAY], 0) AS [OriginalOutlay],
ISNULL([DTL].[ORVAT], 0) AS [OriginalVAT],
ISNULL([DTL].[OSFEES], 0) AS [OSFees],
ISNULL([DTL].[OSOUTLAY], 0) AS [OSOutlay],
ISNULL([DTL].[OSVAT], 0) AS [OSVAT],
ISNULL(LTRIM(RTRIM([DTL].[VATCODE])), '''') AS [VATCode],
ISNULL([DTL].[PER], 0) AS [Period],
ISNULL([DTL].[YEAR], 0) AS [Year],
[DTL].[RECORDID] AS [RecordID]
FROM [dbo].[DebtorsLedger] AS [DTL]
INNER JOIN [dbo].[SearchMatters] AS [SM]
ON [SM].[Code] = [DTL].[MATTER]
WHERE [DTL].[MATTER] = ''' + @MatterCode + '''' +
'AND ([DTL].[DATE] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [DTL].[BATCHNO] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [DTL].[PREF] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [DTL].[NARR] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [SM].[Name] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [SM].[Description] LIKE ' + '''%' + @SearchString + '%' + '''' + ')
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(MAX)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(MAX)) + ' ROWS ONLY'
EXEC sp_executesql @sql
SELECT COUNT(1) AS [TotalRecords]
FROM [dbo].[DebtorsLedger] AS [DTL]
INNER JOIN [dbo].[SearchMatters] AS [SM]
ON [DTL].[MATTER] = [SM].[Code]
WHERE ISNULL([DTL].[MATTER], '') = @MatterCode
AND ([DTL].[DATE] LIKE '%' + @SearchString + '%'
OR [DTL].[BATCHNO] LIKE '%' + @SearchString + '%'
OR [DTL].[PREF] LIKE '%' + @SearchString + '%'
OR [DTL].[NARR] LIKE '%' + @SearchString + '%'
OR [SM].[Name] LIKE '%' + @SearchString + '%'
OR [SM].[Description] LIKE '%' + @SearchString + '%')
SELECT ISNULL(SUM([DTL].[ORIGINAL]), 0) AS [DebtorClearedBalance],
ISNULL([MAT].[DebtBal], 0) AS [DebtorAccountBalance],
ISNULL(SUM([DTL].[OSVALUE]), 0) AS [OSValue]
FROM [dbo].[matters] AS [MAT]
LEFT OUTER JOIN [dbo].[DebtorsLedger] AS [DTL]
ON [MAT].[Code] = [DTL].[MATTER]
AND ISNULL([DTL].[ClearedDate], [DTL].[DATE]) <= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
WHERE [MAT].[Code] = @MatterCode
GROUP BY [MAT].[Code],
[MAT].[DebtBal]
END
GO
IF OBJECT_ID(N'KAAS_GetDebtorsLedgerAllocations', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetDebtorsLedgerAllocations]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetDebtorsLedgerAllocations] (
@RecordID INT)
AS
/*******************************************************************************************************
* Returns a list of allocations for the specified debtors ledger record *
* *
* Stored Procedure Name : [dbo].[KAAS_GetDebtorsLedgerAllocations] *
* *
* Modification History: *
* 2021-03-31 Prabhu V Created *
* 2024-02-21 John Ginnane Refactored and renamed procedure *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON;
SELECT LTRIM(RTRIM([DTL].[MATTER])) AS [MatterCode],
ISNULL(LTRIM(RTRIM([SM].[Description])), '') AS [MatterDescription],
ISNULL(LTRIM(RTRIM([SM].[Name])), '') AS [ClientName],
ISNULL(LTRIM(RTRIM([DTL].[TYPE])), '') AS [Type],
LTRIM(RTRIM([DTL].[CLIENT])) AS [ClientCode],
[DTL].[DATE] AS [Date],
ISNULL(LTRIM(RTRIM([DTL].[REF])), '') AS [Ref],
[DTL].[BATCHNO] AS [BatchNo],
[DTL].[PREF] AS [PRef],
ISNULL(LTRIM(RTRIM([DTL].[NARR])), '') AS [Narrative],
ISNULL([DTL].[ORIGINAL], 0) AS [Original],
ISNULL([DTL].[OSVALUE], 0) AS [OSValue],
ISNULL([DTL].[ORFEES], 0) AS [OriginalFees],
ISNULL([DTL].[OROUTLAY], 0) AS [OriginalOutlay],
ISNULL([DTL].[ORVAT], 0) AS [OriginalVAT],
ISNULL([DTL].[OSFEES], 0) AS [OSFees],
ISNULL([DTL].[OSOUTLAY], 0) AS [OSOutlay],
ISNULL([DTL].[OSVAT], 0) AS [OSVAT],
ISNULL(LTRIM(RTRIM([DTL].[VATCODE])), '') AS [VATCode],
ISNULL([DTL].[PER], 0) AS [Period],
ISNULL([DTL].[YEAR], 0) AS [Year],
[DTL].[RECORDID] AS [RecordID]
FROM [dbo].[DebtorsLedger] AS [DTL]
INNER JOIN [dbo].[SearchMatters] AS [SM]
ON [SM].[Code] = [DTL].[MATTER]
WHERE [DTL].[RECORDID] = @RecordID
SELECT ISNULL([ALO].[BATCHNO], 0) AS [BatchNo],
ISNULL([ALO].[PREF], 0) AS [Pref],
[ALO].[DATE] AS [AllocationDate],
[DTL].[DATE] AS [TransactionDate],
ISNULL([ALO].[ABATCHNO], 0) AS [ABatchNo],
ISNULL([ALO].[OPREF], 0) AS [OPref],
ISNULL(LTRIM(RTRIM([ALO].[OREF])), '') AS [ORef],
ISNULL([ALO].[VALUE], 0) AS [Value],
ISNULL([ALO].[FEES], 0) AS [Fees],
ISNULL([ALO].[OUTLAY], 0) AS [Outlay],
ISNULL([ALO].[VAT], 0) AS [VAT],
ISNULL(LTRIM(RTRIM([ALO].[USERCODE])), '') AS [UserCode],
ISNULL([ALO].[AllNo], 0) AS [AllNo],
ISNULL([ALO].[KEYID], 0) AS [KeyID]
FROM [dbo].[DebtorsLedger] AS [DTL]
INNER JOIN [dbo].[Allocations] AS [ALO]
ON [DTL].[BATCHNO] = [ALO].[BATCHNO]
AND [DTL].[PREF] = [ALO].[PREF]
WHERE [DTL].[RECORDID] = @RecordID
ORDER BY [ALO].[AllNo] ASC,
[ALO].[KEYID] ASC
SET NOCOUNT OFF;
END
GO
IF OBJECT_ID(N'KAAS_GetDebtorsLedgerDetailsByClient', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetDebtorsLedgerDetailsByClient]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetDebtorsLedgerDetailsByClient]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'Client',
@SortOrder VARCHAR(100) = 'ASC',
@Code VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Fetches the Debtors Ledger details by client *
* *
* Stored Procedure Name : [dbo].[KAAS_GetDebtorsLedgerDetailsByClient] *
* *
* Modification History: *
* 2021-07-06 Balamurugan C Created *
* 2021-11-11 Balamurugan C Updated - Batch No is added
* 2022-07-18 Ghayathri.S.V Modified to implement dynamic sql query to fetch sort
and search datas and fetch debtor ledger balances
*******************************************************************************************************/
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql = 'SELECT [BatchNo],
[RecordId],
[Type],
[Date],
[Matter],
[Ref],
[Narr],
[Original],
[OsValue]
FROM [dbo].[DebtorsLedger]
WHERE [Client] = ''' + @Code + '''' +
'AND (
[BatchNo] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[Date] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Matter] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Ref] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Narr] LIKE ' + '''%' + @SearchString + '%' + '''' +
')
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
SELECT COUNT(*) 'TotalRecord'
FROM [dbo].[DebtorsLedger]
WHERE Client = @Code
AND (
[BatchNo] LIKE '%' + @SearchString + '%'
OR
[Date] LIKE '%' + @SearchString + '%'
OR
[Matter] LIKE '%' + @SearchString + '%'
OR
[Ref] LIKE '%' + @SearchString + '%'
OR
[Narr] LIKE '%' + @SearchString + '%'
)
SELECT ISNULL(SUM(ISNULL([Original], 0)), 0) AS [DebtorOriginalBalance],
ISNULL(SUM(ISNULL([OSVALUE], 0)), 0) AS [DebtorOsValueBalance]
FROM [dbo].[DebtorsLedger]
WHERE Client = @Code
END
GO
BEGIN
IF OBJECT_ID(N'KAAS_GetEFTDetailsPopupData',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetEFTDetailsPopupData]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetEFTDetailsPopupData]
(
@CODE VARCHAR(20)
)
AS
/************************************************************************************************************* *
* Modification History *
* 2024-03-19 Ghayathri S.V Created *
*************************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT A.[EFTYN] AS [EftYn],
A.[EFTLIMIT] AS [EftLimit],
A.[EFTTRANSACTIONLIMIT] AS [EftTransactionLimit],
A.[BANKFILENAME] AS [BankFileName],
A.[LOCATION] AS [Location],
A.[FILENUMBER] AS [FileNumber],
A.[RECORDID] AS [RecordId]
FROM dbo.[EFTDetails] A
WHERE A.[RecordID] = 1
ORDER BY A.[RecordID] ASC
IF(@CODE != '')
BEGIN
SELECT NOM.[SORTCODE] AS [SortCode],
NOM.[ACCOUNTNO] AS [AccountNumber],
NOM.[IBAN] AS [Iban],
NOM.[BIC] AS [Bic],
NOM.[ORGIDNUMBER] AS [OrgNumber]
FROM dbo.[Nominal] NOM
WHERE NOM.[CODE] = @CODE
ORDER BY NOM.[CODE] ASC
END
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetEFTGridDetails',N'P')IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetEFTGridDetails]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetEFTGridDetails]
(
@FROMDATE DATETIME,
@TODATE DATETIME,
@CODE VARCHAR(20),
@TYPE CHAR(1)
)
AS
/************************************************************************************************************* *
* Modification History *
* 2024-03-19 Ghayathri S.V Created *
* 2024-03-25 Ghayathri S.V Modified - Updated the logic around Batch NUmber to fetch the details *
*************************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @BATCHNO INT
SET @BATCHNO = NULL
SELECT TOP 1 @BATCHNO = BATCHNO FROM BatchH ORDER BY BATCHNO DESC
SET @FROMDATE = ISNULL(@FROMDATE, CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 102)))
SET @TODATE = ISNULL(@TODATE, CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 102)))
IF @TYPE = 'T' OR @TYPE = 'R'
BEGIN
SELECT A.[BATCHNO] AS [BatchNo],
A.[REF] AS [Ref],
A.[TYPE] AS [Type],
A.[DATE] AS [Date],
A.[VALUE] AS [Value],
A.[CLIENTBANK] AS [BankCode],
A.[PAYEE] AS [Payee],
A.[EFTEMAILYORN] AS [EmailEft],
A.[BRANCH] AS [Branch],
A.[NARR] AS [Narr],
A.[SUPP] AS [SupplierCode],
B.[NAME] AS [SupplierName],
A.[CLIENTCODE] AS [ClientCode],
A.[CASEASSCODE] AS [CaseAssCode],
A.[EFTSENT] AS [EftSent]
FROM dbo.BatchH A
LEFT OUTER JOIN dbo.Suppliers B
ON A.SUPP= B.CODE
WHERE (A.[Type] = @TYPE AND A.[Posted] = 'Y'
AND A.[EFTSent] <> 'Y' AND A.[EFTYorN] = 'Y'
AND A.[CLIENTBANK] = @CODE
AND A.[DATE] >= CONVERT(DATETIME, @FROMDATE, 102)
AND A.[DATE] <= CONVERT(DATETIME, @TODATE, 102))
AND (A.[POSTED] >= 'Y') AND (( A.[POSTED] > 'Y' ) OR (( A.[BATCHNO] <= @BATCHNO )))
ORDER BY A.[POSTED] ASC, A.[BATCHNO] ASC
END
ELSE
BEGIN
SELECT A.[BATCHNO] AS [BatchNo],
A.[REF] AS [Ref],
A.[TYPE] AS [Type],
A.[DATE] AS [Date],
A.[VALUE] AS [Value],
A.[CODE] AS [BankCode],
A.[PAYEE] AS [Payee],
A.[EFTEMAILYORN] AS [EmailEft],
A.[BRANCH] AS [Branch],
A.[NARR] AS [Narr],
A.[SUPP] AS [SupplierCode],
B.[NAME] AS [SupplierName],
B.[EmailAddress] AS [SupplierEmailAddress],
A.[CLIENTCODE] AS [ClientCode],
A.[CASEASSCODE] AS [CaseAssCode],
A.[EFTSENT] AS [EftSent]
FROM dbo.BatchH A
LEFT OUTER JOIN dbo.Suppliers B
ON A.SUPP= B.CODE
WHERE (A.[Type] = @TYPE AND A.[Posted] = 'Y'
AND A.[EFTSent] <> 'Y' AND A.[EFTYorN] = 'Y'
AND A.Code = @CODE
AND A.[DATE] >= CONVERT(DATETIME, @FROMDATE, 102)
AND A.[DATE] <= CONVERT(DATETIME, @TODATE, 102))
AND (A.[POSTED] >= 'Y') AND (( A.[POSTED] > 'Y' ) OR (( A.[BATCHNO] <= @BATCHNO )))
ORDER BY A.[POSTED] ASC, A.[BATCHNO] ASC
END
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetFeeEarnerCodesMasterDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetFeeEarnerCodesMasterDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetFeeEarnerCodesMasterDetails]
(
@Code VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Fetch the Fee Earner Codes Master details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetFeeEarnerCodesMasterDetails] *
* *
* Modification History: *
* 2021-06-23 Balamurugan C Created *
* 2022-03-02 Vignesh.M Modified Branch Implemented *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [Code],
[Name],
[Nominal],
[Retired],
[Branch]
FROM [dbo].[FeeEarnerCodes]
WHERE [CODE] = @Code
ORDER BY [CODE]
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetHandlerDropdownList', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetHandlerDropdownList]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetHandlerDropdownList]
AS
BEGIN
/*************************************************************************************************************
* *
* [dbo].[KAAS_GetHandlerDropdownList] *
* *
* Description: This procedure is used to check Handler Code exists or not *
* *
* ***************************************************************************************************** *
* *
* Modification history: *
* 2021-06-25 Natarajan S Created *
* 2021-06-29 Natarajan S Modified - Added charges group *
* 2021-07-09 Balamurugan C Modified - Fee Earner Details *
*************************************************************************************************************/
SELECT [HAN].[Code] AS [Code],
[HAN].[Team] AS [Description]
FROM [dbo].[Handlers] [HAN]
WHERE [HAN].[TeamCode] = 'Y'
AND [HAN].[Retired]='N'
ORDER BY [HAN].[Code] ASC
SELECT [FEE].[Code],
[FEE].[Name] AS [Description],
[FEE].[Retired]
FROM [dbo].[FeeEarnerCodes] FEE
ORDER BY [FEE].[Code] ASC
SELECT RTRIM([TAC].[Code]) AS [Code],
[TAC].[Desc] AS [Description]
FROM [dbo].[TasksCodes] [TAC]
WHERE [TAC].[AxleTask] = 'N'
OR [TAC].[AxleTask] = ''''
ORDER BY [TAC].[Code] ASC
SELECT RTRIM([HAN].[Code]) AS [Code],
[HAN].[Name] AS [Description]
FROM [dbo].[Handlers] [HAN]
LEFT OUTER JOIN [dbo].[NoOverDueTasks] [NOT]
ON [HAN].[Code]= [NOT].[Handler]
WHERE [HAN].[Retired] <> 'Y'
AND [HAN].[Code] <> 'JP '
ORDER BY [HAN].Code ASC
SELECT [DEP].[Code] AS [Code],
[DEP].[Description] AS [Description]
FROM [dbo].Departments [DEP]
SELECT RTRIM([BCH].[BranchCode]) AS [Code],
[BCH].[Description] AS [Description]
FROM [dbo].[Branch] [BCH]
WHERE [BCH].[Retired]=0
SELECT RTRIM([HCG].[Code]) AS [Code],
[HCG].[Name] AS [Description]
FROM [dbo].[HandlerChargeGroups] [HCG]
END
GO
IF OBJECT_ID(N'KAAS_GetHandlersMaster', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetHandlersMaster]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[KAAS_GetHandlersMaster]
AS
/*******************************************************************************************************
* Fetches Handlers master list *
* *
* Stored Procedure Name : [dbo].[KAAS_GetHandlersMaster] *
* *
* Modification History: *
* 2021-05-21 Natarajan S Created *
* 2022-02-09 Vinodhkumar.M Modifed - added email fields *
*******************************************************************************************************/
BEGIN
SELECT [HAN].CODE AS [Code],
[HAN].TEAM AS [Team],
[HAN].NAME AS [Name],
[HAN].RATE AS [Rate],
[HAN].RETIRED AS [Retired],
[HAN].[EMAIL] AS [Email]
FROM [dbo].Handlers AS [HAN]
ORDER BY [HAN].CODE ASC
END
GO
IF EXISTS(SELECT
TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetInvoiceList'
AND SO.[type] = 'P'
)
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetInvoiceList]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetInvoiceList] (
@Matter VARCHAR(50) = NULL
)
AS
/*******************************************************************************************************
* Fetches the Invoice list *
* *
* Stored Procedure Name : [dbo].[KAAS_GetInvoiceList] '000001/0003' *
* *
* Modification History: *
* 14 Jul 2021 Natarajan S Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [DBL].[RecordId] AS [RecordId],
[DBL].[BATCHNO] AS [BatchNo],
[DBL].[Type] AS [Type],
[DBL].[Ref] AS [Ref],
[CON].[Name] AS [Narr],
[DBL].[Date] AS [Date],
[DBL].[Original] AS [Original],
[DBL].[OSValue] AS [OsValue],
[DBL].[OSFees] AS [OsFees],
[DBL].[OsOutlay] AS [OsOutlay],
[DBL].[OsVat] AS [OsVat]
FROM [dbo].[DebtorsLedger] [DBL]
LEFT OUTER JOIN [dbo].[Matters] [MAT]
ON [DBL].[MATTER] = [MAT].[Code]
LEFT OUTER JOIN [dbo].[Contacts] [CON]
ON [MAT].[ClientCode] = [CON].[Code]
WHERE [DBL].[Matter] = @Matter
AND [DBL].[OSValue] > 0
ORDER BY [DBL].[Matter] ASC,
[DBL].[Date] ASC,
[DBL].[RecordId] ASC
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetAccountsMenuList'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetAccountsMenuList]
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetKeyhouseMenuList'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetKeyhouseMenuList]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE
[dbo].[KAAS_GetKeyhouseMenuList]
(
@HandlerCode VARCHAR(10),
@Mode VARCHAR(10),
@ApplType VARCHAR(10) = 'SAM'
)
AS
/*******************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_GetKeyhouseMenuList] *
* Description: To get SAM and CASE menu List *
* *
* Modification History: *
* 2023-12-28 Balamurugan C Created *
* 2024-01-09 Balamurugan C Added column of MenuOpenNewTab *
* 2024-01-09 Sadiq Basha N Added column of MenuOpenDialogBox *
* 2024-01-17 Balamurugan C Changed Order By logic *
* 2024-01-22 Balamurugan C Fetch Handler Supervior Key *
* 2024-02-13 Balamurugan C Modified : Remove the menu from list when view access set *
to false (Removed the write or read access conition) *
* 2024-04-04 Balamurugan C Modified : Added the new logic in menu master table to *
fetch the case management menus *
Note: Changed the SP name from KAAS_GetAccountsMenuList to *
KAAS_GetKeyhouseMenuList because both case and SAM menu's *
handled *
*******************************************************************************************************/
BEGIN
IF(@ApplType = 'SAM')
BEGIN
SELECT * FROM (
SELECT
[AMM].[MenuId] AS [MenuId],
[AMM].[MenuName] AS [MenuName],
[AMM].[MenuParentId] AS [MenuParentId],
[AMM].[MenuRoute] AS [MenuRoute],
[AMM].[MenuIconName] AS [MenuIconName],
[AMM].[MenuCode] AS [MenuCode],
[AMM].[MenuOrder] AS [MenuOrder],
[AMM].[MenuOpenNewTab] AS [MenuOpenNewTab],
[AMM].[MenuOpenDialogBox] AS [MenuOpenDialogBox],
ISNULL([HMP].[HandlerPermissionMapId],0) AS [HandlerPermissionMapId],
CASE WHEN (
SELECT COUNT([SHMP].MenuId)
FROM [dbo].[HandlerMenuPermissionMap] [SHMP]
WHERE [SHMP].[HandlerCode] = @HandlerCode
) > 0 THEN CASE WHEN [HMP].[ReadAccess] IS NULL THEN 1 ELSE [HMP].[ReadAccess] END ELSE 1 END AS [ReadAccess],
CASE WHEN (
SELECT COUNT([SHMP].MenuId)
FROM [dbo].[HandlerMenuPermissionMap] [SHMP]
WHERE [SHMP].[HandlerCode] = @HandlerCode
) > 0 THEN CASE WHEN [HMP].[WriteAccess] IS NULL THEN 0 ELSE [HMP].[WriteAccess] END ELSE 0 END AS [WriteAccess]
FROM [dbo].[KeyhouseMenuList] [AMM]
LEFT JOIN [dbo].[HandlerMenuPermissionMap] [HMP]
ON [HMP].MenuId = [AMM].MenuId AND [HMP].[HandlerCode] = @HandlerCode
WHERE [AMM].MenuIsActive = 1 AND [AMM].[MenuApplicationType] = 'A'
) FA
WHERE (@Mode = 'Menu' AND (FA.ReadAccess = 1)) OR
(@Mode <> 'Menu' AND FA.MenuCode NOT IN ('DASHBOARD','VIEW_DASHBOARD','USER_ACCESS'))
ORDER BY CASE WHEN FA.[MenuParentId] = 0 THEN 0 ELSE 1 END, -- Rows with MenuParentId = 0 come first
FA.[MenuParentId] ASC,
FA.[MenuOrder] ASC;
END
IF(@ApplType ='CASE')
BEGIN
SELECT * FROM (
SELECT
[AMM].[MenuId] AS [MenuId],
[AMM].[MenuName] AS [MenuName],
[AMM].[MenuParentId] AS [MenuParentId],
[AMM].[MenuRoute] AS [MenuRoute],
[AMM].[MenuIconName] AS [MenuIconName],
[AMM].[MenuCode] AS [MenuCode],
[AMM].[MenuOrder] AS [MenuOrder],
[AMM].[MenuOpenNewTab] AS [MenuOpenNewTab],
[AMM].[MenuOpenDialogBox] AS [MenuOpenDialogBox],
ISNULL([HMP].[HandlerPermissionMapId],0) AS [HandlerPermissionMapId],
CASE WHEN (
SELECT COUNT([SHMP].MenuId)
FROM [dbo].[HandlerMenuPermissionMap] [SHMP]
WHERE [SHMP].[HandlerCode] = @HandlerCode
) > 0 THEN CASE WHEN [HMP].[ReadAccess] IS NULL THEN 1 ELSE [HMP].[ReadAccess] END ELSE 1 END AS [ReadAccess],
CASE WHEN (
SELECT COUNT([SHMP].MenuId)
FROM [dbo].[HandlerMenuPermissionMap] [SHMP]
WHERE [SHMP].[HandlerCode] = @HandlerCode
) > 0 THEN CASE WHEN [HMP].[WriteAccess] IS NULL THEN 0 ELSE [HMP].[WriteAccess] END ELSE 0 END AS [WriteAccess]
FROM [dbo].[KeyhouseMenuList] [AMM]
LEFT JOIN [dbo].[HandlerMenuPermissionMap] [HMP]
ON [HMP].MenuId = [AMM].MenuId AND [HMP].[HandlerCode] = @HandlerCode
WHERE [AMM].MenuIsActive = 1 AND [AMM].[MenuApplicationType] = 'C'
) FA
WHERE (@Mode = 'Menu' AND (FA.ReadAccess = 1)) OR
(@Mode <> 'Menu' AND FA.MenuCode NOT IN ('CASE_USER_ACCESS'))
ORDER BY CASE WHEN FA.[MenuParentId] = 0 THEN 0 ELSE 1 END, -- Rows with MenuParentId = 0 come first
FA.[MenuParentId] ASC,
FA.[MenuOrder] ASC;
END
--Fetch Handler Code Supervisor Key
SELECT [Supervisor]
FROM [dbo].[HandlerNETLogons]
WHERE [HANDLER] = @HandlerCode
END
GO
IF OBJECT_ID(N'KAAS_GetMatterValues',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetMatterValues]
GO
CREATE PROC dbo.[KAAS_GetMatterValues]
(
@MatterCode VARCHAR(20)
)
AS
/*******************************************************************************************************
* To fetch the matter billing details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetMatterValues] *
* *
* Modification History: *
* 2021-05-18 Revathy D Created *
* 2021-11-30 Vinodhkumar M Modified - MatterCode values fetch from matters table *
* 2021-11-30 Balamurugan C Modified - Added Client Balance *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @RECORDCOUNT INT
SET @RECORDCOUNT = (SELECT COUNT(*) FROM [dbo].[Matters] WHERE [Code] = @MatterCode)
IF( @RECORDCOUNT > 0)
BEGIN
SELECT [MAT].[DebtBal] AS [BillingAc],
[MAT].[OutlayBal] AS [OutlayAc],
[MAT].[ClientCurBal] AS [CurrentAc],
[MAT].[ClientDepBal] AS [DepositAc],
[MAT].[ClientBal] AS [ClientBal]
FROM [dbo].[Matters] [MAT]
WHERE [MAT].[Code] = @MatterCode
END
ELSE
BEGIN
SELECT
0.00 OutlayAc,
0.00 BillingAc,
0.00 CurrentAc,
0.00 DepositAc,
0.00 ClientBal
END
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetMatterValuesWithClosedDetails',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetMatterValuesWithClosedDetails]
GO
CREATE PROC dbo.[KAAS_GetMatterValuesWithClosedDetails]
(
@MatterCode VARCHAR(20)
)
AS
/*******************************************************************************************************
* To fetch the matter billing and Closed details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetMatterValuesWithClosedDetails] *
* *
* Modification History: *
* 2024-05-08 Vignesh M Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @RECORDCOUNT INT
SET @RECORDCOUNT = (SELECT COUNT(*) FROM [dbo].[Matters] WHERE [Code] = @MatterCode)
IF( @RECORDCOUNT > 0)
BEGIN
SELECT
[MAT].[DebtBal] AS [BillingAc],
[MAT].[OutlayBal] AS [OutlayAc],
[MAT].[ClientCurBal] AS [CurrentAc],
[MAT].[ClientDepBal] AS [DepositAc],
[MAT].[ClientBal] AS [ClientBal]
FROM [dbo].[Matters] [MAT]
WHERE [MAT].[Code] = @MatterCode
END
ELSE
BEGIN
SELECT
0.00 OutlayAc,
0.00 BillingAc,
0.00 CurrentAc,
0.00 DepositAc,
0.00 ClientBal
END
SELECT
[MAT].[Code] AS [Code],
[MAT].[ClientCode] AS [ClientCode],
[MAT].[Matter] AS [MatterNo],
[MAT].[FECode] AS [FECode],
[MAT].[Closed] AS [Closed],
[MAT].[ClientMin] AS [ClientMin],
[MAT].[OutlayBud] AS [OutlayBud],
[CON].[Name] AS [Name],
[MAT].[Description] AS [Description]
FROM [dbo].[matters] [MAT]
LEFT JOIN [dbo].[Contacts] [CON]
ON [MAT].[ClientCode] = [CON].[Code]
WHERE [MAT].[Code] = @MatterCode
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetNextPrefNBatchNo',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetNextPrefNBatchNo]
GO
CREATE PROCEDURE [dbo].[KAAS_GetNextPrefNBatchNo]
(
@IsBatchHeader VARCHAR(1) = 'Y',
@IsUpdateBillHeader VARCHAR(1) = 'N'
)
AS
/*******************************************************************************************************
* Fetches the next Posting ref and batch number *
* *
* Stored Procedure Name : [dbo].[KAAS_GetNextPrefNBatchNo] *
* *
* Modification History: *
* 2021-04-10 Revathy D Created *
* 2022-02-23 Balamurugan.C Modified - Handled T-SQL Statements
* 2022-11-02 Ghayathri.S.V Modified - Reduced multiple select statements to one select for
fetching details from control table *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
DECLARE @NEWBATCH INT
DECLARE @NEWPREF INT
DECLARE @NEWBILL INT
SELECT @NEWBATCH = LASTBATCH + 1,
@NEWPREF = LASTPREF + 1,
@NEWBILL = LASTBILL + 1
FROM [dbo].[control]
IF(@IsBatchHeader = 'Y')
BEGIN
UPDATE
[dbo].[control]
SET
[LASTBATCH] = @NEWBATCH,
[LASTPREF] = @NEWPREF
END
ELSE
BEGIN
UPDATE
[dbo].[control]
SET
[LASTPREF] = @NEWPREF
END
IF(@IsUpdateBillHeader = 'Y')
BEGIN
UPDATE
[dbo].[control]
SET
[LASTBILL] = @NEWBILL
END
SELECT
[LASTBATCH] AS [BatchNo],
[LASTPREF] AS [Pref],
[CURPER] AS [CurPer],
[YEAR] AS [Year],
[LASTBILL] AS [BillNo]
FROM
[dbo].[control]
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetNominalAccountsDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetNominalAccountsDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetNominalAccountsDetails]
(
@Code VARCHAR(10) = '',
@Mode VARCHAR(10) = 'GRID'
)
AS
/*******************************************************************************************************
* Fetches the Nomonal details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetNominalAccountsDetails] *
* *
* Modification History: *
* 2021-04-28 Balamurugan C Created *
* 2021-05-04 Balamurugan C Dropdown Values Added *
* 2021-06-25 Balamurugan C Select Nominal Details By Code *
* 2021-10-12 Vinodhkumar M retired,Seq - columns added
* 2021-05-02 Ghayathri.S.V Balance - columns added
* 2022-06-01 Vignesh M Branch column implemented *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
/*MASTER DETAILS FROM NOMINAL TABLE*/
IF(@Mode='GRID')
BEGIN
SELECT [Code],
[Desc],
[Type],
[Pb],
[Balance],
[Retired],
[Seq]
FROM [dbo].[Nominal]
ORDER BY [Code] ASC
END
ELSE
BEGIN
SELECT [Code],
[Desc],
[Type],
[Pb],
[Balance],
[Seq],
[Retired],
[ClientAc],
[DepositYN],
[DepositType],
[ChequeReq],
[ChequePrinter],
[LastNo],
[Bank],
[BankBranch],
[BankType],
[BankPhone],
[BankAddress],
[AccountNo],
[AccountName],
[SortCode],
[WithdrawNames],
[AcOpened],
[AcClosed],
[Iban],
[Bic],
[OrgIDNumber],
[Branch]
FROM [dbo].[Nominal]
WHERE [Code] = @Code
ORDER BY [Code] ASC
END
/*STATIC DETAILS FOR NOMINAL TYPE DROPDOWN*/
SELECT RTRIM([NTYCODE]) AS 'Code',
RTRIM([NTYDESC]) AS 'Description'
FROM [dbo].[NominalTypes]
ORDER BY [NTYCODE] ASC
/*STATIC DETAILS FOR NOMINAL REQPORT SEQ*/
SELECT RTRIM([CODE]) AS 'Code',
RTRIM([DESC]) AS 'Desc',
[PB] AS 'Pb'
FROM [dbo].[NominalReportSeq]
ORDER BY [Code] ASC
/*STATIC DETAILS FOR DEPOSIT TYPE*/
SELECT RTRIM([CODE]) AS 'Code',
RTRIM([DESCRIPTION]) AS 'Description'
FROM [dbo].[DepositType]
ORDER BY [Code] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetNominalBudgetDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetNominalBudgetDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetNominalBudgetDetails]
(
@Year INT = 0,
@Code VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Fetches the Nomonal Budget details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetNominalBudgetDetails] *
* *
* Modification History: *
* 2021-05-06 Balamurugan C Created *
* 2021-06-23 Balamurugan C Added Code where clause *
* 2024-04-24 Balamurugan C Branch Description Added to the select list *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
/*GRID DETAILS FROM NOMINAL BUDGET*/
SELECT [NOM].[RecordID],
[NOM].[Code],
[NOM].[Branch],
[NOM].[Year],
[NOM].[Period],
[NOM].[Budget],
[BRN].[Description] AS [BranchName]
FROM [dbo].[NominalBudgets] [NOM]
LEFT JOIN [dbo].[Branch] [BRN]
ON [BRN].[BranchCode] = [NOM].[Branch]
WHERE [NOM].[Year] = @Year AND
[NOM].[Code] = @Code
ORDER BY [NOM].[Code] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetNominalLedgerDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetNominalLedgerDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetNominalLedgerDetails]
(
@PageNumber INT = 1,
@PageSize INT = 100,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'Code',
@SortOrder VARCHAR(100) = 'ASC',
@Year INT = 0,
@Code VARCHAR(10) = '',
@Flag VARCHAR(15) = '',
@Branch VARCHAR(5) = ''
)
AS
/*******************************************************************************************************
* Fetches the Nominal Ledger details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetNominalLedgerDetails] *
* *
* Modification History: *
* 2021-05-14 Balamurugan C Created *
* 2021-05-14 Prabhu V Added Type column to identity Bank type Account *
* 2021-09-23 Prabhu V Added Alias name to prevent ambiguous error *
* 2022-01-04 Vinodhkumar.M Modified - Added Balance, Cleared Query from Clarion *
* 2022-02-17 Prabhu.V if branch selected data should be filtered with branch *
* 2022-07-19 Ghayathri.S.V Modified - To implement dynamic sql query to fetch sort *
and search datas and fetch debtor ledger balances *
* 2022-08-09 Ghayathri.S.V Modified - To add matter column and removed columns for *
server side pagination search *
* 2024-03-01 Revathy.D Modified - Included RecNo,Reconcile Status fields *
* 2024-10-04 Balamurugan.C Modified - Branch Filter added with all option *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
/*NOMINAL TYPE LIST*/
IF(@Flag='NOMINALDETAILS')
BEGIN
SELECT
[Code],
[Desc],
[Type]
FROM [dbo].[Nominal]
ORDER BY [Code] ASC
END
/*GRID DETAILS FROM NOMINAL LEDGER*/
IF(@Flag='NOMINALLEDGER')
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql = 'SELECT [NOL].[Pref],
[NOL].[Date],
[NOL].[RecordId],
[NOL].[Code],
[NOL].[Ref],
[NOL].[Narr],
[NOL].[Matter],
[NOL].[Supp],
[NOL].[Value],
[NOL].[BatchNo],
[NOL].[Branch],
[NOL].[Year],
[NOL].[ClearedDate],
[BH].[Type],
[NOL].[RecNo],
CASE WHEN ISNULL([NOL].[RecNo],0) <= 0
THEN ''Outstanding''
ELSE ''Reconciled'' END AS [RecStatus]
FROM [dbo].[NominalLedger] [NOL]
LEFT JOIN [BatchH] [BH]
ON [BH].[BatchNo] = [NOL].[BatchNo]
WHERE [NOL].[Code] = ''' + @Code + '''' +
'AND [NOL].[Year] = ' + CAST(@Year AS NVARCHAR(10)) +
'AND ( ''' + @Branch + ''' = ''ALL'' OR [NOL].BRANCH = ''' + @Branch + '''' + ')
AND (
[NOL].[Pref] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[NOL].[Date] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[NOL].[Ref] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[NOL].[Narr] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[NOL].[BatchNo] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[NOL].[Matter] LIKE ' + '''%' + @SearchString + '%' + '''' +
')
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
SELECT COUNT(*) 'TotalRecord'
FROM [dbo].[NominalLedger] [NOL]
LEFT JOIN [BatchH] [BH]
ON [BH].[BatchNo] = [NOL].[BatchNo]
WHERE [NOL].[Code] = @Code
AND [NOL].[Year] = @Year
AND (@Branch='ALL' OR [NOL].BRANCH = @Branch)
AND (
[NOL].[Pref] LIKE '%' + @SearchString + '%'
OR
[NOL].[Date] LIKE '%' + @SearchString + '%'
OR
[NOL].[Ref] LIKE '%' + @SearchString + '%'
OR
[NOL].[Narr] LIKE '%' + @SearchString + '%'
OR
[NOL].[BatchNo] LIKE '%' + @SearchString + '%'
OR
[NOL].[Matter] LIKE '%' + @SearchString + '%'
)
/*Query for Balance*/
SELECT ISNULL(SUM(ISNULL([NOL].[VALUE], 0)), 0) AS Balance
FROM [dbo].[Nominalledger] [NOL]
WHERE [NOL].[YEAR] = @Year
AND [NOL].[CODE] = @Code
AND (@Branch='ALL' OR @Branch = '' OR [NOL].BRANCH = @Branch)
/*Query for Cleared Balance*/
SELECT ISNULL(SUM(ISNULL([NML].[VALUE], 0)), 0) AS ClearedBalance
FROM [dbo].[NominalLedger] AS [NML]
WHERE [NML].[CODE] = @Code
AND ISNULL([NML].[ClearedDate], [NML].[DATE]) <= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
AND [NML].[YEAR] = @Year
AND (@Branch='ALL' OR @Branch = '' OR [NML].BRANCH = @Branch)
END
SET NOCOUNT OFF
END
GO
IF EXISTS
(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KAAS_GetNominalList]') AND type in (N'P', N'PC'))
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetNominalList]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetNominalList]
AS
/*******************************************************************************************************
* Fetches the Nominal list *
* *
* Stored Procedure Name : [dbo].[KAAS_GetNominalList] *
* *
* Modification History: *
* 2021-03-23 Revathy D Created
* 2022-02-01 Ghayathri SV Modified : Added Type column to selecte statement
*******************************************************************************************************/
BEGIN
SELECT
NOM.[CODE] AS Code,
NOM.[DESC] AS [Description],
NOM.[TYPE] AS [Type]
FROM
[dbo].[Nominal] NOM
ORDER BY
NOM.[CODE] ASC
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_GetOpenMatterDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetOpenMatterDetails]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetOpenMatterDetails]
AS
/************************************************************************************
* Fetching Open Matter Details *
* *
* 2021-03-10 Prabhu.V Created to Fetch the Open Matter details for SAM *
* 2021-10-07 Balamurugan.C Added ChargeBal Field *
* 2021-11-23 Vinodhkumar.M Added outlayBal,CLientCurBal,ClientDepBal Field *
* 2022-01-20 Vinodhkumar.M Added CloseDate,OriginalClosedDate,RepenDate Field
* 2022-02-25 Ghayathri.S.V Modified the Order by Clause according to Matter Code *
************************************************************************************/
BEGIN
SELECT A.[Code],
A.[ClientCode],
A.[Description],
A.[FECODE] As FeeCode,
A.[Dept],
A.[WTYPE] As WorkType,
A.[Branch],
A.[Comment],
A.[FileNum],
A.[ThirdPart],
A.[THPARTSOL],
A.[OldRef],
A.[PCode],
A.[PFECode],
A.[User1],
A.[User2],
A.[User3],
A.[FileColour],
A.[OUTFILENO],
A.[Closed],
A.[ChargeBal],
B.[CODE],
B.[Name],
B.[Address],
B.[FE],
B.[CLIENT],
B.[CLIENTGROUP],
B.[OTHERREF],
B.[OPSISREF],
B.[CONTACTNO],
B.[COMPBILLONOFF],
B.[TAXTYPE],
A.[OutlayBal],
A.[ClientCurBal],
A.[ClientDepBal],
A.[CloseDate],
A. [ORGCLOSEDDATE] AS [OriginalClosedDate],
A.[REOPENEDDATE] AS [ReopenedDate]
FROM dbo.[Matters] A
LEFT JOIN dbo.[RecentMatterList] R ON R.[MATTER] = A.[Code] AND R.[FEE]= 'ADM'
LEFT OUTER JOIN dbo.[contacts] B ON A.[CLIENTCODE]= B.[CODE]
WHERE [Closed] <> 'Y'
--GROUP BY [A].[Code]
ORDER BY A.[Code] ASC
END
GO
IF OBJECT_ID(N'KAAS_GetOutlayCodeList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetOutlayCodeList]
GO
CREATE PROCEDURE [dbo].[KAAS_GetOutlayCodeList]
AS
/*******************************************************************************************************
* Fetches the Nominal list *
* *
* Stored Procedure Name : [dbo].[GetOutlayCodeList] *
* *
* Modification History: *
* 2021-03-23 Revathy D Created *
* 2021-08-20 Vinodhkumar.M Modified-Include Right Trim *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
RTRIM(OCD.[CODE]) AS Code,
RTRIM(OCD.[DESCRIPTION]) AS [Description]
FROM
[dbo].[OutlayCode] OCD
ORDER BY
OCD.[CODE] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetOutstandingInvoices', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetOutstandingInvoices]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetOutstandingInvoices] (
@MatterCode VARCHAR(20))
AS
/****************************************************************************************
* Gets the outstanding invoices for a matter *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMOutstandingInvoices] *
* *
* Modification History: *
* 2020-05-18 Revathy Copied from KAAS_GetOutstandingInvoices *
* 2020-10-11 Vinodhkuamr M Updated - Removed space in Alias Names *
* 2022-02-03 Balamurugan C Changes in query to fetch the Batch Posted or Not *
* 2024-02-22 John Ginnane Refactored and renamed procedure *
* 2024-05-24 Ghayathri.S.V Refactored to fetch UNPOSTED transaction allocated
against the outstanding invoice *
****************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT LTRIM(RTRIM([DTL].[MATTER])) AS [MatterCode],
ISNULL(LTRIM(RTRIM([SM].[Description])), '''') AS [MatterDescription],
ISNULL(LTRIM(RTRIM([SM].[Name])), '''') AS [ClientName],
ISNULL(LTRIM(RTRIM([DTL].[TYPE])), '''') AS [Type],
LTRIM(RTRIM([DTL].[CLIENT])) AS [ClientCode],
[DTL].[DATE] AS [Date],
ISNULL(LTRIM(RTRIM([DTL].[REF])), '''') AS [Ref],
[DTL].[BATCHNO] AS [BatchNo],
[DTL].[PREF] AS [PRef],
ISNULL(LTRIM(RTRIM([DTL].[NARR])), '''') AS [Narrative],
ISNULL([DTL].[ORIGINAL], 0) AS [Original],
ISNULL([DTL].[OSVALUE], 0) AS [OSValue],
ISNULL([DTL].[ORFEES], 0) AS [OriginalFees],
ISNULL([DTL].[OROUTLAY], 0) AS [OriginalOutlay],
ISNULL([DTL].[ORVAT], 0) AS [OriginalVAT],
ISNULL([DTL].[OSFEES], 0) AS [OSFees],
ISNULL([DTL].[OSOUTLAY], 0) AS [OSOutlay],
ISNULL([DTL].[OSVAT], 0) AS [OSVAT],
ISNULL(LTRIM(RTRIM([DTL].[VATCODE])), '''') AS [VATCode],
ISNULL([DTL].[PER], 0) AS [Period],
ISNULL([DTL].[YEAR], 0) AS [Year],
[DTL].[RECORDID] AS [RecordID],
ISNULL([BAD_Invoice].[PreBilledOutlay], 0) AS [PreBilledOutlay],
CASE WHEN ISNULL([PreAllocatedItem].[Found], 0) = 1
THEN 1
ELSE 0 END AS [UnpostedTransactionAllocated]
FROM [dbo].[DebtorsLedger] AS [DTL]
INNER JOIN [dbo].[SearchMatters] AS [SM]
ON [SM].[Code] = [DTL].[MATTER]
-- This gets the PreBilledOutlay value for the outstanding invoice
OUTER APPLY (SELECT TOP 1 SUM([BAD].[VALUE]) AS [PreBilledOutlay]
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[BATCHNO] = [DTL].[BATCHNO]
AND [BAD].[OUTLAY] = 'O'
AND [BAD].[PreBilledOutlay] = 1) AS [BAD_Invoice]
-- This finds any UNPOSTED transaction allocated against the outstanding invoice
OUTER APPLY (SELECT TOP 1 1 AS [Found]
FROM [dbo].[BatchDetails] AS [BAD_Receipt]
INNER JOIN [dbo].[BatchH] AS [BAH_Receipt]
ON [BAH_Receipt].[BATCHNO] = [BAD_Receipt].[BATCHNO]
WHERE [BAD_Receipt].[ALLOCBATCH] = [DTL].[BATCHNO]
AND [BAD_Receipt].[ALLOCPREF] = [DTL].[PREF]
AND [BAH_Receipt].[POSTED] <> 'Y') AS [PreAllocatedItem]
WHERE [DTL].[MATTER] = @MatterCode
AND [DTL].[OSVALUE] > 0
ORDER BY [DTL].[DATE] ASC,
[DTL].[RECORDID] ASC
-- SELECT LTRIM(RTRIM([DTL].[MATTER])) AS [MatterCode],
-- ISNULL(LTRIM(RTRIM([DTL].[TYPE])), '') AS [Type],
-- LTRIM(RTRIM([DTL].[CLIENT])) AS [ClientCode],
-- [DTL].[DATE] AS [Date],
-- ISNULL(LTRIM(RTRIM([DTL].[REF])), '') AS [Ref],
-- [DTL].[BATCHNO] AS [BatchNo],
-- [DTL].[PREF] AS [PRef],
-- ISNULL(LTRIM(RTRIM([DTL].[NARR])), 0) AS [Narrative],
-- ISNULL([DTL].[ORIGINAL], 0) AS [Original],
-- ISNULL([DTL].[ORFEES], 0) AS [OriginalFees],
-- ISNULL([DTL].[OROUTLAY], 0) AS [OriginalOutlay],
-- ISNULL([DTL].[ORVAT], 0) AS [OriginalVAT],
-- ISNULL([DTL].[OSVALUE], 0) AS [OSValue],
-- ISNULL([DTL].[OSFEES], 0) AS [OutstandingFees],
-- ISNULL([DTL].[OSOUTLAY], 0) AS [OutstandingOutlay],
-- ISNULL([DTL].[OSVAT], 0) AS [OutstandingVAT],
-- ISNULL(LTRIM(RTRIM([DTL].[VATCODE])), '') AS [VATCode],
-- ISNULL([DTL].[PER], 0) AS [Period],
-- ISNULL([DTL].[YEAR], 0) AS [Year],
-- ISNULL(LTRIM(RTRIM([DTL].[FEECODE])), '') AS [LedgerFeeEarnerCode],
-- ISNULL(LTRIM(RTRIM(LFE.[NAME])), '') AS [LedgerFeeEarner],
-- CONVERT(INT, [DTL].[RECORDID]) AS [RecordID],
-- RTRIM(ISNULL(MAT.[FECODE], '')) AS [FeeEarnerCode],
-- RTRIM(ISNULL(FE.[NAME], '')) AS [FeeEarner],
-- RTRIM(ISNULL(MAT.[DEPT], '')) AS [Dept],
-- RTRIM(ISNULL(MAT.[WTYPE], '')) AS [WType],
-- RTRIM(ISNULL(MAT.[BRANCH], '')) AS [Branch],
-- ISNULL(MAT.[FILENUM], 0) AS [FileNum],
-- RTRIM(ISNULL(MAT.[THIRDPART], '')) AS [ThirdPart],
-- RTRIM(ISNULL(MAT.[ThPartSol], '')) AS [ThPartSol],
-- RTRIM(ISNULL(MAT.[OldRef], '')) AS [OldRef],
-- RTRIM(ISNULL(MAT.[PCODE], '')) AS [PCODE],
-- RTRIM(ISNULL(MAT.[PFECODE], '')) AS [PFeeEarnerCode],
-- RTRIM(ISNULL(PFE.[NAME], '')) AS [PFeeEarner],
-- RTRIM(ISNULL(MAT.[USER1], '')) AS [User1],
-- RTRIM(ISNULL(MAT.[USER2], '')) AS [User2],
-- RTRIM(ISNULL(MAT.[USER3], '')) AS [User3],
-- RTRIM(ISNULL(MAT.[FileColour], '')) AS [FileColour],
-- ISNULL(MAT.[OUTFILENO], 0) AS [OutFileNo],
-- RTRIM(ISNULL(CTC.[NAME], '')) AS [ClientName],
-- RTRIM(ISNULL(CTC.[FE], '')) AS [ClientFeeEarnerCode],
-- RTRIM(ISNULL(CFE.[NAME], '')) AS [ClientFeeEarner],
-- CASE WHEN RTRIM(ISNULL(CTC.[CLIENT], 'N')) = 'Y'
-- THEN 'Y'
-- ELSE 'N' END AS [Client],
-- RTRIM(ISNULL(CTC.[OTHERREF], '')) AS [OtherRef],
-- RTRIM(ISNULL(CTC.[OPSISREF], '')) AS [OpsisRef],
-- ISNULL(CTC.[CONTACTNO], 0) AS [ContactNo],
-- ISNULL(CTC.[COMPBILLONOFF], 0) AS [CompBillOnOff],
-- RTRIM(ISNULL(CTC.[CLIENTGROUP], '')) AS [ClientGroup],
-- RTRIM(ISNULL(CTC.[TAXTYPE], '')) AS [TaxType],
-- RTRIM(ISNULL(FCL.[COLOURDESC], '')) AS [FileColourDescription],
-- ISNULL(FCL.[RGBColour], -1) AS [FileColourRGB],
-- CASE WHEN ISNULL([DTL].[BATCHNO], 0) IN (SELECT DISTINCT [ALL].[BATCHNO]
-- FROM [dbo].[DebtorsLedger] [DBL]
-- LEFT JOIN BatchDetails [BAD]
-- ON [DBL].[BatchNo] = [BAD].[AllocBatch]
-- LEFT JOIN [dbo].[Allocations] [ALL]
-- ON [ALL].[BatchNo] = [DBL].[BatchNo]
-- )
-- THEN 'Y'
-- ELSE 'N' END AS [Isallocated],
-- ISNULL([BAH].[Posted] , 'N') AS [Posted]
-- FROM [dbo].[DebtorsLedger] AS [DTL]
-- LEFT OUTER JOIN [dbo].[matters] MAT
-- LEFT OUTER JOIN [dbo].[Handlers] FE
-- ON FE.[CODE] = MAT.[FECode]
-- LEFT OUTER JOIN [dbo].[Handlers] PFE
-- ON PFE.[CODE] = MAT.[PFECODE]
-- LEFT OUTER JOIN [dbo].[contacts] CTC
-- LEFT OUTER JOIN [dbo].[Handlers] CFE
-- ON CFE.[CODE] = CTC.[FE]
-- ON MAT.[ClientCode]= CTC.[Code]
-- ON [DTL].[MATTER] = MAT.[Code]
-- LEFT OUTER JOIN [dbo].[Handlers] LFE
-- ON LFE.[CODE] = [DTL].[FEECODE]
-- LEFT OUTER JOIN [dbo].[FileColours] FCL
-- ON FCL.[COLOURCODE] = MAT.[FileColour]
-- LEFT OUTER JOIN [dbo].[BatchH] [BAH]
-- ON [DTL].[BatchNo] = [BAH].[BatchNo]
-- WHERE [DTL].[MATTER] = @MatterCode
-- AND [DTL].[OSVALUE] > 0
-- AND [DTL].[DATE] IS NOT NULL
--ORDER BY [DTL].[RECORDID] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetOutstandingSupplierBills', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetOutstandingSupplierBills]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetOutstandingSupplierBills] (
@SupplierCode VARCHAR(10),
@HandlerCode VARCHAR(10) = NULL)
AS
/********************************************************************************************************
* Fetches outstanding bills from the Supplier Ledger *
* *
* Stored Procedure Name : [dbo].[KAAS_GetOutstandingSupplierBills] *
* *
* Modification History: *
* 2021-06-04 Revathy D Created *
* 2024-02-12 John Ginnane #17689 - Refactored and renamed stored procedure *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT LTRIM(RTRIM([SPL].[SUPP])) AS [SupplierCode],
LTRIM(RTRIM([SPL].[TYPE])) AS [Type],
[dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone]([SPL].[DATE], @HandlerCode) AS [Date],
LTRIM(RTRIM([SPL].[REF])) AS [Ref],
ISNULL([SPL].[BATCHNO], 0) AS [BatchNo],
ISNULL([SPL].[PREF], 0) AS [Pref],
LTRIM(RTRIM([SPL].[NARR])) AS [Narrative],
ISNULL([SPL].[ORIGINAL], 0) AS [Original],
ISNULL([SPL].[OSVALUE], 0) AS [OSValue],
dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([SPL].[ENTRYDATE], @HandlerCode) AS [EntryDate],
LTRIM(RTRIM([SPL].[MATTER])) AS [Matter],
ISNULL([SPL].[RECORDID], 0) AS [RecordID]
FROM dbo.[SupplierLedger] AS [SPL]
WHERE [SPL].[SUPP] = @SupplierCode
AND [SPL].[OSVALUE] < 0
ORDER BY [SPL].[SUPP] DESC,
[SPL].[DATE] DESC,
[SPL].[RECORDID] DESC
SET NOCOUNT OFF
END
GO
IF EXISTS
(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KAAS_GetPaymentBatches]') AND type in (N'P', N'PC'))
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetPaymentBatches]
END
GO
/****** Object: StoredProcedure [dbo].[KAAS_GetPaymentBatches] Script Date: 19-03-2021 14:46:11 ******/
CREATE PROCEDURE [dbo].[KAAS_GetPaymentBatches]
(
@handlerCode VARCHAR(10) = NULL
)
AS
/*******************************************************************************************************
* Fetches the batch details of unposted payments *
* *
* Stored Procedure Name : [dbo].[KAAS_GetPaymentBatches] *
* *
* Modification History: *
* 11 Mar 2021 Natarajan S Created *
* 27-May-2021 Balamurugan C Modified-Add few columns *
* 20-August-2021 Vinodhkumar M Modified-Add Branch columns *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
[BAT].[BATCHNO] AS [BatchNo],
[BAT].[TYPE] AS [Type],
[BAT].[CODE] AS [Code],
[BAT].[REF] AS [Ref],
[dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone]([BAT].[Date], @handlerCode) AS [Date],
[BAT].[MATTER] AS [Matter],
[BAT].[BRANCH] AS [Branch],
[BAT].[SUPP] AS [Supp],
[BAT].[NARR] AS [Narr],
[BAT].[VALUE] AS [Value],
[BAT].[POSTED] AS [Posted],
[BAT].[PERNO] AS [PerNo],
[BAT].[YEAR] AS [Year],
[BAT].[ENTRYDATE] AS [EntryDate],
[BAT].[RECNO] AS [RecNo],
[BAT].[CHEQUEREQNO] AS [ChequeReqNo],
[BAT].[PREF] AS [Pref],
[BAT].[PAYEE] AS [Payee],
[dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone]([BAT].[ENTRYDATE], @handlerCode) AS [ENTRYDATE],
[BAT].[USERCODE] AS [UserCode],
[BAT].[EFTYorN] AS [EFTYorN],
[BAT].[EFTSent] AS [EFTSent],
[BAT].[ThirdParty] AS [Thirdparty],
[BAT].[PayClient] AS [PayClient],
[BAT].[OnceOffPayment] AS [OnceOffPayment],
[BAT].[ClientCode] AS [ClientCode]
FROM
[dbo].[BatchH] BAT
WHERE
[BAT].[TYPE] = 'P' AND [BAT].[POSTED] = 'N'
ORDER BY
[BAT].[POSTED] ASC,
[BAT].[ENTRYDATE] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetPaymentClientList', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetPaymentClientList]
END
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[KAAS_GetPaymentClientList]
AS
/*******************************************************************************************************
* Fetches the Payment Screen -Client Details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetPaymentClientList] *
* *
* Modification History: *
* 2021-05-19 Balamurugan.C Created *
*******************************************************************************************************/
BEGIN
SELECT
[Code],
[OtherRef],
[Name],
[Address],
[BankName],
[BankSortCode],
[BankAccNo],
[Iban],
[Bic],
[EFTEmailAddress]
FROM
[dbo].[Contacts]
ORDER BY
[Code] ASC
END
GO
IF OBJECT_ID(N'KAAS_GetPaymentSupplierList', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetPaymentSupplierList]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetPaymentSupplierList]
(
@ThirdParty VARCHAR(1) = '',
@Code VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* Fetches the Payment Screen -Supplier Details,Master Supplier Details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetPaymentSupplierList] *
* *
* Modification History: *
* 2021-05-19 Balamurugan.C Created *
* 2021-06-16 Balamurugan.C Modified-Added Columns *
* 2022-01-04 Vinodhkumar.M Modified-Added TPBal,Balance,BalanceFwd Columns *
* 2023-10-12 Vignesh M Modified-Null exception is handled *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
RTRIM([Code]) AS 'Code',
[Description]
FROM [dbo].[ServiceCodes]
SELECT
[Code],
[Name],
[Address],
[Nominal],
[Phone],
ISNULL([EmailAddress],'') AS [EmailAddress],
[TaxNo],
[ServiceCode],
ISNULL([VATNo],'') AS [VATNo],
[DeftpStatus],
ISNULL([BankName],'') AS [BankName],
ISNULL([BankAddress],'') AS [BankAddress],
ISNULL([BankSortCode],'') AS [BankSortCode],
ISNULL([BankAccNo],'') AS [BankAccNo],
ISNULL([Iban],'') AS [Iban],
ISNULL([Bic],'') AS [Bic],
ISNULL([BankType],'') AS [BankType],
ISNULL([EFTEmailAddress],'') AS [EFTEmailAddress],
[Retired],
[TPBAL] AS [ThirdPartyBalance],
[BALANCE] AS [Balance],
[BALANCEFWD] AS [BalanceFwd]
FROM [dbo].[Suppliers]
WHERE [DeftpStatus] = CASE WHEN @ThirdParty='Y' THEN 'Y' ELSE [DeftpStatus] END AND
[Code]= CASE WHEN ISNULL(@Code,'')<>'' THEN @Code ELSE [Code] END
ORDER BY [Code] ASC
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = N'KAAS_GetPostedBatchDetails'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetPostedBatchDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetPostedBatchDetails]
(@Search NVARCHAR(MAX),
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'BatchNo',
@SortOrder VARCHAR(100) = 'Desc',
@handlerCode VARCHAR(10) = '')
AS
/*******************************************************************************************************
* Fetches the batch details of posted receipts *
* *
* Stored Procedure Name : [dbo].[KAAS_GetPostedBatchDetails] *
* *
* Modification History: *
* 2024-01-31 Revathy D Created *
* 2024-03-26 Vignesh M Modified - Date filter is implemented *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @sql NVARCHAR(max),
@offset INT = @PageSize * (@PageNumber -1),
@WhereConditon NVARCHAR(max)
DECLARE @searchtext VARCHAR(MAX)
DECLARE @andortype VARCHAR(3)
DECLARE @andortypevalue VARCHAR(200)
DECLARE @operatorType VARCHAR (50)
DECLARE @andorbatchno VARCHAR(3)
DECLARE @andorbatchnovalue VARCHAR(200)
DECLARE @operatorbatchno VARCHAR (50)
DECLARE @andorpref VARCHAR(3)
DECLARE @andorprefvalue VARCHAR(200)
DECLARE @operatorpref VARCHAR (50)
DECLARE @andorref VARCHAR(3)
DECLARE @andorrefvalue VARCHAR(200)
DECLARE @operatorref VARCHAR (50)
DECLARE @andorfeecode VARCHAR(3)
DECLARE @andorfeecodevalue VARCHAR(200)
DECLARE @operatorfeecode VARCHAR (50)
DECLARE @andordate VARCHAR(3)
DECLARE @andordatevalue VARCHAR(200)
DECLARE @operatordate VARCHAR (50)
DECLARE @andortotal VARCHAR(3)
DECLARE @andortotalvalue VARCHAR(200)
DECLARE @operatortotal VARCHAR (50)
DECLARE @andormatter VARCHAR(3)
DECLARE @andormattervalue VARCHAR(200)
DECLARE @operatormatter VARCHAR (50)
DECLARE @andorcode VARCHAR(3)
DECLARE @andorcodevalue VARCHAR(200)
DECLARE @operatorcode VARCHAR (50)
DECLARE @andorsupp VARCHAR(3)
DECLARE @andorsuppvalue VARCHAR(200)
DECLARE @operatorsupp VARCHAR (50)
DECLARE @andornarr VARCHAR(3)
DECLARE @andornarrvalue VARCHAR(200)
DECLARE @operatornarr VARCHAR (50)
DECLARE @iSL INT
DECLARE @selectORCondition VARCHAR(MAX) = ''
DECLARE @operator VARCHAR(50) = ' LIKE '
BEGIN TRY
EXEC sp_xml_preparedocument @iSL OUTPUT, @Search
END TRY
BEGIN CATCH
EXEC sp_xml_preparedocument @iSL OUTPUT, N''
END CATCH
DECLARE @StartRow INT;
DECLARE @EndRow INT;
SET @PageNumber = ISNULL(@PageNumber, 0) - 1; -- 0 BASED INDEX
IF(@PageNumber > -1)
BEGIN
SET @StartRow = ((@PageNumber) * @PageSize) + 1;
SET @EndRow = (@StartRow + @PageSize) - 1;
END
SELECT
@searchtext = ISNULL(SRC.[search], ''),
@andortype = ISNULL(SRC.[andortype], ''),
@andortypevalue = ISNULL(SRC.[andortypevalue], ''),
@operatorType = ISNULL(SRC.[operatortype],''),
@andorbatchno = ISNULL(SRC.[andorbatchno], ''),
@andorbatchnovalue = ISNULL(SRC.[andorbatchnovalue], ''),
@operatorbatchno = ISNULL(SRC.[operatorbatchno],''),
@andorpref = ISNULL(SRC.[andorpref], ''),
@andorprefvalue = ISNULL(SRC.[andorprefvalue], ''),
@operatorpref = ISNULL(SRC.[operatorpref],''),
@andorref = ISNULL(SRC.[andorref], ''),
@andorrefvalue = ISNULL(SRC.[andorrefvalue], ''),
@operatorref = ISNULL(SRC.[operatorref],''),
@andordate = ISNULL(SRC.[andordate], ''),
@andordatevalue = ISNULL(SRC.[andordatevalue], ''),
@operatordate = ISNULL(SRC.[operatordate],''),
@andortotal = ISNULL(SRC.[andortotal], ''),
@andortotalvalue = ISNULL(SRC.[andortotalvalue], ''),
@operatortotal = ISNULL(SRC.[operatortotal],''),
@andormatter = ISNULL(SRC.[andormatter], ''),
@andormattervalue = ISNULL(SRC.[andormattervalue], ''),
@andorcode = ISNULL(SRC.[andorcode], ''),
@andorcodevalue = ISNULL(SRC.[andorcodevalue], ''),
@andorsupp = ISNULL(SRC.[andorsupp], ''),
@andorsuppvalue = ISNULL(SRC.[andorsuppvalue], ''),
@andornarr = ISNULL(SRC.[andornarr], ''),
@andornarrvalue = ISNULL(SRC.[andornarrvalue], ''),
@andorfeecode = ISNULL(SRC.[andorfee], ''),
@andorfeecodevalue = ISNULL(SRC.[andorfeevalue], '')
FROM OPENXML(@iSL, N'search')
WITH (
[search] VARCHAR(MAX) '@search',
[andortype] VARCHAR(3) 'andor/andorfield[@name="Type"]/@andor',
[andortypevalue] VARCHAR(200) 'andor/andorfield[@name="Type"]/@search',
[operatortype] VARCHAR(100) 'andor/andorfield[@name="Type"]/@operator',
[andorbatchno] VARCHAR(3) 'andor/andorfield[@name="BatchNo"]/@andor',
[andorbatchnovalue] VARCHAR(100) 'andor/andorfield[@name="BatchNo"]/@search',
[operatorbatchno] VARCHAR(100) 'andor/andorfield[@name="BatchNo"]/@operator',
[andorpref] VARCHAR(3) 'andor/andorfield[@name="Pref"]/@andor',
[andorprefvalue] VARCHAR(100) 'andor/andorfield[@name="Pref"]/@search',
[operatorpref] VARCHAR(100) 'andor/andorfield[@name="Pref"]/@operator',
[andorref] VARCHAR(3) 'andor/andorfield[@name="Ref"]/@andor',
[andorrefvalue] VARCHAR(100) 'andor/andorfield[@name="Ref"]/@search',
[operatorref] VARCHAR(100) 'andor/andorfield[@name="Ref"]/@operator',
[andordate] VARCHAR(3) 'andor/andorfield[@name="Date"]/@andor',
[andordatevalue] VARCHAR(100) 'andor/andorfield[@name="Date"]/@search',
[operatordate] VARCHAR(100) 'andor/andorfield[@name="Date"]/@operator',
[andortotal] VARCHAR(3) 'andor/andorfield[@name="Value"]/@andor',
[andortotalvalue] VARCHAR(100) 'andor/andorfield[@name="Value"]/@search',
[operatortotal] VARCHAR(100) 'andor/andorfield[@name="Value"]/@operator',
[andormatter] VARCHAR(3) 'andor/andorfield[@name="Matter"]/@andor',
[andormattervalue] VARCHAR(100) 'andor/andorfield[@name="Matter"]/@search',
[operatormatter] VARCHAR(100) 'andor/andorfield[@name="Matter"]/@operator',
[andorcode] VARCHAR(3) 'andor/andorfield[@name="Code"]/@andor',
[andorcodevalue] VARCHAR(100) 'andor/andorfield[@name="Code"]/@search',
[operatorcode] VARCHAR(100) 'andor/andorfield[@name="Code"]/@operator',
[andorsupp] VARCHAR(3) 'andor/andorfield[@name="Supp"]/@andor',
[andorsuppvalue] VARCHAR(100) 'andor/andorfield[@name="Supp"]/@search',
[operatorsupp] VARCHAR(100) 'andor/andorfield[@name="Supp"]/@operator',
[andornarr] VARCHAR(3) 'andor/andorfield[@name="Narr"]/@andor',
[andornarrvalue] VARCHAR(100) 'andor/andorfield[@name="Narr"]/@search',
[operatornarr] VARCHAR(100) 'andor/andorfield[@name="Narr"]/@operator',
[andorfee] VARCHAR(3) 'andor/andorfield[@name="Fee"]/@andor',
[andorfeevalue] VARCHAR(100) 'andor/andorfield[@name="Fee"]/@search',
[operatorfee] VARCHAR(100) 'andor/andorfield[@name="Fee"]/@operator') SRC
EXEC sp_xml_removedocument @iSL
/*Date Filter*/
DECLARE @isDateFilter NVARCHAR(max) = '0'
DECLARE @Day NVARCHAR(max) = '00'
DECLARE @Month NVARCHAR(max) = '00'
DECLARE @Year NVARCHAR(max) = '1900'
DECLARE @DateFilter NVARCHAR(max) = ''
SET @DateFilter = [dbo].[KAAS_FN_DateFilter](@SearchString)
IF @DateFilter != ''
BEGIN
SET @Day = SUBSTRING(@DateFilter,1,2)
SET @Month = SUBSTRING(@DateFilter,4,2)
SET @Year = SUBSTRING(@DateFilter,7,4)
IF @Day != '00' OR @Month != '00' OR @Year != '1900'
BEGIN
SET @isDateFilter = '1'
END
END
/*Date Filter*/
SET @sql = 'SELECT
IDENTITY(INT, 1,1) AS [RowNumber],
* INTO
#TEMP
FROM
(SELECT [BAH].[BatchNo],
CASE WHEN RTRIM(ISNULL([BAH].[Type],'''')) = ''P''
THEN ''Payment''
WHEN RTRIM(ISNULL([BAH].[Type],'''')) = ''B''
THEN ''Bill''
WHEN RTRIM(ISNULL([BAH].[Type],'''')) = ''T''
THEN ''Transfer''
WHEN RTRIM(ISNULL([BAH].[Type],'''')) = ''I''
THEN ''Invoice''
WHEN RTRIM(ISNULL([BAH].[Type],'''')) = ''R''
THEN ''Receipt''
WHEN RTRIM(ISNULL([BAH].[Type],'''')) = ''J''
THEN ''Journal'' ELSE ''''
END AS Type,
[BAH].[Code],
RTRIM(ISNULL([BAH].[Ref],'''')) [Ref],
[BAH].[Date],
[BAH].[Matter],
[BAH].[SUBTOT],
[BAH].[Supp],
[BAH].[Narr],
[BAH].[Value],
[BAH].[Posted],
[BAH].[Branch],
[BAH].[Pref],
[BAH].[ClientCode],
[BAH].[FEE]
FROM [dbo].[BatchH] [BAH]
LEFT JOIN [DBO].[matters] [MAT] ON [MAT].[Code] = [BAH].[MATTER]
WHERE [BAH].[POSTED] = ''Y'''
IF @isDateFilter != '0'
BEGIN
IF @Day != '00'
BEGIN
SET @sql += N'
AND
(
DAY([BAH].[Date]) = ' + ''+ @Day +'' +
')'
END
IF @Month != '00'
BEGIN
SET @sql += N'
AND
(
MONTH([BAH].[Date]) = ' + ''+ @Month +'' +
')'
END
IF @Year != '1900'
BEGIN
SET @sql += N'
AND
(
YEAR([BAH].[Date]) = ' + ''+ @Year +'' +
')'
END
END
ELSE
BEGIN
SET @sql += 'AND
(
[BAH].[BatchNo] LIKE ''%'' + @SearchString + ''%''
OR
[BAH].[Ref] LIKE ''%'' + @SearchString + ''%''
OR
[BAH].[Date] LIKE ''%'' + @SearchString + ''%''
OR
[BAH].[Value] LIKE ''%'' + @SearchString + ''%''
OR
[BAH].[Code] LIKE ''%'' + @SearchString + ''%''
OR
[BAH].[Narr] LIKE ''%'' + @SearchString + ''%''
OR
[BAH].[Supp] LIKE ''%'' + @SearchString + ''%''
OR
[BAH].[Matter] LIKE ''%'' + @SearchString + ''%''
)'
END
IF @andortype = 'OR'
BEGIN
IF(@operatorType <> '')
BEGIN
IF(@operatorType = 'IN')
BEGIN
SET @sql = @sql + N' OR RTRIM(ISNULL([BAH].[Type],'''')) IN ''(''+@andortypevalue+'')'''
END
ELSE IF(@operatorType = 'NOTIN')
BEGIN
SET @sql = @sql + N' OR RTRIM(ISNULL([BAH].[Type],'''')) NOT IN ''(''+@andortypevalue+'')'''
END
ELSE IF(@operatorType = 'EQUALS')
BEGIN
SET @sql = @sql + N' OR RTRIM(ISNULL([BAH].[Type],'''')) = @andortypevalue'
END
ELSE IF(@operatorType = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' OR RTRIM(ISNULL([BAH].[Type],'''')) <> @andortypevalue'
END
ELSE IF(@operatorType = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR RTRIM(ISNULL([BAH].[Type],'''')) LIKE ''%'' +@andortypevalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' OR RTRIM(ISNULL([BAH].[Type],'''')) LIKE ''%'' +@andortypevalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' OR RTRIM(ISNULL([BAH].[Type],'''')) LIKE ''%'' +@andortypevalue+''%'''
END
END
IF @andorbatchno = 'OR'
BEGIN
IF(@operatorbatchno <> '')
BEGIN
IF(@operatorbatchno = 'IN')
BEGIN
SET @sql = @sql + N' OR [BAH].[BatchNo] IN ''(''+@andorbatchnovalue+'')'''
END
ELSE IF(@operatorbatchno = 'NOTIN')
BEGIN
SET @sql = @sql + N' OR [BAH].[BatchNo] NOT IN ''(''+@andorbatchnovalue+'')'''
END
ELSE IF(@operatorbatchno = 'EQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[BatchNo] = andorbatchnovalue'
END
ELSE IF(@operatorbatchno = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[BatchNo] <> @andorbatchnovalue'
END
ELSE IF(@operatorbatchno = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[BatchNo] NOT LIKE ''%'' +@andorbatchnovalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[BatchNo] LIKE ''%'' +@andorbatchnovalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[BatchNo] LIKE ''%'' +@andorbatchnovalue+''%'''
END
END
IF @andorpref = 'OR'
BEGIN
IF(@operatorpref <> '')
BEGIN
IF(@operatorpref = 'IN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Pref] IN ''(''+@andorprefvalue+'')'''
END
ELSE IF(@operatorpref = 'NOTIN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Pref] NOT IN ''(''+@andorprefvalue+'')'''
END
ELSE IF(@operatorpref = 'EQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Pref] = @andorprefvalue'
END
ELSE IF(@operatorpref = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Pref] <> @andorprefvalue'
END
ELSE IF(@operatorpref = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Pref] NOT LIKE ''%'' +@andorprefvalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Pref] LIKE ''%'' +@andorprefvalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Pref] LIKE ''%'' +@andorprefvalue+''%'''
END
END
IF @andorref = 'OR'
BEGIN
IF(@operatorRef <> '')
BEGIN
IF(@operatorRef = 'IN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Ref] IN ''(''+@andorrefvalue+'')'''
END
ELSE IF(@operatorRef = 'NOTIN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Ref] NOT IN ''(''+@andorrefvalue+'')'''
END
ELSE IF(@operatorRef = 'EQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Ref] = @andorrefvalue'
END
ELSE IF(@operatorRef = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Ref] <> @andorrefvalue'
END
ELSE IF(@operatorRef = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Ref] NOT LIKE ''%'' +@andorrefvalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Ref] LIKE ''%'' +@andorrefvalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Ref] LIKE ''%'' +@andorrefvalue+''%'''
END
END
IF @andorfeecode = 'OR'
BEGIN
IF(@operatorFeeCode <> '')
BEGIN
IF(@operatorFeeCode = 'IN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Fee] IN ''(''+@andorfeecodevalue+'')'''
END
ELSE IF(@operatorFeeCode = 'NOTIN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Fee] NOT IN ''(''+@andorfeecodevalue+'')'''
END
ELSE IF(@operatorFeeCode = 'EQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Fee] = @andorfeecodevalue'
END
ELSE IF(@operatorFeeCode = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Fee] <> @andorfeecodevalue'
END
ELSE IF(@operatorFeeCode = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Fee] NOT LIKE ''%'' +@andorfeecodevalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Fee] LIKE ''%'' +@andorfeecodevalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Fee] LIKE ''%'' +@andorfeecodevalue+''%'''
END
END
IF @andordate = 'OR'
BEGIN
IF(@operatorDate <> '')
BEGIN
IF(@andordatevalue = 'StartOfDay')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] IN (CAST(GETDATE() AS DATE))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] NOT IN (CAST(GETDATE() AS DATE))'
END
END
ELSE IF(@andordatevalue = 'StartOfPrevDay')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] IN (SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -1, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] NOT IN (SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -1, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
END
ELSE IF(@andordatevalue = 'StartOf7DaysAgo')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -7, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] NOT IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -7, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
END
ELSE IF(@andordatevalue = 'StartOf30DaysAgo')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -30, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] NOT IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -30, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
END
ELSE IF(@andordatevalue = 'StartOfWeek')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
-- Start of the week
SET @sql = @sql + N' OR [BAH].[Date] IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0)
AND [date] < DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()) + 1, 0))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] NOT IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0)
AND [date] < DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()) + 1, 0))'
END
END
ELSE IF(@andordatevalue = 'StartOfMonth')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
-- Start of the month
SET @sql = @sql + N' OR [BAH].[Date] IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
AND [date] < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] NOT IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
AND [date] < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0))'
END
END
ELSE IF(@andordatevalue = 'StartOfYear')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
-- Start of the year
SET @sql = @sql + N' OR [BAH].[Date] IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)
AND [date] < DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] NOT IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)
AND [date] < DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))'
END
END
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Date] IN (CAST(GETDATE() AS DATE))'
END
END
IF @andortotal = 'OR'
BEGIN
IF(@operatorTotal <> '')
BEGIN
IF(@operatorTotal = 'IN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Value] IN ''(''+@andortotalvalue+'')'''
END
ELSE IF(@operatorTotal = 'NOTIN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Value] NOT IN ''(''+@andortotalvalue+'')'''
END
ELSE IF(@operatorTotal = 'EQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Value] = @andortotalvalue'
END
ELSE IF(@operatorTotal = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Value] <> @andortotalvalue'
END
ELSE IF(@operatorTotal = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Value] NOT LIKE ''%'' +@andortotalvalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Value] LIKE ''%'' +@andortotalvalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Value] LIKE ''%'' +@andortotalvalue+''%'''
END
END
IF @andormatter = 'OR'
BEGIN
IF(@operatorMatter <> '')
BEGIN
IF(@operatorMatter = 'IN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Matter] IN ''(''+@andormattervalue+'')'''
END
ELSE IF(@operatorMatter = 'NOTIN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Matter] NOT IN ''(''+@andormattervalue+'')'''
END
ELSE IF(@operatorMatter = 'EQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Matter] = @andormattervalue'
END
ELSE IF(@operatorMatter = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Matter] <> @andormattervalue'
END
ELSE IF(@operatorMatter = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Matter] NOT LIKE ''%'' +@andormattervalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Matter] LIKE ''%'' +@andormattervalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Matter] LIKE ''%'' +@andormattervalue+''%'''
END
END
IF @andorcode = 'OR'
BEGIN
IF(@operatorCode <> '')
BEGIN
IF(@operatorCode = 'IN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Code] IN ''(''+@andorcodevalue+'')'''
END
ELSE IF(@operatorCode = 'NOTIN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Code] NOT IN ''(''+@andorcodevalue+'')'''
END
ELSE IF(@operatorCode = 'EQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Code] = @andorcodevalue'
END
ELSE IF(@operatorCode = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Code] <> @andorcodevalue'
END
ELSE IF(@operatorCode = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Code] NOT LIKE ''%'' +@andorcodevalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Code] LIKE ''%'' +@andorcodevalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Code] LIKE ''%'' +@andorcodevalue+''%'''
END
END
IF @andorsupp = 'OR'
BEGIN
IF(@operatorSupp <> '')
BEGIN
IF(@operatorSupp = 'IN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Supp] IN ''(''+@andorsuppvalue+'')'''
END
ELSE IF(@operatorSupp = 'NOTIN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Supp] NOT IN ''(''+@andorsuppvalue+'')'''
END
ELSE IF(@operatorSupp = 'EQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Supp] = @andorsuppvalue'
END
ELSE IF(@operatorSupp = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Supp] <> @andorsuppvalue'
END
ELSE IF(@operatorSupp = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Supp] NOT LIKE ''%'' +@andorsuppvalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Supp] LIKE ''%'' +@andorsuppvalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Supp] LIKE ''%'' +@andorsuppvalue+''%'''
END
END
IF @andornarr = 'OR'
BEGIN
IF(@operatorNarr <> '')
BEGIN
IF(@operatorNarr = 'IN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Narr] IN ''(''+@andornarrvalue+'')'''
END
ELSE IF(@operatorNarr = 'NOTIN')
BEGIN
SET @sql = @sql + N' OR [BAH].[Narr] NOT IN ''(''+@andornarrvalue+'')'''
END
ELSE IF(@operatorNarr = 'EQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Narr] = @andornarrvalue'
END
ELSE IF(@operatorNarr = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Narr] <> @andornarrvalue'
END
ELSE IF(@operatorNarr = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' OR [BAH].[Narr] NOT LIKE ''%'' +@andornarrvalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Narr] LIKE ''%'' +@andornarrvalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' OR [BAH].[Narr] LIKE ''%'' +@andornarrvalue+''%'''
END
END
IF @andortype = 'AND'
BEGIN
IF(@operatorType <> '')
BEGIN
IF(@operatorType = 'IN')
BEGIN
SET @sql = @sql + N' AND RTRIM(ISNULL([BAH].[Type],'''')) IN ''(''+@andortypevalue+'')'''
END
ELSE IF(@operatorType = 'NOTIN')
BEGIN
SET @sql = @sql + N' AND RTRIM(ISNULL([BAH].[Type],'''')) NOT IN ''(''+@andortypevalue+'')'''
END
ELSE IF(@operatorType = 'EQUALS')
BEGIN
SET @sql = @sql + N' AND RTRIM(ISNULL([BAH].[Type],'''')) = @andortypevalue'
END
ELSE IF(@operatorType = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' AND RTRIM(ISNULL([BAH].[Type],'''')) <> @andortypevalue'
END
ELSE IF(@operatorType = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND RTRIM(ISNULL([BAH].[Type],'''')) LIKE ''%'' +@andortypevalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' AND RTRIM(ISNULL([BAH].[Type],'''')) LIKE ''%'' +@andortypevalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' AND RTRIM(ISNULL([BAH].[Type],'''')) LIKE ''%'' +@andortypevalue+''%'''
END
END
IF @andorbatchno = 'AND'
BEGIN
IF(@operatorbatchno <> '')
BEGIN
IF(@operatorbatchno = 'IN')
BEGIN
SET @sql = @sql + N' AND [BAH].[BatchNo] IN ''(''+@andorbatchnovalue+'')'''
END
ELSE IF(@operatorbatchno = 'NOTIN')
BEGIN
SET @sql = @sql + N' AND [BAH].[BatchNo] NOT IN ''(''+@andorbatchnovalue+'')'''
END
ELSE IF(@operatorbatchno = 'EQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[BatchNo] = @andorbatchnovalue'
END
ELSE IF(@operatorbatchno = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[BatchNo] <> @andorbatchnovalue'
END
ELSE IF(@operatorbatchno = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[BatchNo] NOT LIKE ''%'' +@andorbatchnovalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[BatchNo] LIKE ''%'' +@andorbatchnovalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[BatchNo] LIKE ''%'' +@andorbatchnovalue+''%'''
END
END
IF @andorpref = 'AND'
BEGIN
IF(@operatorpref <> '')
BEGIN
IF(@operatorpref = 'IN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Pref] IN ''(''+@andorprefvalue+'')'''
END
ELSE IF(@operatorpref = 'NOTIN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Pref] NOT IN ''(''+@andorprefvalue+'')'''
END
ELSE IF(@operatorpref = 'EQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Pref] = @andorprefvalue'
END
ELSE IF(@operatorpref = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Pref] <> @andorprefvalue'
END
ELSE IF(@operatorpref = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Pref] NOT LIKE ''%'' +@andorprefvalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Pref] LIKE ''%'' +@andorprefvalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Pref] LIKE ''%'' +@andorprefvalue+''%'''
END
END
IF @andorref = 'AND'
BEGIN
IF(@operatorRef <> '')
BEGIN
IF(@operatorRef = 'IN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Ref] IN ''(''+@andorrefvalue+'')'''
END
ELSE IF(@operatorRef = 'NOTIN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Ref] NOT IN ''(''+@andorrefvalue+'')'''
END
ELSE IF(@operatorRef = 'EQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Ref] = @andorrefvalue'
END
ELSE IF(@operatorRef = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Ref] <> @andorrefvalue'
END
ELSE IF(@operatorRef = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Ref] NOT LIKE ''%'' +@andorrefvalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Ref] LIKE ''%'' +@andorrefvalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Ref] LIKE ''%'' +@andorrefvalue+''%'''
END
END
IF @andorfeecode = 'AND'
BEGIN
IF(@operatorFeeCode <> '')
BEGIN
IF(@operatorFeeCode = 'IN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Fee] IN ''(''+@andorfeecodevalue+'')'''
END
ELSE IF(@operatorFeeCode = 'NOTIN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Fee] NOT IN ''(''+@andorfeecodevalue+'')'''
END
ELSE IF(@operatorFeeCode = 'EQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Fee] = @andorfeecodevalue'
END
ELSE IF(@operatorFeeCode = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Fee] <> @andorfeecodevalue'
END
ELSE IF(@operatorFeeCode = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Fee] NOT LIKE ''%'' +@andorfeecodevalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Fee] LIKE ''%'' +@andorfeecodevalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Fee] LIKE ''%'' +@andorfeecodevalue+''%'''
END
END
IF @andordate = 'AND'
BEGIN
IF(@operatorDate <> '')
BEGIN
IF(@andordatevalue = 'StartOfDay')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] IN (CAST(GETDATE() AS DATE))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] NOT IN (CAST(GETDATE() AS DATE))'
END
END
ELSE IF(@andordatevalue = 'StartOfPrevDay')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] IN (SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -1, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] NOT IN (SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -1, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
END
ELSE IF(@andordatevalue = 'StartOf7DaysAgo')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -7, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] NOT IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -7, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
END
ELSE IF(@andordatevalue = 'StartOf30DaysAgo')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -30, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] NOT IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(day, -30, CAST(GETDATE() AS DATE))
AND [date] < CAST(GETDATE() AS DATE))'
END
END
ELSE IF(@andordatevalue = 'StartOfWeek')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
-- Start of the week
SET @sql = @sql + N' AND [BAH].[Date] IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0)
AND [date] < DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()) + 1, 0))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] NOT IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0)
AND [date] < DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()) + 1, 0))'
END
END
ELSE IF(@andordatevalue = 'StartOfMonth')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
-- Start of the month
SET @sql = @sql + N' AND [BAH].[Date] IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
AND [date] < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] NOT IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
AND [date] < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0))'
END
END
ELSE IF(@andordatevalue = 'StartOfYear')
BEGIN
IF(@operatordate = 'EQUALS' OR @operatordate = 'IN' OR @operatordate = 'CONTAINS')
BEGIN
-- Start of the year
SET @sql = @sql + N' AND [BAH].[Date] IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)
AND [date] < DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))'
END
ELSE IF(@operatordate = 'NOTEQUALS' OR @operatordate = 'NOTIN' OR @operatordate = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] NOT IN (
SELECT [Date]
FROM BatchH
WHERE [date] >= DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)
AND [date] < DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))'
END
END
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Date] IN (CAST(GETDATE() AS DATE))'
END
END
IF @andortotal = 'AND'
BEGIN
IF(@operatorTotal <> '')
BEGIN
IF(@operatorTotal = 'IN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Value] IN ''(''+@andortotalvalue+'')'''
END
ELSE IF(@operatorTotal = 'NOTIN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Value] NOT IN ''(''+@andortotalvalue+'')'''
END
ELSE IF(@operatorTotal = 'EQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Value] = @andortotalvalue'
END
ELSE IF(@operatorTotal = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Value] <> @andortotalvalue'
END
ELSE IF(@operatorTotal = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Value] NOT LIKE ''%'' +@andortotalvalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Value] LIKE ''%'' +@andortotalvalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Value] LIKE ''%'' +@andortotalvalue+''%'''
END
END
IF @andormatter = 'AND'
BEGIN
IF(@operatorMatter <> '')
BEGIN
IF(@operatorMatter = 'IN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Matter] IN ''(''+@andormattervalue+'')'''
END
ELSE IF(@operatorMatter = 'NOTIN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Matter] NOT IN ''(''+@andormattervalue+'')'''
END
ELSE IF(@operatorMatter = 'EQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Matter] = @andormattervalue'
END
ELSE IF(@operatorMatter = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Matter] <> @andormattervalue'
END
ELSE IF(@operatorMatter = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Matter] NOT LIKE ''%'' +@andormattervalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Matter] LIKE ''%'' +@andormattervalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Matter] LIKE ''%'' +@andormattervalue+''%'''
END
END
IF @andorcode = 'AND'
BEGIN
IF(@operatorCode <> '')
BEGIN
IF(@operatorCode = 'IN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Code] IN ''(''+@andorcodevalue+'')'''
END
ELSE IF(@operatorCode = 'NOTIN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Code] NOT IN ''(''+@andorcodevalue+'')'''
END
ELSE IF(@operatorCode = 'EQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Code] = @andorcodevalue'
END
ELSE IF(@operatorCode = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Code] <> @andorcodevalue'
END
ELSE IF(@operatorCode = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Code] NOT LIKE ''%'' +@andorcodevalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Code] LIKE ''%'' +@andorcodevalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Code] LIKE ''%'' +@andorcodevalue+''%'''
END
END
IF @andorsupp = 'AND'
BEGIN
IF(@operatorSupp <> '')
BEGIN
IF(@operatorSupp = 'IN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Supp] IN ''(''+@andorsuppvalue+'')'''
END
ELSE IF(@operatorSupp = 'NOTIN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Supp] NOT IN ''(''+@andorsuppvalue+'')'''
END
ELSE IF(@operatorSupp = 'EQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Supp] = @andorsuppvalue'
END
ELSE IF(@operatorSupp = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Supp] <> @andorsuppvalue'
END
ELSE IF(@operatorSupp = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Supp] NOT LIKE ''%'' +@andorsuppvalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Supp] LIKE ''%'' +@andorsuppvalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Supp] LIKE ''%'' +@andorsuppvalue+''%'''
END
END
IF @andornarr = 'AND'
BEGIN
IF(@operatorNarr <> '')
BEGIN
IF(@operatorNarr = 'IN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Narr] IN ''(''+@andornarrvalue+'')'''
END
ELSE IF(@operatorNarr = 'NOTIN')
BEGIN
SET @sql = @sql + N' AND [BAH].[Narr] NOT IN ''(''+@andornarrvalue+'')'''
END
ELSE IF(@operatorNarr = 'EQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Narr] = @andornarrvalue'
END
ELSE IF(@operatorNarr = 'NOTEQUALS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Narr] <> @andornarrvalue'
END
ELSE IF(@operatorNarr = 'DCONTAINS')
BEGIN
SET @sql = @sql + N' AND [BAH].[Narr] NOT LIKE ''%'' +@andornarrvalue+''%'''
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Narr] LIKE ''%'' +@andornarrvalue+''%'''
END
END
ELSE
BEGIN
SET @sql = @sql + N' AND [BAH].[Narr] LIKE ''%'' +@andornarrvalue+''%'''
END
END
SET @sql = @sql + N') AS MyTemplateTable
ORDER BY
CASE WHEN @SortOrder = ''ASC'' THEN
CASE @SortColumn
WHEN ''Narr'' THEN Narr
END
END,
CASE WHEN @SortOrder = ''DESC'' THEN
CASE @SortColumn
WHEN ''Narr'' THEN Narr
END
END DESC,
CASE WHEN @SortOrder = ''ASC'' THEN
CASE @SortColumn
WHEN ''Supp'' THEN Supp
END
END,
CASE WHEN @SortOrder = ''DESC'' THEN
CASE @SortColumn
WHEN ''Supp'' THEN Supp
END
END DESC,
CASE WHEN @SortOrder = ''ASC'' THEN
CASE @SortColumn
WHEN ''Code'' THEN Code
END
END,
CASE WHEN @SortOrder = ''DESC'' THEN
CASE @SortColumn
WHEN ''Code'' THEN Code
END
END DESC,
CASE WHEN @SortOrder = ''ASC'' THEN
CASE @SortColumn
WHEN ''Matter'' THEN Matter
END
END,
CASE WHEN @SortOrder = ''DESC'' THEN
CASE @SortColumn
WHEN ''Matter'' THEN Matter
END
END DESC,
CASE WHEN @SortOrder = ''ASC'' THEN
CASE @SortColumn
WHEN ''Value'' THEN Value
END
END,
CASE WHEN @SortOrder = ''DESC'' THEN
CASE @SortColumn
WHEN ''Value'' THEN Value
END
END DESC,
CASE WHEN @SortOrder = ''ASC'' THEN
CASE @SortColumn
WHEN ''Date'' THEN Date
END
END,
CASE WHEN @SortOrder = ''DESC'' THEN
CASE @SortColumn
WHEN ''Date'' THEN Date
END
END DESC,
CASE WHEN @SortOrder = ''ASC'' THEN
CASE @SortColumn
WHEN ''Fee'' THEN Fee
END
END,
CASE WHEN @SortOrder = ''DESC'' THEN
CASE @SortColumn
WHEN ''Fee'' THEN Fee
END
END DESC,
CASE WHEN @SortOrder = ''ASC'' THEN
CASE @SortColumn
WHEN ''Ref'' THEN Ref
END
END,
CASE WHEN @SortOrder = ''DESC'' THEN
CASE @SortColumn
WHEN ''Ref'' THEN Ref
END
END DESC,
CASE WHEN @SortOrder = ''ASC'' THEN
CASE @SortColumn
WHEN ''Pref'' THEN Pref
END
END,
CASE WHEN @SortOrder = ''DESC'' THEN
CASE @SortColumn
WHEN ''Pref'' THEN Pref
END
END DESC,
CASE WHEN @SortOrder = ''ASC'' THEN
CASE @SortColumn
WHEN ''BatchNo'' THEN BatchNo
END
END,
CASE WHEN @SortOrder = ''DESC'' THEN
CASE @SortColumn
WHEN ''BatchNo'' THEN BatchNo
END
END DESC,
CASE WHEN @SortOrder = ''ASC'' THEN
CASE @SortColumn
WHEN ''Type'' THEN Type
END
END,
CASE WHEN @SortOrder = ''DESC'' THEN
CASE @SortColumn
WHEN ''Type'' THEN Type
END
END DESC
SELECT *
FROM #TEMP
WHERE
(
@StartRow IS NULL
OR
(
[RowNumber] BETWEEN @StartRow AND @EndRow
)
)
SELECT
COUNT([RowNumber]) AS TotalRecord
FROM #TEMP
'
print @sql
EXEC Sp_executesql @sql,
N'@SearchString VARCHAR(500),@Search NVARCHAR(MAX), @offset INT, @PageSize INT, @SortColumn VARCHAR(100), @SortOrder VARCHAR(100),@StartRow INT, @EndRow INT,
@andortypevalue VARCHAR(200),
@andorbatchnovalue VARCHAR(200),
@andorprefvalue VARCHAR(200),
@andorrefvalue VARCHAR(200),
@andorfeecodevalue VARCHAR(200),
@andordatevalue VARCHAR(200),
@andortotalvalue VARCHAR(200),
@andormattervalue VARCHAR(200),
@andorcodevalue VARCHAR(200),
@andorsuppvalue VARCHAR(200),
@andornarrvalue VARCHAR(200)',
@SearchString =@SearchString,
@Search = @Search,
@offset = @offset,
@PageSize = @PageSize,
@SortColumn = @SortColumn,
@SortOrder = @SortOrder,
@StartRow = @StartRow,
@EndRow = @EndRow,
@andortypevalue = @andortypevalue,
@andorbatchnovalue = @andorbatchnovalue,
@andorprefvalue = @andorprefvalue,
@andorrefvalue = @andorrefvalue,
@andorfeecodevalue = @andorfeecodevalue,
@andordatevalue = @andordatevalue,
@andortotalvalue = @andortotalvalue,
@andormattervalue = @andormattervalue,
@andorcodevalue = @andorcodevalue,
@andorsuppvalue = @andorsuppvalue,
@andornarrvalue = @andornarrvalue
SET NOCOUNT OFF
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_GetReceiptsDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetReceiptsDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetReceiptsDetails]
(
@BatchNo INT,
@handlerCode VARCHAR(10) = NULL
)
AS
/*******************************************************************************************************
* Fetches the receipts list of specific batch *
* *
* Stored Procedure Name : [dbo].[KAAS_GetReceiptsDetails] *
* *
* Modification History: *
* 2021-03-24 Revathy D Created *
* 2021-08-18 Balamurugan C Modified - Added Payee Column *
* 2021-08-23 Balamurugan C Modified - Added THIRDPARTY,OnceOffPayment,PayClient,ClientCode Column *
* 2021-08-23 Balamurugan C Modified - Added Case Associate Column *
* 2021-12-07 vinodhkumar M Modified - Added Head Pref,Supp Column *
* 2022-03-29 Vignesh M Modified POSTED, S13 Columns Added *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [BTD].[BatchNo],
[BTD].[Type],
[BTD].[Code],
[BTD].[Pref],
[BTD].[Ref],
[dbo].KEYHM_FNConvertUTCDateToTargetTimeZone(BTD.[Date], @handlerCode) AS [Date],
[BTD].[Fee],
[BTD].[Narr],
[BTD].[Matter],
[BTD].[Supp],
[BTD].[Value],
[BTD].[VatCode],
[BTD].[VatVal],
[BTD].[Outlay],
[BTD].[Year],
[BTD].[PerNo],
[BTD].[OutlayCode],
[BTD].[HeadBatch],
[BTD].[AllocBatch],
[BTD].[AllocPref],
[BTD].[KeyId] ,
[BTD].[ClientYN],
[BTD].[AllocRef],
[BTD].[AllocValue],
[BTD].[AllocWriteOff],
[BTD].[Payee],
[BTD].[Branch],
[BTD].[ThirdParty],
[BTD].[PayClient],
[BTD].[OnceOffPayment],
[BTD].[ClientCode],
[BTD].[EFTEmailYorN],
[BTD].[CaseAssCode],
[BTD].[HeadPref],
[BTD].[Supp],
[BAH].[POSTED],
[MAT].[S13]
FROM [dbo].[BatchDetails] [BTD]
LEFT JOIN [dbo].[BatchH] [BAH] ON [BAH].[BATCHNO] = [BTD].[BATCHNO]
LEFT JOIN [dbo].[matters] [MAT] ON [MAT].[Code] = [BTD].[MATTER]
WHERE [BTD].[BATCHNO] = @BatchNo
ORDER BY [BTD].[BATCHNO] ASC,
[BTD].[PREF] ASC,
[BTD].[KEYID] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSamAccountBalanceLog',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamAccountBalanceLog]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSamAccountBalanceLog]
AS
/*******************************************************************************************************
* SAM account balance log *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamAccountBalanceLog] *
* *
* Modification History: *
* 2024-12-10 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
SELECT [CAL].[Id] AS [Id],
[CAL].[User] AS [HandlerCode],
[HAN].[NAME] AS [HandlerName],
[CAL].[EntryDate] AS [EntryDate],
[CAL].[ModifiedDate] AS [ModifiedDate],
[CAL].[LastBatchNo] AS [LastBatchNo],
[CAL].[ClientAcMatterBalance] AS [ClientAcMatterBalance],
[CAL].[OutlayAcMatterBalance] AS [OutlayAcMatterBalance],
[CAL].[BillingAcMatterBalance] AS [BillingAcMatterBalance],
[CAL].[SupplierAcMatterBalance] AS [SupplierAcMatterBalance],
[CAL].[ClientControlAccounts] AS [ClientControlAccounts],
[CAL].[OutlayControlAccounts] AS [OutlayControlAccounts],
[CAL].[BillingControlAccounts] AS [BillingControlAccounts],
[CAL].[SupplierControlAccounts] AS [SupplierControlAccounts],
[CAL].[ClientAcMatterBalance] - [ClientControlAccounts] AS [ClientBalDiff],
[CAL].[OutlayAcMatterBalance] - [OutlayControlAccounts] AS [OutlayBalDiff],
[CAL].[BillingAcMatterBalance] - [BillingControlAccounts] AS [BillingBalDiff],
[CAL].[SupplierAcMatterBalance] - [SupplierControlAccounts] AS [SuppBalDiff],
[CAL].[NominalControlTotal] AS [NominalControlTotal],
[CAL].[ClientBankTotal] AS [ClientBankTotal],
[CAL].[OfficeBankTotal] AS [OfficeBankTotal]
FROM [dbo].[ControlAccountLog] [CAL]
JOIN [dbo].[Handlers] [HAN]
ON [HAN].[CODE] = [CAL].[User]
ORDER BY [EntryDate] DESC
END
GO
IF OBJECT_ID(N'KAAS_GetSAMAccruals', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMAccruals]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMAccruals]
AS
/*******************************************************************************************************
* [dbo].[KAAS_GetSAMAccruals] *
* Description: Used to fetch accruals list *
* Modification History: *
* 2021-08-03 Revathy D Created *
* 2022-05-16 Vignesh M Modified Order by changed as per SAM *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [ACC].[NOMINALFROM] AS [NominalAc],
[ACC].[NOMINALTO] AS [AccrualAc],
[ACC].[DESCRIPTION] AS [Description],
[ACC].[VALUE] AS [Value],
[ACC].[VALUEYTD] AS [ValueYTD],
[ACC].[RECORDID] AS [RecordId]
FROM dbo.[Accruals] ACC
ORDER BY
[ACC].[NOMINALFROM] ASC,
[ACC].[RECORDID] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSAMAssociateTypes',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMAssociateTypes]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMAssociateTypes]
AS
/*******************************************************************************************************
* Stored Procedure Name : [dbo].[KAAS_GetSAMAssociateTypes] *
* *
* Description: Get list of AssociateTypes *
* *
* Modification History: *
* 2021-09-02 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
SELECT RTRIM([CODE]) AS [Code],
RTRIM([DESCRIPTION]) AS [Description]
FROM
[dbo].[AssociateTypes]
ORDER BY
[CODE] ASC
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMBatchMatterBranch'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMBatchMatterBranch]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMBatchMatterBranch]
(
@BatchNo INT = 0
)
AS
/*******************************************************************************************************
* To get Branch of Matter, Batch Header and Batch Details from view *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMBatchMatterBranch] *
* *
* Modification History: *
* 2021-09-07 Balamurugan.C Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [BatchNo] AS [BatchNo],
ISNULL([Matter],'') AS [Matter],
ISNULL([MatterBranch],'') AS [MatterBranch],
ISNULL([BatchDBranch],'') AS [BatchDBranch],
ISNULL([BatchHBranch],'') AS [BatchHBranch],
ISNULL([NominalBranch],'') AS [NominalBranch]
FROM [dbo].[BatchMatterBranch]
WHERE [BatchNo]=@BatchNo
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMBatchMatterValidationDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMBatchMatterValidationDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMBatchMatterValidationDetails]
(
@BatchNo INT = 0
)
AS
/*******************************************************************************************************
* To check outlay budget,approved,closed status in batch header *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMBatchMatterValidationDetails] *
* *
* Modification History: *
* 2021-09-07 Balamurugan.C Created *
* 2021-09-08 Balamurugan.C Modified-Added ClientCurBal,ClientDepBal Column *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [BAD].[BATCHNO] AS [BatchNo],
[BAD].[MATTER] AS [Matter],
[MAT].[Closed] AS [MatterClosed],
[MAT].[ClientCode] AS [ClientCode],
[MAT].[OutlayBud] AS [OutlayBud],
[MAT].[OutlayBal] AS [OutlayBal],
[BAD].[Value] AS [Value],
[CON].[Approved] AS [Approved],
[MAT].[ClientCurBal] AS [ClientCurBal],
[MAT].[ClientDepBal] AS [ClientDepBal]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[BatchH] AS [BAH]
ON [BAD].[BATCHNO] = [BAH].[BATCHNO]
INNER JOIN [dbo].[matters] AS [MAT]
ON [BAD].[MATTER] = [MAT].[Code]
INNER JOIN [dbo].[Contacts] AS [CON]
ON [MAT].[ClientCode] = [CON].[Code]
WHERE [BAD].[BatchNo] = @BatchNo
SET NOCOUNT OFF
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_GetSamBillDetailsFeeEarnerList'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSamBillDetailsFeeEarnerList]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSamBillDetailsFeeEarnerList]
(@BillNo INT,
@MatterCode VARCHAR(20))
AS
/********************************************************************************************************
* Fetches the BillDetails and FeeEarnerList *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamBillDetailsFeeEarnerList] *
* *
* Modification History: *
* 2021-09-15 Vinodhkumar.M Created *
* 2024-04-23 Pino Carafa Created SAM3 and SAM4 versions and ensure that this one calls *
* the correct one. *
* *
* *
* ****************************************** *
* * * *
* 2024-04-24 Pino Carafa * THIS PROCEDURE IS OBSOLETE. DO NOT USE * *
* * * *
* ****************************************** *
* *
********************************************************************************************************/
BEGIN
IF [dbo].[ISSAM4]() = 0
BEGIN
EXEC sp_executesql N'[dbo].[KAAS_GetSamBillDetailsFeeEarnerListSAM3] @BillNo, @MatterCode', N'@BillNo INT, @MatterCode VARCHAR(20)', @BillNo = @BillNo, @MatterCode = @MatterCode
END
ELSE
BEGIN
EXEC sp_executesql N'[dbo].[KAAS_GetSamBillDetailsFeeEarnerListSAM4] @BillNo, @MatterCode', N'@BillNo INT, @MatterCode VARCHAR(20)', @BillNo = @BillNo, @MatterCode = @MatterCode
END
END
GO
IF OBJECT_ID(N'KAAS_GetSAMBranchDropDownList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMBranchDropDownList]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMBranchDropDownList]
AS
/*******************************************************************************************************
* To get Branch List for dropdown *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMBranchDropDownList] *
* *
* Modification History: *
* 2021-08-13 Vinodhkumar Created *
* 2021-08-17 Balamurugan.C Modified-Include Right Trim *
*******************************************************************************************************/
BEGIN
SELECT RTRIM([BRANCHCODE]) AS [Code],
RTRIM([DESCRIPTION]) AS [Description]
FROM [dbo].[Branch]
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMCaseContactBankDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMCaseContactBankDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMCaseContactBankDetails]
(
@CaseCode VARCHAR(20) = ''
)
AS
/*******************************************************************************************************
* This sp is used to get Case Associates Dropdown Details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetCaseContactBankDetails] *
* *
* Modification History: *
* 2021-05-24 Balamurugan Created *
* 2021-09-09 Balamurugan Modified - Added EFT Email Address Column *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT ROW_NUMBER() OVER (ORDER BY [CSC].[CaseCode] DESC) AS RowID,
[CSC].[CaseCode] AS [CaseCode],
[CSC].[ConType] AS [ConType],
[CSC].[ConNum] AS [ConNum],
[CSC].[NameCode] AS [NameCode],
[CSC].[SolCode] AS [SolCode],
[CSC].[InsCode] AS [InsCode],
[CSC].[AssignedContact] AS [AssignedContact],
[CAN].[Code] AS [Code],
[CAN].[Type] AS [Type],
[CAN].[Name]+'('+ [CAN].[Company]+')' AS [NameAndCompany],
[CAN].[Name] AS [Name],
[CAN].[Company] AS [Company],
[CAN].[Address] AS [Address],
[CAN].[Search] AS [Search],
[CAN].[ContactNo] AS [ContactNo],
[CAN].[BankName] AS [BankName],
[CAN].[BankSortCode] AS [BankSortCode],
[CAN].[BankAccNo] AS [BankAccNo],
[CAN].[Iban] AS [Iban],
[CAN].[Bic] AS [Bic],
[AST].[Code] AS [AssociateCode],
[AST].[Description] AS [Description],
[CAN].[EFTEmailAddress] AS [EFTEmailAddress]
FROM [dbo].[CaseContacts] [CSC]
LEFT OUTER JOIN [dbo].[CaseAssociatesNames] [CAN]
ON [CSC].[NameCode] = [CAN].[Code]
LEFT OUTER JOIN [dbo].[AssociateTypes] [AST]
ON [CSC].[ConType] = [AST].CODE
WHERE [CSC].[CaseCode] = @CaseCode
ORDER BY [CSC].[CaseCode] ASC,
[CSC].[ConType] ASC,
[CSC].[ConNum] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSAMCaseContactDetails',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMCaseContactDetails]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMCaseContactDetails]
(
@MatterCode VARCHAR(20)
)
AS
/*******************************************************************************************************
* [dbo].[KAAS_GetSAMCaseContactDetails] '000001/0000' *
* Description: Used to Case contact details for matter code *
* Modification History: *
* 2021-04-09 Natarajan S Created *
* 2021-04-09 Arun V Implemented coding standards *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
ROW_NUMBER() OVER(ORDER BY [CC].assignedcontact) AS ConNum,
[CC].[CASECODE] [CaseCode],
[CC].[CONTYPE] [ConType],
[CC].[NAMECODE] [CaseContactsNameCode],
[CC].[SOLCODE] [CaseContactsSolCode],
[CC].[INSCODE] [CaseContactsInsCode],
[CC].[ASSIGNEDCONTACT] [AssignedContact],
[CA].[CODE] [CaseAssociateCode],
[CA].[TYPE] [CaseAssociateType],
[CA].[NAME] + '(' + [CA].[COMPANY] + ')' AS [CaseAssociateName],
[CA].[COMPANY] [CaseAssociateCompany],
[CA].[ADDRESS] [CaseAssociateAddress],
[CA].[NAME] [CaseAssociateSearch],
[CA].[CONTACTNO] [CaseAssociateContactNo],
[CA].[BANKNAME] [CaseAssociateBankName],
[CA].[BANKSORTCODE] [CaseAssociateBankSortCode],
[CA].[BANKACCNO] [CaseAssociateBankAccNo],
[CA].[IBAN] [CaseAssociateIBAN],
[CA].[BIC] [CaseAssociateBIC],
[AT].[CODE] [AssociateTypeCode],
[AT].[DESCRIPTION] [AssociateTypeDescription]
FROM
[dbo].[CaseContacts] CC
LEFT OUTER JOIN [dbo].[CaseAssociatesNames] CA
ON [CC].[NAMECODE]= [CA].[CODE]
LEFT OUTER JOIN [dbo].[AssociateTypes] AT
ON [CC].[CONTYPE]= AT.CODE
WHERE
[CC].[CASECODE] =@MatterCode
ORDER BY
[CC].[CASECODE] ASC,
[CC].[CONTYPE] ASC,
[CC].[CONNUM] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSAMChangeAssociateDetails',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMChangeAssociateDetails]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMChangeAssociateDetails]
(@Code VARCHAR(20) = NULL)
AS
/*******************************************************************************************************
* Stored Procedure Name : [dbo].[KAAS_GetSAMChangeAssociateDetails] *
* *
* Description: Get details of Change associates party based on Code *
* *
* Modification History: *
* 2021-09-02 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
SELECT
[Type],
[Code],
[Name],
[Email],
[BankType],
[BankName],
[BankAddress],
[BankSortCode],
[BankAccNo],
[IBAN],
[BIC],
[EFTEmailAddress]
FROM
[dbo].[CaseAssociatesNames]
WHERE
[CODE]=@Code
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMClientAccountExpansion'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].KAAS_GetSAMClientAccountExpansion
END
go
CREATE PROCEDURE [dbo].KAAS_GetSAMClientAccountExpansion (@MatterCode VARCHAR(20))
AS
/******************************************************************************************************************
* *
*Used to list the matter ledger *
* Stored Procedure Name: [dbo].KAAS_GetSAMClientAccountExpansion *
* Modification History: *
* 2021-03-30 Natarajan S Created *
* 2021-12-02 Vinodhkumar M Modified - In where clause valuec should not be 0 condition addded and *
footer balance query is added *
******************************************************************************************************************/
BEGIN
EXEC [dbo].KAAS_GetSAMHeaderDetails @MatterCode
SELECT
[Date],
[REF] AS Ref,
[NARR] AS Narr,
[ValueC],
[ValueCC],
[ValueCD],
[DepositType],
[PRef]
FROM dbo.MatterLedger
WHERE MATTER= @MatterCode AND
valuec <> 0
SELECT [MAT].[DebtBal] AS [DebtorBalance],
[MAT].[OutlayBal] AS [OutlayBalance],
[MAT].[ClientCurBal] AS [ClientCurrentBalance],
[MAT].[ClientDepBal] AS [ClientDeptBalance],
[MAT].[ClientBal] AS [ClientBalance]
FROM [dbo].[Matters] [MAT]
WHERE [MAT].[Code] = @MatterCode
END
go
IF OBJECT_ID(N'KAAS_GetSAMCommonSystemOptions',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMCommonSystemOptions]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMCommonSystemOptions]
AS
/*******************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMCommonSystemOptions] *
* Description: To Get common System Options *
* *
* Modification History: *
* 2021-07-28 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
SELECT
[CON].[Indicator22] as [Branch],
[CON].[ForceFE] as [ForceFE],
[CON].[PendingOutlay] as [PendingOutlay]
FROM
[Control] [CON]
END
GO
IF OBJECT_ID(N'KAAS_GetSamCreateFillYear',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamCreateFillYear]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSamCreateFillYear]
(
@Code VARCHAR(10) = NULL,
@Branch VARCHAR(10) = NULL,
@Year INT = 0,
@Budget DECIMAL(9,2) = 0.00
)
AS
/*******************************************************************************************************
* Create Fill Year *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamCreateFillYear] *
* *
* Modification History: *
* 2021-10-06 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DECLARE @Count INT = 0;
SET @Count = 1;
WHILE(@Count <= 12)
BEGIN
--INSERT INTO TABLE
INSERT
INTO [dbo].[NominalBudgets]
(
[Code],
[Branch],
[Year],
[Period],
[Budget]
)
VALUES
( @Code,
@Branch,
@Year,
@Count,
@Budget
)
SET @Count = @Count + 1
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_GetSamCreateMemoriseTransaction',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamCreateMemoriseTransaction]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSamCreateMemoriseTransaction]
(
@BatchNumber INT = 0,
@Date DATE = NULL,
@Handler VARCHAR(30) = ''
)
AS
/*******************************************************************************************************
* Create Memorise Batch and Details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamCreateMemoriseTransaction] *
* *
* Modification History: *
* 2021-09-29 Vinodhkumar M Created *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
* 2022-05-06 Vignesh M Modified - GetDate replaced by Date *
* 2022-05-09 Vignesh M Modified - UTC Conversion Removed *
* 2024-10-14 Balamurugan C Modified - Need to take records from RBatch and RBatchD *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DECLARE @LastBatch INT = 0,
@LastPref INT = 0
(SELECT @LastBatch=(LASTBATCH+1),
@LastPref=(LASTPREF+1)
FROM [dbo].[control])
--INSERT INTO HEADER TABLE
INSERT
INTO [dbo].[BatchH]
( [BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[MATTER],
[SUPP],
[NARR],
[VALUE],
[SUBTOT],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[OUTLAYTOT],
[VATTOT],
[FEETOT],
[INVCR],
[THIRDPARTY],
[USERCODE],
[ENTRYDATE],
[CLIENTBANK],
[CURRENCY],
[CURRENCYVALUE],
[CUROUTLAYTOT],
[CURVATTOT],
[CURFEETOT],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[WRITEDOWN],
[WRITEBACKHOURS],
[WRITEBACKVALUE],
[CORRECTCOPY],
[CREDITINVOICENO],
[DRAFTBILLNO],
[EFTSENT],
[EFTDATE],
[EFTFileNumber],
[EFTFileName],
[EFTYorN],
[ClientCode],
[PayClient],
[OnceOffPayment],
[CaseAssCode]
)
SELECT @LastBatch,
TYPE,
CODE,
@LastPref,
'',
DATEADD(DAY, DATEDIFF(DAY, 0, [DATE]), 0),
FEE,
MATTER,
SUPP,
NARR,
VALUE,
SUBTOT,
POSTED,
CLIENTAC,
PERNO,
YEAR,
PAYEE,
OUTLAYTOT,
VATTOT,
FEETOT,
INVCR,
THIRDPARTY,
USERCODE,
ENTRYDATE,
CLIENTBANK,
CURRENCY,
CURRENCYVALUE,
CUROUTLAYTOT,
CURVATTOT,
CURFEETOT,
RECNO,
SINGLELINE,
'~~~MEMO~~~',
CHEQUEREQNO,
WRITEDOWN,
WRITEBACKHOURS,
WRITEBACKVALUE,
CORRECTCOPY,
CreditInvoiceNo,
DraftBillNo,
EFTSent,
EFTDate,
EFTFileNumber,
EFTFileName,
EFTYorN,
ClientCode,
PayClient,
OnceOffPayment,
CaseAssCode
FROM [dbo].[RBatchH] WITH (NOLOCK)
WHERE [BatchNo] = @BatchNumber
AND [DATE] = @Date
UPDATE [dbo].[control]
SET LASTPREF=(@LastPref)
WHERE NEXT_DOC_NO = 0
--INSERT INTO TEMP TABLE
SELECT @LastBatch AS [batch],
[TYPE],
[CODE],
@LastPref AS [pref],
DATEADD(DAY, DATEDIFF(DAY, 0, [DATE]), 0) AS [batchDate],
[FEE],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
ROW_NUMBER() OVER(ORDER BY @LastBatch) AS rowId
INTO #tempTable
FROM [dbo].[RBatchD] WITH (NOLOCK)
WHERE [BatchNo] = @BatchNumber
AND NOT EXISTS (SELECT 1
FROM [dbo].[RBatchD] [BAD]
WHERE [BAD].PREF = @LastPref)
DECLARE @Count INT = 0,
@TotalCount INT = 0,
@LastPrefDetails INT = 0;
SET @TotalCount = (SELECT COUNT(*) FROM #tempTable);
SET @Count = 1;
WHILE(@Count <= @TotalCount)
BEGIN
SELECT @LastPrefDetails = (LASTPREF+1) FROM [dbo].[control]
--INSERT INTO DETAILS TABLE
INSERT
INTO [dbo].[BatchDetails]
( [BATCHNO],
[TYPE],
[CODE],
[PREF],
[DATE],
[FEE],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode]
)
SELECT @LastBatch,
[TYPE],
[CODE],
@LastPrefDetails,
[batchDate],
[FEE],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode]
FROM #tempTable WITH (NOLOCK)
WHERE rowId = @count
UPDATE [dbo].[control]
SET LASTPREF=(@LastPrefDetails)
WHERE NEXT_DOC_NO=0
SET @Count = @Count + 1
END
UPDATE dbo.control
SET LASTBATCH=(@LastBatch)
WHERE NEXT_DOC_NO=0
DROP TABLE #tempTable
DELETE FROM [dbo].[RBatchH]
WHERE [BATCHNO] = @BatchNumber
AND [DATE] = CAST(@Date AS DATE)
DELETE FROM [dbo].[RBatchD]
WHERE [BATCHNO] = @BatchNumber
AND [DATE] = CAST(@Date AS DATE)
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSamCreateOutlayWriteOffJournal'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSamCreateOutlayWriteOffJournal]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSamCreateOutlayWriteOffJournal]
(
@Branch VARCHAR(1) = '',
@JournalAmount DECIMAL = 0 ,
@AllocBatch INT = 0,
@AllocPref INT = 0,
@AllocRef VARCHAR(20) = '',
@Matter VARCHAR(20) = '',
@Handler VARCHAR(20) = ''
)
AS
/*******************************************************************************************************
* Create Jourunal Batch and Details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamCreateOutlayWriteOffJournal] *
* *
* Modification History: *
* 2021-09-30 Balamurugan C Created *
* 2021-10-06 Balamurugan C Modified - Changes in case statement *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DECLARE @LastBatch INT = 0,
@LastPref INT = 0,
@Year INT = 0,
@CurPer INT = 0,
@DefaultDebtors VARCHAR(15) = '',
@DefaultOutlay VARCHAR(15) = '',
@CurrentDate DATE = NULL;
(
SELECT @LastBatch = (LastBatch + 1),
@LastPref = (LastPref + 1),
@Year = [Year],
@CurPer = CurPer,
@DefaultDebtors = Debtors,
@DefaultOutlay = Outlay
FROM [dbo].[Control]
)
SET @CurrentDate = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](GETDATE(), @Handler)), 0)
INSERT
INTO [dbo].[BatchH]
(
[Batchno],
[Postfwd],
[Type],
[Code],
[Branch],
[Pref],
[Ref],
[Date],
[Fee],
[Matter],
[Supp],
[Narr],
[Value],
[Subtot],
[Posted],
[ClientAc],
[PerNo],
[Year],
[Payee],
[OutlayTot],
[VatTot],
[FeeTot],
[Invcr],
[ThirdParty],
[UserCode],
[EntryDate],
[ClientBank],
[Currency],
[CurrencyValue],
[CuroutlayTot],
[CurVatTot],
[CurFeeTot],
[RecNo],
[Singleline],
[Template],
[ChequeReqNo],
[WriteDown],
[WriteBackHours],
[WriteBackValue],
[CorrectCopy],
[CreditInvoiceNo],
[DraftBillNo],
[EFTSent],
[EFTDate],
[EFTFileNumber],
[EFTFileName],
[EFTYorN],
[ClientCode],
[PayClient],
[OnceOffPayment],
[CaseAssCode],
[EFTEmailYorN],
[HandlerCode],
[PaymentMethod],
[ClearedDate]
)
VALUES
(
@LastBatch, /*[Batchno]*/
'', /*[Postfwd]*/
'J', /*[Type]*/
'', /*[Code]*/
@Branch, /*[Branch]*/
@LastPref, /*[Pref]*/
'Set-off', /*[Ref]*/
@CurrentDate, /*[Date]*/
'', /*[Fee]*/
'', /*[Matter]*/
'', /*[Supp]*/
'Journal to Set off billing against Outlay', /*[Narr]*/
0.00, /*[Value]*/
0.00, /*[Subtot]*/
'N', /*[Posted]*/
'', /*[ClientAc]*/
@CurPer, /*[PerNo]*/
@Year, /*[Year]*/
'', /*[Payee]*/
0.00, /*[OutlayTot]*/
0.00, /*[VatTot]*/
0.00, /*[FeeTot]*/
'', /*[Invcr]*/
'', /*[ThirdParty]*/
'keyhouse', /*[UserCode]*/
@CurrentDate, /*[EntryDate]*/
'', /*[ClientBank]*/
'E', /*[Currency]*/
0.00, /*[CurrencyValue]*/
0.00, /*[CuroutlayTot]*/
0.00, /*[CurVatTot]*/
0.00, /*[CurFeeTot]*/
0, /*[RecNo]*/
'', /*[Singleline]*/
'', /*[Template]*/
0, /*[ChequeReqNo]*/
NULL, /*[WriteDown]*/
0.00, /*[WriteBackHours]*/
0.00, /*[WriteBackValue]*/
'', /*[CorrectCopy]*/
0, /*[CreditInvoiceNo]*/
0, /*[DraftBillNo]*/
'N', /*[EFTSent]*/
NULL, /*[EFTDate]*/
0, /*[EFTFileNumber]*/
'', /*[EFTFileName]*/
'N', /*[EFTYorN]*/
'', /*[ClientCode]*/
'N', /*[PayClient]*/
'N', /*[OnceOffPayment]*/
'', /*[CaseAssCode]*/
'N', /*[EFTEmailYorN]*/
'', /*[HandlerCode]*/
0, /*[PaymentMethod]*/
NULL /*[ClearedDate]*/
)
UPDATE [dbo].[Control]
SET [LASTPREF] = (@LastPref)
WHERE [NEXT_DOC_NO] = 0
/* INSERT INTO TEMP TABLE */
IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL
DROP TABLE #tempTable
SELECT @LastBatch AS BatchNo,
'J' AS [Type],
'' AS Code,
@LastPref AS Pref,
'Set-off' AS Ref,
@CurrentDate AS [Date],
'' AS Fee,
'H' AS Branch,
'Journal to Set off billing against Outlay' AS Narr,
@Matter AS Matter,
'' AS Supp,
@JournalAmount AS [Value],
'' AS VatCode,
0.00 AS VatVal,
'' AS ClientYN,
'' AS Outlay,
'' AS Pending,
@Year AS [Year],
@CurPer AS PerNo,
'E' AS EntryCurrency,
@JournalAmount AS CurrencyValue,
0.00 AS CurrencyVat,
'' AS OutlayCode,
'' AS ThirdParty,
'' AS Payee,
0 AS HeadPref,
0 AS HeadBatch,
@AllocBatch AS AllocBatch,
@AllocPref AS AllocPref,
@AllocRef AS AllocRef,
@JournalAmount AS AllocValue,
'N' AS Allocwriteoff,
'' AS Psupp,
0 AS Undetaking,
'' AS CaseAssCode,
'N' AS OnceOffPayment,
'N' AS PayClient,
'' AS ClientCode,
'N' AS EFTEmailYorN,
0 AS RegisteredPost,
0 AS PreBilledOutlay
INTO #tempTable
DECLARE @InsertNum INT,
@LastPrefIncrement INT = 0
SET @InsertNum = 2
WHILE (@InsertNum <> 0 )
BEGIN
SET @InsertNum = @InsertNum - 1
SELECT @LastPrefIncrement = (LASTPREF+1) FROM [dbo].[Control]
INSERT
INTO [dbo].[Batchdetails]
(
[BatchNo],
[Type],
[Code],
[Pref],
[Ref],
[Date],
[Fee],
[Branch],
[Narr],
[Matter],
[Supp],
[Value],
[Vatcode],
[Vatval],
[Clientyn],
[Outlay],
[Pending],
[Year],
[Perno],
[Entrycurrency],
[Currencyvalue],
[Currencyvat],
[Outlaycode],
[Thirdparty],
[Payee],
[Headpref],
[Headbatch],
[Allocbatch],
[Allocpref],
[Allocref],
[Allocvalue],
[Allocwriteoff],
[Psupp],
[Undetaking],
[Caseasscode],
[Onceoffpayment],
[Payclient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay]
)
(
SELECT [BatchNo],
[Type],
CASE WHEN @InsertNum = 0 THEN @DefaultDebtors ELSE @DefaultOutlay END AS Code,
@LastPrefIncrement,
[Ref],
[Date],
[Fee],
[Branch],
[Narr],
[Matter],
[Supp],
CASE WHEN @InsertNum = 0 THEN CASE WHEN [Value] < 0 THEN [Value] ELSE [Value]*-1 END ELSE ABS([Value]) END AS [Value],
[VatCode],
[VatVal],
[ClientYN],
CASE WHEN @InsertNum = 0 THEN 'D' ELSE 'O' END AS [Outlay],
[Pending],
[Year],
[PerNo],
[EntryCurrency],
CASE WHEN @InsertNum = 0 THEN CASE WHEN [CurrencyValue] < 0 THEN [CurrencyValue] ELSE [CurrencyValue]*-1 END ELSE ABS([CurrencyValue]) END AS [CurrencyValue],
[CurrencyVat],
[OutlayCode],
[ThirdParty],
[Payee],
[HeadPref],
[HeadBatch],
CASE WHEN @InsertNum = 0 THEN [AllocBatch] ELSE 0 END AS [AllocBatch],
CASE WHEN @InsertNum = 0 THEN [AllocPref] ELSE 0 END AS [AllocPref],
CASE WHEN @InsertNum = 0 THEN [AllocRef] ELSE '' END AS [AllocRef],
CASE WHEN @InsertNum = 0 THEN CASE WHEN [AllocValue] < 0 THEN [AllocValue] ELSE [AllocValue]*-1 END ELSE 0 END AS [AllocValue],
[Allocwriteoff],
[Psupp],
[Undetaking],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay]
FROM #tempTable
)
UPDATE [dbo].[Control]
SET [LASTPREF] = (@LastPrefIncrement)
WHERE [NEXT_DOC_NO] = 0
END
UPDATE [dbo].[Control]
SET [LASTBATCH] = (@LastBatch)
WHERE [NEXT_DOC_NO] = 0
SELECT @LastBatch 'LastBatch'
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMCurrentCaseDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMCurrentCaseDetails]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMCurrentCaseDetails]
(@MatterCode VARCHAR(30))
AS
/*******************************************************************************************************
* This stored procedure is used to Get SAM Current Case Details data associated with all the tabs in it*
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMCurrentCaseDetails] *
* *
* Modification History : *
* 2022-01-21 Vinodhkumar.M Duplication from SP-> KAAS_GetSAMCurrentCaseDetails *
* 2022-01-21 Vinodhkumar.M Added -> Check if matter is eligible to Closed *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @IsPaperlessColumn AS BIT
IF EXISTS(
SELECT TOP 1 1
FROM SYS.COLUMNS
WHERE OBJECT_NAME(OBJECT_ID) = 'Matters'
and [NAME] = 'Paperless')
BEGIN
EXEC ('SELECT
RTRIM(ISNULL(MAT.[ClientCode], '''')) AS [ClientCode],
RTRIM(ISNULL(MAT.[Matter], '''')) AS [Matter],
RTRIM(ISNULL(MAT.[Description], '''')) AS [Description] ,
RTRIM(ISNULL(MAT.[FECode], '''')) AS [FeeEarner],
RTRIM(ISNULL(MAT.[Partner], '''')) AS [Partner],
RTRIM(ISNULL(MAT.[Secretary], '''')) AS [Secretary],
RTRIM(ISNULL(MAT.[Dept], '''')) AS [Dept] ,
RTRIM(ISNULL(MAT.[WType], '''')) AS [WType] ,
RTRIM(ISNULL(MAT.[OldRef], '''')) AS [OldRef] ,
RTRIM(ISNULL(MAT.[User1], '''')) AS [User1],
RTRIM(ISNULL(MAT.[User2], '''')) AS [User2],
RTRIM(ISNULL(MAT.[User3], '''')) AS [User3],
RTRIM(ISNULL(MAT.[YourRef], '''')) AS [YourRef],
CASE WHEN RTRIM(ISNULL(MAT.[Statements], '''')) = ''Y''
THEN ''True''
ELSE ''False'' END AS [Statements],
ISNULL(MAT.[Importance], 0) AS [Importance],
RTRIM(ISNULL(MAT.[Status], '''')) AS [Status],
RTRIM(ISNULL(MAT.[FileColour], '''')) AS [FileColour],
ISNULL(MAT.[Value], 0) AS [ValueToClient],
ISNULL(CONVERT(NVARCHAR(30),MAT.[Started],23),'''') AS [Started],
ISNULL(convert(NVARCHAR(30),MAT.[StatuteLimits],23),'''') AS [StatuteLimits],
RTRIM(ISNULL(MAT.[DepositName], '''')) AS [DepositName],
ISNULL(MAT.[EstFee], 0) AS [EstFee],
ISNULL(CONVERT(NVARCHAR(30),MAT.[ExpBillD],23),'''') AS [ExpBillD],
CASE WHEN RTRIM(ISNULL(MAT.[Section68], '''')) = ''Y''
THEN ''True''
ELSE ''False'' END AS [EstimateGiven],
CASE WHEN RTRIM(ISNULL(MAT.[S13], '''')) = ''Y''
THEN ''True''
ELSE ''False'' END AS [S13],
ISNULL(MAT.[OutlayBud], 0) AS [OutlayBud],
RTRIM(ISNULL(MAT.[DepositType], '''')) AS [DepositType],
RTRIM(ISNULL(MAT.[Comment], '''')) AS [Comment],
ISNULL(MAT.[ChargeLevel], 0) AS [ChargeLevel],
ISNULL(MAT.[DebtCollected], 0) AS [DebtCollected],
RTRIM(ISNULL(MAT.[ClientName], '''')) AS [ClientName],
RTRIM(ISNULL(MAT.[ClientAddress], '''')) AS [ClientAddress],
RTRIM(ISNULL(MAT.[ClientSalutation], '''')) AS [ClientSalutation],
RTRIM(ISNULL(MAT.[ChargeArrangement], '''')) AS [ChargeArrangement],
CASE WHEN RTRIM(ISNULL(MAT.[ChargeOutRateInd], '''')) = ''Y''
THEN ''True''
ELSE ''False'' END AS [ChargeOutRateInd],
RTRIM(ISNULL(MAT.[CompFrequency], '''')) AS [BillingType],
RTRIM(ISNULL(MAT.[BillingMethod], '''')) AS [BillingMethod],
CASE WHEN RTRIM(ISNULL(MAT.[Publish], '''')) = ''P''
THEN ''True''
ELSE ''False'' END AS [Publish],
RTRIM(ISNULL(CSM.[CSPREMISES], '''')) AS [Premises],
RTRIM(ISNULL(CSM.[CSWKTCODE], '''')) AS [CasePlanType],
ISNULL(MAT.[CollectingBalance], 0) AS [CollectingBalance],
RTRIM(ISNULL(MAT.[PCode], '''')) AS [PCode],
RTRIM(ISNULL(MAT.[PFECode], '''')) AS [PFECode],
RTRIM(ISNULL(CSM.[CSCLBENYN], '''')) AS [CSCLBENYN],
RTRIM(ISNULL(CSM.[CSCLEXEYN], '''')) AS [CSCLEXEYN],
ISNULL(CSM.[CSDATEACCEPT_DATE],'''') AS [CSDATEACCEPT_DATE],
ISNULL(MAT.[OriginalDebt], 0) AS [CSORGDEBT], -- John 2015-11-12 This field is used more often (e.g. reports, case import)
ISNULL(CSM.[CSBALDEBT], 0) AS [CSBALDEBT],
RTRIM(ISNULL(CSM.[CSIRTCODE], '''')) AS [InterestCode],
RTRIM(ISNULL(CSM.[CSPLAINTNO], '''')) AS [RecordNo],
RTRIM(ISNULL(MAT.[FixedFee], '''')) AS [FixedFee],
RTRIM(ISNULL(MAT.[ShowCommentInAlarm], '''')) AS [ShowCommentInAlarm],
RTRIM(ISNULL(MAT.[Closed], '''')) AS [Closed],
ISNULL(MAT.[OrgClosedDate],'''') AS [OrgClosedDate],
ISNULL(MAT.[CloseDate],'''') AS [CloseDate],
RTRIM(ISNULL(FCL.[COLOURDESC], '''')) AS [FileColourDescription],
ISNULL(FCL.[RGBColour], -1) AS [FileColourRGB],
RTRIM(ISNULL(MAT.[CompBillingMatter], '''')) AS [CompBillingMatter],
RTRIM(ISNULL(MAT.[Branch], '''')) AS [Branch],
ISNULL(MAT.[FileNum], 0) AS [FileNum],
ISNULL(MAT.[ClosingDate],'''') AS [ClosingDate],
RTRIM(ISNULL(MAT.[Location], '''')) AS [Location],
RTRIM(ISNULL(MAT.[ArchiveLocation], '''')) AS [ArchiveLocation],
RTRIM(ISNULL(MAT.[FileBarCodeNo], '''')) AS [FileBarCodeNo],
RTRIM(ISNULL(MAT.[BoxBarCodeNo], '''')) AS [BoxBarCodeNo],
RTRIM(ISNULL(MAT.[BoxNumber], '''')) AS [BoxNumber],
ISNULL(CONVERT(NVARCHAR(30),MAT.[DestroyDate],23),'''') AS [DestroyDate],
ISNULL(CONVERT(NVARCHAR(30),[ActualDestroyDate],23),'''') AS [ActualDestroyDate],
RTRIM(ISNULL(MAT.[DestroyedBy], '''')) AS [DestroyedBy],
REPLACE(ISNULL(S.Retired,''N''),'' '',''N'') AS [Retired],
REPLACE(ISNULL(FCL.Retired,''N''),'' '',''N'') AS [FileColourRetired],
REPLACE(ISNULL(FE.Retired,''N''),'' '',''N'') AS [FeeEarnerRetired],
REPLACE(ISNULL(D.RETIRED,''N''),'' '',''N'') AS [DepartmentRetired],
REPLACE(ISNULL(W.RETIRED,''N''),'' '',''N'') AS [WorkTypeRetired],
REPLACE(ISNULL(P.RETIRED,''N''),'' '',''N'') AS [PartnerRetired],
REPLACE(ISNULL(T.RETIRED,''N''),'' '',''N'') AS [CasePlanRetired],
RTRIM(ISNULL(MAT.[BillingFE], '''')) AS [BillingFeeEarner],
ISNULL(MAT.[Started],'''') AS [Started1],
ISNULL(MAT.[Paperless],0) AS [Paperless],
MAT.[FeeType],
CASE WHEN
ISNULL(MAT.NoWinNoFee,''N'') = ''Y''
THEN ''True''
ELSE ''False''
END AS [NoWinNoFee],
1 AS [PaperlessColumnExist]
FROM
[dbo].[matters] MAT
LEFT JOIN [dbo].[CaseMaster] CSM ON CSM.[CSCODE] = MAT.[Code]
LEFT OUTER JOIN [dbo].[FileColours] FCL ON FCL.[COLOURCODE] = MAT.[FileColour]
LEFT JOIN StatusCodes S ON MAT.[Status] = S.CODE
LEFT JOIN FeeEarnerCodes FE ON RTRIM(MAT.FECode) = RTRIM(FE.Code)
LEFT JOIN Departments D ON RTRIM(MAT.Dept) = RTRIM(D.CODE)
LEFT JOIN WorkTypes W ON RTRIM(MAT.WType) = RTRIM(W.CODE)
LEFT JOIN Partners P ON RTRIM(MAT.[Partner]) = RTRIM(P.CODE)
LEFT JOIN Templates T ON RTRIM(CSM.CSWKTCODE) = RTRIM(T.WKCODE)
WHERE
MAT.[Code] =''' + @MatterCode +'''')
END
ELSE
BEGIN
--Matter Details
SELECT
RTRIM(ISNULL(MAT.[ClientCode], '')) AS [ClientCode],
RTRIM(ISNULL(MAT.[Matter], '')) AS [Matter],
RTRIM(ISNULL(MAT.[Description], '')) AS [Description] ,
RTRIM(ISNULL(MAT.[FECode], '')) AS [FeeEarner],
RTRIM(ISNULL(MAT.[Partner], '')) AS [Partner],
RTRIM(ISNULL(MAT.[Secretary], '')) AS [Secretary],
RTRIM(ISNULL(MAT.[Dept], '')) AS [Dept] ,
RTRIM(ISNULL(MAT.[WType], '')) AS [WType] ,
RTRIM(ISNULL(MAT.[OldRef], '')) AS [OldRef] ,
RTRIM(ISNULL(MAT.[User1], '')) AS [User1],
RTRIM(ISNULL(MAT.[User2], '')) AS [User2],
RTRIM(ISNULL(MAT.[User3], '')) AS [User3],
RTRIM(ISNULL(MAT.[YourRef], '')) AS [YourRef],
CASE WHEN RTRIM(ISNULL(MAT.[Statements], '')) = 'Y'
THEN 'True'
ELSE 'False' END AS [Statements],
ISNULL(MAT.[Importance], 0) AS [Importance],
RTRIM(ISNULL(MAT.[Status], '')) AS [Status],
RTRIM(ISNULL(MAT.[FileColour], '')) AS [FileColour],
ISNULL(MAT.[Value], 0) AS [ValueToClient],
ISNULL(CONVERT(NVARCHAR(30),MAT.[Started],23),'') AS [Started],
ISNULL(convert(NVARCHAR(30),MAT.[StatuteLimits],23),'') AS [StatuteLimits],
RTRIM(ISNULL(MAT.[DepositName], '')) AS [DepositName],
ISNULL(MAT.[EstFee], 0) AS [EstFee],
ISNULL(CONVERT(NVARCHAR(30),MAT.[ExpBillD],23),'') AS [ExpBillD],
CASE WHEN RTRIM(ISNULL(MAT.[Section68], '')) = 'Y'
THEN 'True'
ELSE 'False' END AS [EstimateGiven],
CASE WHEN RTRIM(ISNULL(MAT.[S13], '')) = 'Y'
THEN 'True'
ELSE 'False' END AS [S13],
ISNULL(MAT.[OutlayBud], 0) AS [OutlayBud],
RTRIM(ISNULL(MAT.[DepositType], '')) AS [DepositType],
RTRIM(ISNULL(MAT.[Comment], '')) AS [Comment],
ISNULL(MAT.[ChargeLevel], 0) AS [ChargeLevel],
ISNULL(MAT.[DebtCollected], 0) AS [DebtCollected],
RTRIM(ISNULL(MAT.[ClientName], '')) AS [ClientName],
RTRIM(ISNULL(MAT.[ClientAddress], '')) AS [ClientAddress],
RTRIM(ISNULL(MAT.[ClientSalutation], '')) AS [ClientSalutation],
RTRIM(ISNULL(MAT.[ChargeArrangement], '')) AS [ChargeArrangement],
CASE WHEN RTRIM(ISNULL(MAT.[ChargeOutRateInd], '')) = 'Y'
THEN 'True'
ELSE 'False' END AS [ChargeOutRateInd],
RTRIM(ISNULL(MAT.[CompFrequency], '')) AS [BillingType],
RTRIM(ISNULL(MAT.[BillingMethod], '')) AS [BillingMethod],
CASE WHEN RTRIM(ISNULL(MAT.[Publish], '')) = 'P'
THEN 'True'
ELSE 'False' END AS [Publish],
RTRIM(ISNULL(CSM.[CSPREMISES], '')) AS [Premises],
RTRIM(ISNULL(CSM.[CSWKTCODE], '')) AS [CasePlanType],
ISNULL(MAT.[CollectingBalance], 0) AS [CollectingBalance],
RTRIM(ISNULL(MAT.[PCode], '')) AS [PCode],
RTRIM(ISNULL(MAT.[PFECode], '')) AS [PFECode],
RTRIM(ISNULL(CSM.[CSCLBENYN], '')) AS [CSCLBENYN],
RTRIM(ISNULL(CSM.[CSCLEXEYN], '')) AS [CSCLEXEYN],
ISNULL(CSM.[CSDATEACCEPT_DATE],'') AS [CSDATEACCEPT_DATE],
ISNULL(MAT.[OriginalDebt], 0) AS [CSORGDEBT], -- John 2015-11-12 This field is used more often (e.g. reports, case import)
ISNULL(CSM.[CSBALDEBT], 0) AS [CSBALDEBT],
RTRIM(ISNULL(CSM.[CSIRTCODE], '')) AS [InterestCode],
RTRIM(ISNULL(CSM.[CSPLAINTNO], '')) AS [RecordNo],
RTRIM(ISNULL(MAT.[FixedFee], '')) AS [FixedFee],
RTRIM(ISNULL(MAT.[ShowCommentInAlarm], '')) AS [ShowCommentInAlarm],
RTRIM(ISNULL(MAT.[Closed], '')) AS [Closed],
ISNULL(MAT.[OrgClosedDate],'') AS [OrgClosedDate],
ISNULL(MAT.[CloseDate],'') AS [CloseDate],
RTRIM(ISNULL(FCL.[COLOURDESC], '')) AS [FileColourDescription],
ISNULL(FCL.[RGBColour], -1) AS [FileColourRGB],
RTRIM(ISNULL(MAT.[CompBillingMatter], '')) AS [CompBillingMatter],
RTRIM(ISNULL(MAT.[Branch], '')) AS [Branch],
ISNULL(MAT.[FileNum], 0) AS [FileNum],
ISNULL(MAT.[ClosingDate],'') AS [ClosingDate],
RTRIM(ISNULL(MAT.[Location], '')) AS [Location],
RTRIM(ISNULL(MAT.[ArchiveLocation], '')) AS [ArchiveLocation],
RTRIM(ISNULL(MAT.[FileBarCodeNo], '')) AS [FileBarCodeNo],
RTRIM(ISNULL(MAT.[BoxBarCodeNo], '')) AS [BoxBarCodeNo],
RTRIM(ISNULL(MAT.[BoxNumber], '')) AS [BoxNumber],
ISNULL(CONVERT(NVARCHAR(30),MAT.[DestroyDate],23),'') AS [DestroyDate],
ISNULL(CONVERT(NVARCHAR(30),[ActualDestroyDate],23),'') AS [ActualDestroyDate],
RTRIM(ISNULL(MAT.[DestroyedBy], '')) AS [DestroyedBy],
REPLACE(ISNULL(S.Retired,'N'),' ','N') AS [Retired],
REPLACE(ISNULL(FCL.Retired,'N'),' ','N') AS [FileColourRetired],
REPLACE(ISNULL(FE.Retired,'N'),' ','N') AS [FeeEarnerRetired],
REPLACE(ISNULL(D.RETIRED,'N'),' ','N') AS [DepartmentRetired],
REPLACE(ISNULL(W.RETIRED,'N'),' ','N') AS [WorkTypeRetired],
REPLACE(ISNULL(P.RETIRED,'N'),' ','N') AS [PartnerRetired],
REPLACE(ISNULL(T.RETIRED,'N'),' ','N') AS [CasePlanRetired],
RTRIM(ISNULL(MAT.[BillingFE], '')) AS [BillingFeeEarner],
ISNULL(MAT.[Started],'') AS [Started1],
0 AS [Paperless],
MAT.[FeeType],
CASE WHEN
ISNULL(MAT.NoWinNoFee,'N') = 'Y'
THEN 'True'
ELSE 'False'
END AS [NoWinNoFee],
0 AS [PaperlessColumnExist]
FROM
[dbo].[matters] MAT
LEFT JOIN [dbo].[CaseMaster] CSM ON CSM.[CSCODE] = MAT.[Code]
LEFT OUTER JOIN [dbo].[FileColours] FCL ON FCL.[COLOURCODE] = MAT.[FileColour]
LEFT JOIN StatusCodes S ON MAT.[Status] = S.CODE
LEFT JOIN FeeEarnerCodes FE ON RTRIM(MAT.FECode) = RTRIM(FE.Code)
LEFT JOIN Departments D ON RTRIM(MAT.Dept) = RTRIM(D.CODE)
LEFT JOIN WorkTypes W ON RTRIM(MAT.WType) = RTRIM(W.CODE)
LEFT JOIN Partners P ON RTRIM(MAT.[Partner]) = RTRIM(P.CODE)
LEFT JOIN Templates T ON RTRIM(CSM.CSWKTCODE) = RTRIM(T.WKCODE)
WHERE
MAT.[Code] = @MatterCode
END
--Privileges
EXEC KAAS_GetMatterPrivilegeGroups @MatterCode
--Udf Fields
SELECT
RTRIM(ISNULL(UFC.[UDFCategory], '')) AS [UDFCategory],
RTRIM(ISNULL(SUF.[PROMPT], '')) AS [Prompt],
CASE RTRIM(ISNULL(SUF.[TYPE], ''))
WHEN 'Text'
THEN CONVERT(VARCHAR(200), CUF.[TEXT1])
WHEN 'Numeric'
THEN CONVERT(VARCHAR(50), CUF.[NumberValue])
WHEN 'Date'
THEN CONVERT(VARCHAR, CUF.[DateValue], 106)
ELSE CONVERT(VARCHAR(200), CUF.[TEXT1]) END AS [Value],
RTRIM(ISNULL(CUF.[CASECODE], '')) AS [CaseCode],
RTRIM(ISNULL(CUF.[UDFFile], '')) AS [UDFFile],
RTRIM(ISNULL(CUF.[UDFNAME], '')) AS [UDFName],
ISNULL(CUF.[SEQNO], 0) AS [SeqNo],
RTRIM(ISNULL(CUF.[TEXT1], '-')) AS [Text1],
RTRIM(ISNULL(SUF.[FILEPREFIX], '')) AS [FilePrefix],
RTRIM(ISNULL(SUF.[FIELDNAME], '')) AS [FieldName],
RTRIM(ISNULL(SUF.[FORMAT], '')) AS [Format],
RTRIM(ISNULL(SUF.[ACTUALNAME], '')) AS [ActualName],
ISNULL(CUF.[NumberValue], 0) AS [NumberValue],
CUF.[DateValue] AS [DateValue]
FROM
[dbo].[CaseUDFAnswers] CUF
INNER JOIN [dbo].[SystemUserDefinedFields] SUF
ON SUF.[FILEPREFIX] = CUF.[UDFFile]
AND SUF.[FIELDNAME] = CUF.[UDFNAME]
INNER JOIN [dbo].[UDFCategory] UFC
ON UFC.[ID] = SUF.[UDFCategory]
WHERE
CUF.[CASECODE] = @MatterCode
ORDER BY ISNULL(CUF.[SEQNO], 0)
--Case Associates
SELECT
IDENTITY(INT, 1,1) AS [Row_Number],
*
INTO
#FoundTable
FROM
(SELECT
RTRIM(ISNULL(CSC.[CASECODE], '')) AS [CaseCode],
RTRIM(CSC.[CONTYPE]) AS [ConType],
ISNULL(CSC.[CONNUM], 0) AS [ConNum],
RTRIM(ISNULL(CSC.[NAMECODE], '')) AS [ConNameCode],
RTRIM(ISNULL(CSC.[SOLCODE], '')) AS [SolCode],
RTRIM(ISNULL(CSC.[SOLREF], '')) AS [SolRef],
RTRIM(ISNULL(CSC.[INSCODE], '')) AS [InsCode],
ISNULL(CSC.[ASSIGNEDCONTACT], 0) AS [AssignedContact],
RTRIM(ISNULL(CAC.[NAMECODE], '')) AS [AssociateNameCode],
ISNULL(CAC.[KEYID], 0) AS [KeyId],
RTRIM(ISNULL(CAC.[NAME], '')) AS [ConName],
RTRIM(ISNULL(CAC.[PHONE], '')) AS [Phone],
RTRIM(ISNULL(CAC.[EMAIL], '')) AS [ConEmail],
RTRIM(ISNULL(AST.[CODE], '')) AS [Code],
RTRIM(ISNULL(AST.[DESCRIPTION], '')) AS [Description],
RTRIM(ISNULL(CAN.[CODE], '')) AS [ConCode],
RTRIM(ISNULL(CAN.[TYPE], '')) AS [Type],
RTRIM(ISNULL(CAN.[NAME], '')) AS [AssociateName],
RTRIM(ISNULL(CAN.[COMPANY], '')) AS [Company],
RTRIM(ISNULL(CAN.[ADDRESS], '')) AS [Address],
RTRIM(ISNULL(CAN.[PHONENO], '')) AS [PhoneNo],
RTRIM(ISNULL(CAN.[MOBILENO], '')) AS [MobileNo],
RTRIM(ISNULL(CAN.[EMAIL], '')) AS [AssociateEmail],
RTRIM(ISNULL(CAN.[SEARCH], '')) AS [Search],
ISNULL(CAN.[CONTACTNO], 0) AS [ContactNo],
RTRIM(ISNULL(CAN.[SALUTATION], '')) AS [Salutation],
ISNULL(CSC.[CONNUM], 0) AS [Seq],
CASE WHEN RTRIM(ISNULL(CAN.[COMPANY], '')) <> ''
THEN LTRIM( RTRIM(ISNULL(CAN.[NAME], ''))
+ ' ('
+ RTRIM(ISNULL(CAN.[COMPANY], ''))
+ ')')
ELSE RTRIM(ISNULL(CAN.[NAME], '')) END AS [NameCompany],
ISNULL(CSC.Retired,'N') AS [Retired]
FROM [dbo].[CaseContacts] CSC
LEFT JOIN [dbo].[CaseAssociatesContacts] CAC
ON CAC.[KEYID] = CSC.[AssignedContact]
LEFT JOIN [dbo].[AssociateTypes] AST
ON AST.[CODE] = CSC.[CONTYPE]
LEFT JOIN [dbo].[CaseAssociatesNames] CAN
ON CAN.[CODE] = CSC.[NAMECODE]
AND CAN.[NAME] <> ''
AND CAN.[NAME] <> 'N/A'
AND CAN.[NAME] IS NOT NULL
WHERE CSC.[CASECODE] = @MatterCode
AND CSC.[NAMECODE] <> ''
AND CSC.[NAMECODE] <> 'N/A'
AND CSC.[NAMECODE] IS NOT NULL) AS FoundTable
ORDER BY [CASECODE],
[CONTYPE],
[CONNUM]
SELECT
*
FROM
#FoundTable
--ChargeOut Rate Indicator
SELECT MCOR.[RecordID] AS [RecordId],
RTRIM(MCOR.[FeCode]) AS [FeCode],
ISNULL(MCOR.[Rate], 0) AS [Rate],
MCOR.[EffectiveDate] AS [EffectiveDate],
COALESCE(HAN.[Name], HCG.[Name], MCOR.[FeCode]) AS [FeeEarnerName],
CASE WHEN ISNULL(HAN.[Retired], 'N') = 'Y'
THEN ISNULL(HAN.[Retired], 'N')
ELSE ISNULL(HCG.[Retired], 'N') END AS [IsRetired]
FROM [dbo].[MatterChargeOutRates] AS MCOR
LEFT OUTER JOIN [dbo].[Handlers] AS HAN
ON HAN.[Code] = MCOR.[FeCode]
LEFT OUTER JOIN [dbo].[HandlerChargeGroups] AS HCG
ON HCG.[Code] = MCOR.[FeCode]
WHERE MCOR.[MatterCode] = @MatterCode
AND (ISNULL(HAN.[Retired], 'N') <> 'Y'
OR ISNULL(HCG.[Retired], 'N') <> 'Y')
--Linked Cases List
SELECT
LMT.[RecordId] AS [RecordId],
MAT.[Code] AS [CaseCode],
MAT.[FECode] AS [FeeEarner],
CNT.[Name] AS [Name],
MAT.[Description] AS [Description],
LMT.[RelationShip] AS [Relationship]
FROM [dbo].[LinkedMatters] LMT
INNER JOIN [dbo].[matters] MAT
ON MAT.[Code] = LMT.[LinkedMatter]
INNER JOIN [dbo].[Contacts] CNT
ON CNT.[Code] = MAT.[ClientCode]
WHERE LMT.[PrimeMatter] = @MatterCode
--Revenue Module
SELECT RTRIM(LTRIM(ISNULL(MCC.[CheckCharacter], '') )) AS [CheckCharacter],
RTRIM(LTRIM(ISNULL(MCC.[AddCheckCharacter], ''))) AS [AddCheckCharacter]
FROM [dbo].[MatterCheckChars] AS MCC
WHERE MCC.[MatterCode] = @MatterCode
--Locations
EXECUTE KAAS_ListItemLocations
--Outstanding Undertaking and Case diary
SELECT COUNT(1) OutstandingUndertaking
FROM [dbo].[Undertakings] UTS
WHERE [UTS].[Matter] = @MatterCode AND ISNULL([UTS].[DischargeDate],'') = ''
SELECT COUNT(1) OutstandingCaseDiary
FROM [dbo].[Diary] DRY
WHERE [DRY].[casecode] = @MatterCode AND ISNULL([DRY].[Status],0) = 0
--Check Matter is eligible to closed
EXEC KAAS_GetSAM_MatterClosable @MatterCode
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSAMDashboardDetails',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMDashboardDetails]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMDashboardDetails]
(
@HandlerCode VARCHAR(10)
)
AS
/*******************************************************************************************************
* This sp used to get dashboard details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMDashboardDetails] *
* *
* Modification History : *
* 2021-08-25 Natarajan S Created *
* 2021-12-22 Balamurugan C Modified - Removed Where condition for RBatch Table *
* 2022-05-09 Vignesh M Modified - Date filter added for RBatch Table *
* 2023-07-05 Aakif Modified - Replaced 'Count(*)' with 'Count(1) *
* 2024-01-17 Balamurugan.C Modified - Added Queries for Debtors,Unallocated Payments, *
Unallocated Receipts,Debit Client A/c's,Office Credit A/c's *
Draft Invoice Approval,Payment awaiting approval *
* 2024-01-19 Balamurugan.C Added logic to fetch recent matter details *
* 2024-10-17 Balamurugan.C Added logic to fetch memorised transaction over due *
and upcoming count *
*******************************************************************************************************/
BEGIN
-- Matter Count Details
SELECT CASE Closed
WHEN 'N'
THEN 'Opened'
ELSE 'Closed' END AS [MatterState],
COUNT(1) AS [CountValue]
FROM [dbo].[matters]
GROUP BY [Closed]
SELECT COUNT(1) AS Posted
FROM batchh
where posted = 'N'
--Unposted Batches Details
SELECT [BatchNo],
[Type],
[Ref],
[Date],
[Value],
[Narr]
FROM [dbo].[BatchH]
WHERE [Posted] = 'N'
ORDER BY [Posted] ASC,
[EntryDate] ASC
--Memoried Details
SELECT ROW_NUMBER() OVER ( ORDER BY Date ) OrderValue,
[BatchNo],
[Type],
[Date],
[Code],
[Value],
[Supp],
[Matter],
[Narr]
FROM [dbo].RBatchH A
WHERE [DATE] <= CAST(GETDATE() AS DATE)
ORDER BY [Date] ASC,
[BatchNo] ASC
--Event Details
SELECT [Date],
[User],
[Event],
[RecordID]
FROM [dbo].[Log]
ORDER BY [RecordID] ASC
--Open Matters
DECLARE @HowMany INT;
SET @HowMany = (SELECT COUNT(1) FROM [dbo].[matters] WHERE [Closed] = 'N');
DECLARE @Handler VARCHAR(20) = 'MK';
DECLARE @XmlString NVARCHAR(MAX);
SET @XmlString = '';
EXEC [dbo].[KAAS_OffsetGetOpenMatterDetails] @XmlString, 1, @HowMany, '', '','','','Dashboard';
--Closed Matter
SELECT [UniqueId] [OrderValue],
[Code],
[Matter],
[Description],
[FECode],
[Dept]
FROM [dbo].[matters]
WHERE [Closed]='Y'
--Common Details
SELECT [Name] [DBName],
[CurPer],
[Year],
dbo.KAAS_FN_GetDateFromClarion (PERIODEND) AS PeriodEnd,
dbo.KAAS_FN_GetDateFromClarion (LASTRECDATE) AS LastRecDate
FROM [dbo].[control]
-- Sum of outstanding debt
SELECT SUM([DTL].[OSVALUE]) AS [Debtors]
FROM [dbo].[DebtorsLedger] AS [DTL]
-- Details of outstanding debt
SELECT ISNULL([DTL].[MATTER], '') AS [Matter],
[DTL].[DATE] AS [Date],
ISNULL([DTL].[REF], '') AS [Ref],
ISNULL([DTL].[NARR], '') AS [Narr],
ISNULL([DTL].[ORIGINAL], 0) AS [Amount],
ISNULL([DTL].[OSVALUE], 0) AS [AmountOS],
ISNULL([DTL].[BATCHNO], 0) AS [BatchNo],
ISNULL([DTL].[PREF], 0) AS [PRef]
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[OSVALUE] <> 0
-- Count of unallocated payments
SELECT COUNT(1) AS [Unallocated Payments]
FROM [dbo].[SupplierLedger] AS [SPL]
WHERE [SPL].[TYPE] = 'P'
AND [SPL].[OSVALUE] <> 0
-- Details of unallocated payments
SELECT COALESCE([SUP].[NAME], [SPL].[SUPP], '') AS [Supp],
[SPL].[DATE] AS [Date],
ISNULL([SPL].[REF], '') AS [Ref],
ISNULL([SPL].[NARR], '') AS [Narr],
ISNULL([SPL].[ORIGINAL], 0) AS [Original],
ISNULL([SPL].[OSVALUE], 0) AS [OSValue],
ISNULL([SPL].[SUPP], '') AS [SupplierCode],
ISNULL([SPL].[BATCHNO], 0) AS [BatchNo],
ISNULL([SPL].[PREF], 0) AS [PRef]
FROM [dbo].[SupplierLedger] AS [SPL]
LEFT OUTER JOIN [dbo].[Suppliers] AS [SUP]
ON [SPL].[SUPP] = [SUP].[CODE]
WHERE [SPL].[TYPE] = 'P'
AND [SPL].[OSVALUE] <> 0
-- Count of unallocated receipts
SELECT COUNT(1) AS [Unallocated Receipts]
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[TYPE] = 'R'
AND [DTL].[OSVALUE] <> 0
-- Details of unallocated receipts
SELECT COALESCE([CNT].[Name], [MAT].[ClientCode], '') AS [Client],
ISNULL([MAT].[ClientCode], '') AS [ClientCode],
[DTL].[DATE] AS [Date],
ISNULL([DTL].[REF], '') AS [Ref],
ISNULL([DTL].[BATCHNO], 0) AS [BatchNo],
ISNULL([DTL].[PREF], 0) AS [PRef],
ISNULL([DTL].[NARR], '') AS [Narr],
ISNULL([DTL].[ORIGINAL], 0) AS [Original],
ISNULL([DTL].[OSVALUE], 0) AS [OSValue]
FROM [dbo].[DebtorsLedger] AS [DTL]
LEFT OUTER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [DTL].[MATTER]
LEFT OUTER JOIN [dbo].[Contacts] AS [CNT]
ON [CNT].[Code] = [MAT].[ClientCode]
WHERE [DTL].[TYPE] = 'R'
AND [DTL].[OSVALUE] <> 0
-- count matters with client debit balances
SELECT COUNT(1) AS [ClientDebitAccounts]
FROM (
SELECT [MAT].[Code], ISNULL(SUM([MTL].[VALUEC]), 0) AS [ClientBalance]
FROM [dbo].[matters] AS [MAT]
INNER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MTL].[MATTER] = [MAT].[Code]
GROUP BY [MAT].[Code]
HAVING ISNULL(SUM([MTL].[VALUEC]), 0) > 0) AS [DCA]
-- list matters with client debit balances
;WITH [ClientDebitAccounts] ([Code], [ClientBalance]) AS (
SELECT [MAT].[Code], ISNULL(SUM([MTL].[VALUEC]), 0) AS [ClientBalance]
FROM [dbo].[matters] AS [MAT]
INNER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MTL].[MATTER] = [MAT].[Code]
GROUP BY [MAT].[Code]
HAVING ISNULL(SUM([MTL].[VALUEC]), 0) > 0)
SELECT COALESCE([CNT].[Name], [MAT].[ClientCode], '') AS [Client],
ISNULL([MAT].[ClientCode], '') AS [ClientCode],
[CDA].[Code] AS [Matter],
ISNULL([MAT].[Description], '') AS [MatterDescription],
[CDA].[ClientBalance]
FROM [ClientDebitAccounts] AS [CDA]
LEFT OUTER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [CDA].[Code]
LEFT OUTER JOIN [dbo].[Contacts] AS [CNT]
ON [CNT].[COde] = [MAT].[ClientCode]
-- count matters with office credit balance
SELECT COUNT(1) AS [OfficeCreditBalances]
FROM (
SELECT [MAT].[Code],
ISNULL(SUM(ISNULL([MTL].[VALUED], 0) + ISNULL([MTL].[VALUEO], 0)), 0) AS [OfficeBalance]
FROM [dbo].[matters] AS [MAT]
INNER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MAT].[Code] = [MTL].[MATTER]
GROUP BY [MAT].[Code]
HAVING ISNULL(SUM(ISNULL([MTL].[VALUED], 0) + ISNULL([MTL].[VALUEO], 0)), 0) < 0) AS [OCB]
-- list matters with office credit balances
;WITH [OfficeCreditAccounts] ([Code], [OfficeBalance]) AS (
SELECT [MAT].[Code],
ISNULL(SUM(ISNULL([MTL].[VALUED], 0) + ISNULL([MTL].[VALUEO], 0)), 0) AS [OfficeBalance]
FROM [dbo].[matters] AS [MAT]
INNER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MAT].[Code] = [MTL].[MATTER]
GROUP BY [MAT].[Code]
HAVING ISNULL(SUM(ISNULL([MTL].[VALUED], 0) + ISNULL([MTL].[VALUEO], 0)), 0) < 0)
SELECT COALESCE([CNT].[Name], [MAT].[ClientCode], '') AS [Client],
ISNULL([MAT].[ClientCode], '') AS [ClientCode],
[OCA].[Code] AS [Matter],
ISNULL([MAT].[Description], '') AS [MatterDescription],
[OCA].[OfficeBalance]
FROM [OfficeCreditAccounts] AS [OCA]
LEFT OUTER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [OCA].[Code]
LEFT OUTER JOIN [dbo].[Contacts] AS [CNT]
ON [CNT].[COde] = [MAT].[ClientCode]
-- Draft invoices awaiting approval
SELECT COUNT(1) AS [DraftInvoicesAwaitingApproval]
FROM [dbo].[BillHeader] AS [BH]
WHERE [BH].[BILLNO] = 0
AND [BH].[RELEASED] = 'Y'
-- Detail of Draft invoices awaiting approval
SELECT ISNULL([BH].[MATTER], '') AS [Matter],
[BH].[DRAFTNO] AS [DraftNo],
[BH].[DATE] AS [Date],
[BH].[ADDRESSEE] AS [Addressee],
ISNULL([BH].[TOTAL], 0) AS [Total],
ISNULL([BH].[FEES], 0) AS [Fees],
ISNULL([BH].[OUTLAY], 0) AS [Outlay],
ISNULL([BH].[TOTALVAT], 0) AS [VAT]
FROM [dbo].[BillHeader] AS [BH]
WHERE [BH].[BILLNO] = 0
AND [BH].[RELEASED] = 'Y'
-- Payments awaiting approval
SELECT COUNT(1) AS [PaymentsAwaitingApproval]
FROM [dbo].[ChequeRequisitionHeader] AS [CRH]
WHERE ISNULL([CRH].[STATUS], 0) = 1
-- Detail of Payments awaiting approval
SELECT [CRH].[REQNO] AS [ReqNo],
[CRH].[DATE] AS [Date],
COALESCE([NOM].[DESC], [CRH].[BANK], '') AS [Bank],
ISNULL([CRH].[PAYEE], '') AS [Payee],
ISNULL([CRH].[NARRATIVE], '') AS [Narr],
ISNULL([CRH].[VALUE], 0) AS [Value]
FROM [dbo].[ChequeRequisitionHeader] AS [CRH]
LEFT OUTER JOIN [dbo].[Nominal] AS [NOM]
ON [NOM].[CODE] = [CRH].[BANK]
WHERE ISNULL([CRH].[STATUS], 0) = 1
--WHERE [CRH].[STATUS] = 1
--Memorized Transaction --> Pending and Due Count
SELECT COUNT(*) 'MemorizedPendingCount'
FROM [dbo].[RBatchH] [BAT]
WHERE
(
[BAT].[DATE] BETWEEN DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) AND DATEADD(DAY, 7, GETDATE())
)
OR [BAT].[DATE] < DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
END
GO
IF OBJECT_ID(N'KAAS_GetSamDebtLodgeClientList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamDebtLodgeClientList]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSamDebtLodgeClientList]
AS
/*******************************************************************************************************
* Get Debt Lodgement Client List *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamDebtLodgeClientList] *
* *
* Modification History: *
* 2021-10-04 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
SELECT [CONT].[CODE] AS [Code],
[CONT].[NAME] AS [Name],
[CONT].[ADDRESS] AS [Address],
[CONT].[FE] AS [FE],
[CONT].[CLIENT] AS [Client],
[CONT].[CLIENTGROUP] AS [ClientGroup],
[CONT].[OTHERREF] AS [OtherRef],
[CONT].[OPSISREF] AS [OpSisRef],
[CONT].[CONTACTNO] AS [ContactNo],
[CONT].[COMPBILLONOFF] AS [CompBillOnOff],
[CONT].[TAXTYPE] AS [TaxType]
FROM [dbo].[contacts] [CONT]
WHERE [CONT].[CLIENT] = 'Y'
ORDER BY [CONT].[CODE] ASC
END
GO
IF OBJECT_ID(N'KAAS_GetSamDebtLodgementList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamDebtLodgementList]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSamDebtLodgementList]
(@MatterCode VARCHAR(20) = '')
AS
/*******************************************************************************************************
* Get Debt Lodgement List *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamDebtLodgementList] *
* *
* Modification History: *
* 2021-10-04 Vinodhkumar M Created *
* 2021-10-13 Vinodhkumar M Modified - Payment method parameter is removed and *
MatterDescription,Branch is added *
*******************************************************************************************************/
BEGIN
SELECT [DEBT].[MATTERCODE] AS [MatterCode],
[DEBT].[DATE] AS [Date],
[DEBT].[REFERENCE] AS [Reference],
[DEBT].[DESCRIPTION] AS [Description],
[DEBT].[TYPE] AS [Type],
[DEBT].[VALUE] AS [Value],
[DEBT].[INTEREST] AS [Interest],
[DEBT].[REMITTANCENO] AS [RemittanceNo],
[DEBT].[POSTINGREF] AS [PostingRef],
[DEBT].[PAYMENTMETHOD] AS [PaymentMethod],
[DEBT].[EFFECTIVEDATE] AS [EffectiveDate],
[MAT].[Description] AS [MatterDescription],
[MAT].[Branch] AS [Branch]
FROM [dbo].[DebtCostingLedger] [DEBT]
LEFT JOIN [dbo].[matters] [MAT] ON [MAT].[Code] = [DEBT].[MATTERCODE]
WHERE [DEBT].[xnid] = -1
AND [DEBT].[Type] = 'Receipt'
AND [DEBT].[MatterCode] Like (@MatterCode+'%')
ORDER BY [DEBT].[POSTINGREF] DESC
END
GO
IF OBJECT_ID(N'KAAS_GetSamDeleteDebtLodgement',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamDeleteDebtLodgement]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSamDeleteDebtLodgement]
(
@PostingRef INT = 0
)
AS
/*******************************************************************************************************
* Delete Debt Lodgement *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamDeleteDebtLodgement] *
* *
* Modification History: *
* 2021-10-01 Vinodhkumar M Created *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
UPDATE [dbo].[DebtCostingLedger]
SET XnId = 0
WHERE POSTINGREF = @PostingRef
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSAMDraftBillsList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMDraftBillsList]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMDraftBillsList]
(
@FilterMode VARCHAR(20) = ''
)
AS
/*******************************************************************************************************
* Get Draft bills List *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMDraftBillsList] *
* *
* Modification History: *
* 2021-09-10 Vinodhkumar M Created *
* 2021-09-16 Vinodhkumar M Modifed - Added columns *
* 2021-10-27 Balamurugan C Modifed - Added Description,FeCode Column and *
added where conditions *
* 2022-04-12 Vignesh M Modifed - Unused Parameters are removed *
* 2024-05-07 Balamurugan C Modified - Data based on grid filters *
*******************************************************************************************************/
BEGIN
SELECT [BH].[MATTER] AS [Matter],
[BH].[DRAFTNO] AS [DraftNo],
[BH].[DATE] AS [Date],
[BH].[USER] AS [User],
RTRIM([BH].[ADDRESSEE]) AS [Address],
[BH].[INVCR] AS [Invcr],
[BH].[BILLNO] AS [BillNo],
[BH].[TOTAL] AS [Total],
[BH].[FEES] AS [Fees],
[BH].[OUTLAY] AS [Outlay],
[BH].[TOTALVAT] AS [TotalVat],
[BH].[RELEASED] AS [Released],
[BH].[ACTIONID] AS [ActionId],
[BH].[OPENINVOICE] AS [OpenInvoice],
[BH].[BATCHNO] AS [BatchNo],
[BH].[OURREF] AS [OurRef],
[BH].[YOURREF] AS [YourRef],
[BH].[BillSent] AS [BillSent],
[BH].[TRANSFER] AS [TransferPay],
[BH].[FEMISCTOTAL] AS [FeMiscTotal],
[BH].[WRITEDOWN] AS [WriteDownDate],
RTRIM([BH].[RETURNREASON]) AS [Message],
RTRIM([BH].[MATTERDESCRIPTION]) AS [Description],
[BH].[FeCode] AS [FECode]
FROM [dbo].[BillHeader] [BH]
WHERE
(
(@FilterMode = 'Released' AND [BH].[RELEASED] = 'Y' AND ([BH].[BILLNO] = 0 OR [BH].[BILLNO] IS NULL))
OR
(@FilterMode = 'Draft' AND ([BH].[RELEASED] <> 'Y' OR [BH].[RELEASED] IS NULL) AND ([BH].[BILLNO] = 0 OR [BH].[BILLNO] IS NULL))
OR
(@FilterMode = 'Approved' AND [BH].[BILLNO] <> 0)
OR
(@FilterMode NOT IN ('Released', 'Draft', 'Approved'))
)
ORDER BY [BH].[DRAFTNO] DESC
END
GO
IF OBJECT_ID(N'KAAS_GetSAMFeeEarnerCodes',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMFeeEarnerCodes]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMFeeEarnerCodes]
AS
/*******************************************************************************************************
* [dbo].[KAAS_GetSAMFeeEarnerCodes] *
* Description: Get basic details to insert into diary information. *
* Modification History: *
* 2021-04-10 Natarajan S Created *
* 2021-08-26 Vinodhkumar M Modified - Branch is added *
* 2022-01-10 Balamurugan C Modified - Nominal Details Added *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [Code],
[Name],
[Branch],
[Nominal]
FROM [dbo].[FeeEarnerCodes] [FEE]
WHERE [FEE].[Retired] <> 'Y'
ORDER BY [FEE].[Code] ASC
SELECT [RECORDID] AS [RecordId],
[STATUSDESC] AS [Status]
FROM [dbo].[UndertakingStatus]
ORDER BY [STATUSDESC] ASC
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMFNLDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].KAAS_GetSAMFNLDetails
END
go
CREATE PROCEDURE [dbo].KAAS_GetSAMFNLDetails (@MatterCode VARCHAR(20))
AS
/*******************************************************************************************************
* *
*Used to Get FNL Details *
* Stored Procedure Name: [dbo].KAAS_GetSAMFNLDetails '000001/0000' *
* Modification History: *
* 2021-03-30 Natarajan S Created *
* 2021-07-28 Vinodhkumar M Added null check for FNL Date *
*******************************************************************************************************/
BEGIN
SELECT
OM.[Code] as [Code],
C.[Code] as [ClientCode],
C.[Name] as [ClientName],
OM.[Matter] AS [MatterCode],
OM.[Description] as [MatterName],
C.[Address] AS [ClientAddress],
OM.[FECode] AS [FECode],
ISNULL(OM.[FNL_DATE],GETUTCDATE()) AS [FNLDate],
OM.[FNL_NAME] AS [FNLName],
OM.[FNL_ADDRESS] AS [FNLAddress],
OM.[FNL_FEES] AS [FNLFees],
OM.[FNL_OUTLAY] AS [FNLOutlay],
OM.[FNL_VAT] AS [FNLVat],
OM.[FNL_TOTAL] AS [FNLTotal]
FROM
dbo.OpenMattersONLY OM
INNER JOIN Contacts C ON OM.ClientCode = C.Code
WHERE
OM.CODE = @MatterCode
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMHeaderDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].KAAS_GetSAMHeaderDetails
END
go
CREATE PROCEDURE [dbo].KAAS_GetSAMHeaderDetails (@MatterCode VARCHAR(20))
AS
/*******************************************************************************************************
* *
*Used to list the matter ledger *
* Stored Procedure Name: [dbo].KAAS_GetSAMHeaderDetails '000001/0000' *
* Modification History: *
* 2021-03-30 Natarajan S Created *
*******************************************************************************************************/
BEGIN
select
OM.[Code] as [Code],
C.[Code] as [ClientCode],
C.[Name] as [ClientName],
OM.[Matter] AS [MatterCode],
OM.[Description] as [MatterName]
FROM
dbo.OpenMattersONLY OM
INNER JOIN Contacts C ON OM.ClientCode = C.Code
WHERE
OM.CODE = @MatterCode
END
go
IF OBJECT_ID(N'KAAS_GetSAMInsertBillDesc',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMInsertBillDesc]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMInsertBillDesc]
(
@Desc VARCHAR(MAX) = '',
@Search CHAR(20) = '',
@Retired VARCHAR(1) = ''
)
AS
/*******************************************************************************************************
* Insert Bill Description *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMInsertBillDesc] *
* *
* Modification History: *
* 2021-09-17 Vinodhkumar M Created *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRANSACTION
INSERT
INTO [dbo].[BillDescriptions]
( [BILLDESCRIPTIONS],
[SEARCHFIELD],
[Retired]
)
VALUES
( @Desc,
@Search,
@Retired
)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS
(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KAAS_GetSAMJournalBatches]') AND type in (N'P', N'PC'))
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMJournalBatches]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMJournalBatches]
AS
/*******************************************************************************************************
* Fetches the journal batch details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMJournalBatches] *
* *
* Modification History: *
* 2021-05-10 Revathy D Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
BAH.[BATCHNO] AS [BatchNo],
BAH.[TYPE] AS [Type],
BAH.[CODE] AS [Code],
BAH.[REF] AS [Ref],
BAH.[DATE] AS [Date],
BAH.[MATTER] AS [Matter],
BAH.[SUPP] AS [Supp],
BAH.[NARR] AS [Narr],
BAH.[POSTED] AS [Posted],
BAH.[CLIENTAC] AS [ClientAc],
BAH.[PERNO] AS [PerNo],
BAH.[YEAR] AS [Year],
BAH.[ENTRYDATE] AS [EntryDate],
BAH.[RECNO] AS [RecNo],
BAH.[CHEQUEREQNO] AS [ChequeReqNo]
FROM dbo.BatchH BAH
WHERE (
BAH.[TYPE] = 'J'
AND BAH.[POSTED] = 'N'
)
ORDER BY
BAH.[POSTED] ASC,
BAH.[ENTRYDATE] ASC
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMMatterLedger'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMMatterLedger]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMMatterLedger]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'Date',
@SortOrder VARCHAR(100) = 'ASC',
@MatterCode VARCHAR(20)
)
AS
/*******************************************************************************************************
* *
*Used to list the matter ledger *
* Stored Procedure Name: [dbo].[KAAS_GetSAMMatterLedger] 'KEY001/0001' *
* Modification History: *
* 2021-03-11 Natarajan S Created *
* 2021-03-11 Prabhu V Modified -- Added BatchH table in left join to verify the type of Batch*
* 2021-03-11 Prabhu V Modified -- Handling Row color from UI instead of fetching value *
using like search in BD script *
* 2021-05-19 Prabhu V Modified -- Fetching ValueO as Outlay for matter Ledger page *
* 2021-07-08 Natarajan S Modified -- Formatting Added. *
* 2021-11-25 Vinodhkumar M Modified -- Balance Query and Cleared Balance Query added *
* 2022-03-02 Vignesh.M Modified -- Cleared Date column added
* 2022-07-18 Ghayathri.S.V Modified -- Modified to implement dynamic sql query to fetch sort
and search datas *
* 2024-01-31 Revathy.D Modified -- Included Office and client balance *
* 2024-06-19 Revathy.D Modified -- Included IsDormantClientBalReason *
*******************************************************************************************************/
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET NOCOUNT ON
SET @sql = 'SELECT [MTL].[Matter] AS [Matter],
[MTL].[BatchNo] AS [BatchNo],
[MTL].[PRef] AS [PRef],
[MTL].[Date] AS [Date],
[MTL].[Ref] AS [Ref],
[MTL].[Narr] AS [Narr],
[MTL].[ValueD] AS [ValueD],
[MTL].[ValueO] AS [Outlay],
[MTL].[Fee] AS [Fee],
[MTL].[EntryDate] AS [EntryDate],
[MTL].[Client] AS [Client],
[MTL].[ValueCC] AS [ValueCC],
[MTL].[ValueCD] AS [ValueCD],
[MTL].[LRef] AS [LRef],
[MTL].[Billed] AS [Billed],
[MAT].[Undertaking] AS [Undertaking],
[BTH].[Type] AS [Type],
[MTL].[ClearedDate] AS [ClearedDate],
[MTL].[IsDormantClientBalReason] AS [IsDormantClientBalReason]
FROM [dbo].[MatterLedger] [MTL]
INNER JOIN [dbo].[Matters] [MAT]
ON [MTL].[Matter] = [MAT].[Code]
LEFT JOIN [dbo].[BatchH] [BTH]
ON [MTL].[BatchNo] = [BTH].[BatchNo]
WHERE [MTL].[Matter] = ''' + @MatterCode + '''' +
'AND (
[MTL].[Matter] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[MTL].[Date] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[MTL].[Ref] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[MTL].[Narr] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[MTL].[PRef] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[MTL].[BatchNo] LIKE ' + '''%' + @SearchString + '%' + '''' +
')
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
SELECT COUNT(*) 'TotalRecord'
FROM [dbo].[MatterLedger] [MTL]
INNER JOIN [dbo].[Matters] [MAT]
ON [MTL].[Matter] = [MAT].[Code]
LEFT JOIN [dbo].[BatchH] [BTH]
ON [MTL].[BatchNo] = [BTH].[BatchNo]
WHERE [MTL].[Matter] = @MatterCode
AND (
[MTL].[Matter] LIKE '%' + @SearchString + '%'
OR
[MTL].[Date] LIKE '%' + @SearchString + '%'
OR
[MTL].[Ref] LIKE '%' + @SearchString + '%'
OR
[MTL].[Narr] LIKE '%' + @SearchString + '%'
OR
[MTL].[PRef] LIKE '%' + @SearchString + '%'
OR
[MTL].[BatchNo] LIKE '%' + @SearchString + '%'
)
SELECT [CLIENTMIN]
FROM [dbo].[OpenMattersOnly]
WHERE [Code] = @MatterCode
SELECT ISNULL(SUM([MTL].[ValueD]),0) AS [DebtorBalance],
ISNULL(SUM([MTL].[ValueO]),0) AS [OutlayBalance],
ISNULL(SUM([MTL].[ValueC]),0) AS [ClientBalance],
ISNULL(SUM([MTL].[ValueCC]),0) AS [ClientCurrentBalance],
ISNULL(SUM([MTL].[ValueCD]),0) AS [ClientDeptBalance],
(ISNULL(SUM([MTL].[ValueD]),0) +
ISNULL(SUM([MTL].[ValueO]),0)) AS [OfficeBalance]
FROM [dbo].[Matters] [MAT]
LEFT OUTER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MAT].Code = MTL.Matter
GROUP BY [Mat].[Code]
HAVING [MAT].[Code] = @MatterCode
SELECT SUM(ISNULL([MTL].[VALUED], 0)) AS [DebtorClearedBalance],
SUM(ISNULL([MTL].[VALUEO], 0)) AS [OutlayClearedBalance],
SUM(ISNULL([MTL].[VALUECC], 0)) AS [ClientCurrentClearedBalance],
SUM(ISNULL([MTL].[VALUECD], 0)) AS [ClientDepositClearedBalance]
FROM [dbo].[matters] AS [MAT]
LEFT OUTER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MAT].[Code] = [MTL].[MATTER]
AND ISNULL([MTL].[ClearedDate], [MTL].[DATE]) <= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
WHERE [MAT].[Code] = @MatterCode
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMMatterLedgerComment'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMMatterLedgerComment]
END
go
CREATE PROCEDURE [dbo].[KAAS_GetSAMMatterLedgerComment] (@MatterCode VARCHAR(20))
AS
/*******************************************************************************************************
* *
*Used to list the matter ledger *
* Stored Procedure Name: [dbo].[KAAS_GetSAMMatterLedgerComment] 'KEY001/0001' *
* Modification History: *
* 2021-03-11 Natarajan S Created *
* 2022-03-07 Vignesh.M Modified Narrative changed *
*******************************************************************************************************/
BEGIN
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[MatterLedger] AS [MTL]
WHERE [MTL].[MATTER] = @MatterCode
AND [MTL].[BATCHNO] = 0
AND [MTL].[NARR] LIKE 'RESERVE%'
AND [MTL].[PREF] = 0)
BEGIN
SELECT [NARR]
FROM [dbo].[MatterLedger] AS [MTL]
WHERE [MTL].[MATTER] = @MatterCode
AND [MTL].[BATCHNO] = 0
AND [MTL].[NARR] LIKE 'RESERVE%'
AND [MTL].[PREF] = 0
ORDER BY [MTL].[DATE] DESC
END
ELSE
BEGIN
SELECT '' [NARR]
END
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMMattersWithPossibleOutlayTransfers'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMMattersWithPossibleOutlayTransfers]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMMattersWithPossibleOutlayTransfers]
AS
/*******************************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMMattersWithPossibleOutlayTransfers] *
* Description: To Fetch Matters with possible outlay Transfers *
* *
* Modification History: *
* 2021-09-30 Balamurugan Created *
*******************************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [MAT].[Code] AS [Matter],
[CON].[Name],
[MAT].[Description],
[MAT].[DebtBal],
[MAT].[OutlayBal],
[MAT].[ClientBal],
0 AS [TransferValue],
[MAT].[Branch]
FROM [dbo].Matters [MAT] WITH (NOLOCK)
LEFT OUTER JOIN [dbo].[Contacts] [CON] WITH (NOLOCK)
ON [MAT].[ClientCode] = [CON].[Code]
WHERE [MAT].[OutlayBal] < 0 AND
[MAT].[OutlayBal] + [MAT].[DebtBal] >= 0
ORDER BY [MAT].[Code] ASC
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSamMemorizeTransList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamMemorizeTransList]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSamMemorizeTransList]
(
@Mode VARCHAR(20) = 'ALL'
)
AS
/*******************************************************************************************************
* Get Memorize Transaction List *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamMemorizeTransList] *
* *
* Modification History: *
* 2021-09-28 Vinodhkumar M Created *
* 2021-09-28 Vinodhkumar M Modified - Added row number *
* 2024-10-17 Balamurugan C Modified - Added mode to get all and due transactions *
*******************************************************************************************************/
BEGIN
SELECT ROW_NUMBER() OVER(ORDER BY [BAT].[BATCHNO] DESC) AS [Id],
[BAT].[BATCHNO] AS [BatchNo],
[BAT].[TYPE] AS [Type],
[BAT].[CODE] AS [Code],
[BAT].[DATE] AS [Date],
[BAT].[MATTER] AS [Matter],
[BAT].[SUPP] AS [Supp],
[BAT].[NARR] AS [Narr],
[BAT].[VALUE] AS [Value]
FROM [dbo].[RBatchH] [BAT]
WHERE
(@Mode = 'ALL')
OR
(
@Mode = 'DUE'
AND
(
[BAT].[DATE] BETWEEN DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) AND DATEADD(DAY, 7, GETDATE())
OR [BAT].[DATE] < DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
)
)
ORDER BY
[BAT].[DATE] ASC,
[BAT].[BATCHNO] DESC;
END
GO
IF OBJECT_ID(N'KAAS_GetSamMoveMatterList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamMoveMatterList]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSamMoveMatterList]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'CODE',
@SortOrder VARCHAR(100) = 'ASC'
)
AS
/*******************************************************************************************************
* Get move matter List *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamMoveMatterList] *
* *
* Modification History: *
* 2021-09-27 Vinodhkumar M Created
* 2022-07-22 Ghayathri.S.V Modified - To implement dynamic sql query to fetch scroll,sort
and search datas *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql ='SELECT [MAT].CODE AS [Code],
[MAT].CLIENTCODE AS [ClientCode],
[MAT].DESCRIPTION AS [Description],
[MAT].FECODE AS [FeCode],
[MAT].DEPT AS [Dept],
[MAT].WTYPE AS [WType],
[MAT].BRANCH AS [Branch],
[MAT].COMMENT AS [Comment],
[MAT].DEBTBAL AS [DebtBal],
[MAT].OUTLAYBAL AS [OutlayBal],
[MAT].CLIENTBAL AS [ClientBal],
[MAT].FILENUM AS [FileNum],
[MAT].THIRDPART AS [ThirdParty],
[MAT].THPARTSOL AS [ThirdSol],
[MAT].OLDREF AS [OldRef],
[MAT].PCODE AS [Pcode],
[MAT].PFECODE AS [PFeCode],
[MAT].USER1 AS [User1],
[MAT].USER2 AS [User2],
[MAT].USER3 AS [User3],
[MAT].FILECOLOUR AS [FileColour],
[MAT].OUTFILENO AS [OutFileNo],
[MAT].CLOSED AS [Closed],
[CON].NAME AS [Name],
[CON].FE AS [FE],
[CON].CLIENT AS [Client],
[CON].CLIENTGROUP AS [ClientGroup],
[CON].OTHERREF AS [OtherRef],
[CON].OPSISREF AS [OpSisRef],
[CON].CONTACTNO AS [ContactNo],
[CON].COMPBILLONOFF AS [CompBillOnOff],
[CON].TAXTYPE AS [TaxType]
FROM [dbo].[Matters] [MAT]
LEFT OUTER JOIN [dbo].[Contacts] [CON] ON [MAT].[CLIENTCODE]= [CON].[CODE]
WHERE [MAT].CLOSED <> ''Y''' +
'AND (
[MAT].CODE LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[MAT].DESCRIPTION LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[MAT].FECODE LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[CON].NAME LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[MAT].COMMENT LIKE ' + '''%' + @SearchString + '%' + '''' +
')
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
SELECT COUNT(*) 'TotalRecord'
FROM [dbo].[Matters] [MAT]
LEFT OUTER JOIN [dbo].[Contacts] [CON] ON [MAT].[CLIENTCODE]= [CON].[CODE]
WHERE [MAT].CLOSED <> 'Y'
AND (
[MAT].[CODE] LIKE '%' + @SearchString + '%'
OR
[MAT].[DESCRIPTION] LIKE '%' + @SearchString + '%'
OR
[MAT].[FECODE] LIKE '%' + @SearchString + '%'
OR
[CON].[NAME] LIKE '%' + @SearchString + '%'
OR
[MAT].[COMMENT] LIKE '%' + @SearchString + '%'
)
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMMultipleChequeGridDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMMultipleChequeGridDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMMultipleChequeGridDetails]
(
@handlerCode VARCHAR(10) = NULL
)
AS
/*******************************************************************************************************************
* *
* Stored Procedure Name : [dbo].[[AAS_GetSAMMultipleChequeGridDetails] *
* Description: To Get Multiple Cheque Grid Details *
* *
* Modification History: *
* 2021-08-16 Balamurugan Created *
* 2021-08-19 Balamurugan Modified -Added UTC Conversion for Date and Entry Date *
*******************************************************************************************************************/
BEGIN
SELECT [BAT].[BATCHNO] AS [BatchNo],
[BAT].[TYPE] AS [Type],
[BAT].[CODE] AS [Code],
[BAT].[REF] AS [Ref],
[dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone]([BAT].[Date], @handlerCode) AS [Date],
[BAT].[MATTER] AS [Matter],
[BAT].[SUBTOT] AS [SubTotal],
[BAT].[SUPP] AS [Supp],
[BAT].[NARR] AS [Narr],
[BAT].[VALUE] AS [Value],
[BAT].[POSTED] AS [Posted],
[BAT].[PERNO] AS [PerNo],
[BAT].[YEAR] AS [Year],
[dbo].[KEYHM_FNConvertUTCDateToTargetTimeZone]([BAT].[ENTRYDATE], @handlerCode) AS [EntryDate],
[BAT].[RECNO] AS [RecNo],
[BAT].[USERCODE] AS [UserCode],
[BAT].[CLIENTBANK] AS [ClientBank],
[BAT].[CHEQUEREQNO] AS [ChequeReqNo]
FROM [dbo].[BatchH] [BAT]
WHERE [BAT].[TYPE] = 'M'
END
GO
IF OBJECT_ID(N'KAAS_GetSAMPendingClientACDetails',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMPendingClientACDetails]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMPendingClientACDetails]
(
@MatterCode VARCHAR(20)
)
AS
/*******************************************************************************************************
* [dbo].[KAAS_GetSAMPendingClientACDetails] '000001/0000' *
* Description: Used to list the matter ledger *
* Modification History: *
* 2021-04-09 Natarajan S Created *
* 2021-04-09 Arun V Implemented coding standards *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
[BAD].[KEYID] AS [PRef],
[BAD].[REF] AS [Ref],
[BAD].[DATE] AS [Date],
[BAD].[NARR] AS [Narr],
[BAD].[VALUE] AS [ValueC],
[BAD].[BATCHNO] AS [BatchNo]
FROM
[dbo].[BatchDetails] [BAD]
LEFT OUTER JOIN [dbo].[BatchH] [BAH]
ON [BAD].[BATCHNO] = [BAH].[BATCHNO]
WHERE
([BAD].[MATTER] = @MatterCode AND
[BAH].[POSTED] = 'N' AND
( [BAD].[OUTLAY] = 'C' OR
[BAD].[TYPE] = 'R' AND
[BAH].[THIRDPARTY] = 'Y' OR
[BAD].[TYPE] = 'T' AND
[BAH].[CLIENTAC] = 'Y')
)
ORDER BY
[BAD].[MATTER] ASC,
[BAD].[KEYID] ASC
SELECT
SUM([VALUECC]) AS [ClientAccountTotal]
FROM
[dbo].[MatterLedger]
WHERE
[MATTER] = @MatterCode
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMPostedBatches'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMPostedBatches]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMPostedBatches]
(
@PageNumber INT,
@PageSize INT,
@Type VARCHAR(10) = '',
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'BATCHNO',
@SortOrder VARCHAR(100) = 'ASC'
)
AS
/*******************************************************************************************************
* Fetches the posted batches *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMPostedBatches] *
* *
* Modification History: *
* 19 Oct 2021 Ghayathri.S.V Created *
* 06 Nov 2023 Ghayathri.S.V Modified to add date column in search parameter *
* 25 Mar 2024 Vignesh M Modified - Date filter is added *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @sql NVARCHAR(max)
DECLARE @SelectClause NVARCHAR(max)
DECLARE @ConditionalClause NVARCHAR(max)
DECLARE @SearchText NVARCHAR(max)
DECLARE @OrderByClause NVARCHAR(max)
DECLARE @TotalRecord NVARCHAR(max)
DECLARE @offset INT = @PageSize * (@PageNumber -1)
DECLARE @isDateFilter NVARCHAR(max) = '0'
DECLARE @Day NVARCHAR(max) = '00'
DECLARE @Month NVARCHAR(max) = '00'
DECLARE @Year NVARCHAR(max) = '1900'
DECLARE @DateFilter NVARCHAR(max) = ''
SET @DateFilter = [dbo].[KAAS_FN_DateFilter](@SearchString)
IF @DateFilter != ''
BEGIN
SET @Day = SUBSTRING(@DateFilter,1,2)
SET @Month = SUBSTRING(@DateFilter,4,2)
SET @Year = SUBSTRING(@DateFilter,7,4)
IF @Day != '00' OR @Month != '00' OR @Year != '1900'
BEGIN
SET @isDateFilter = '1'
END
END
SET @SelectClause = 'SELECT
CASE WHEN [Type] = ''P''
THEN ''Payment''
WHEN [Type] = ''B''
THEN ''Bill''
WHEN [Type] = ''T''
THEN ''Transfer''
WHEN [Type] = ''I''
THEN ''Invoice''
WHEN [Type] = ''R''
THEN ''Receipt''
WHEN [Type] = ''J''
THEN ''Journal'' ELSE ''''
END AS Type,
[BatchNo],
[Pref],
[Ref],
[Date],
[Value],
[Matter],
[Code],
[Supp],
[Narr],
[Fee]
FROM [dbo].[BatchH]'
IF(@Type = '')
SET @ConditionalClause = N'
WHERE [POSTED] = ''Y'''
ELSE
SET @ConditionalClause = N'
WHERE [POSTED] = ''Y''
AND [Type] = @Type';
SET @SearchText = N' '
IF @isDateFilter != '0'
BEGIN
IF @Day != '00'
BEGIN
SET @SearchText += N'
AND
(
DAY([Date]) = ' + ''+ @Day +'' +
')'
END
IF @Month != '00'
BEGIN
SET @SearchText += N'
AND
(
MONTH([Date]) = ' + ''+ @Month +'' +
')'
END
IF @Year != '1900'
BEGIN
SET @SearchText += N'
AND
(
YEAR([Date]) = ' + ''+ @Year +'' +
')'
END
END
ELSE
BEGIN
SET @SearchText += N'
AND
(
[BatchNo] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[Date] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[PREF] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[REF] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[VALUE] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[MATTER] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[CODE] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[SUPP] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[NARR] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[FEE] LIKE' + '''%' + @SearchString + '%' + '''' +
')'
END
SET @OrderByClause = N' ORDER BY ' + CAST(@SortColumn AS VARCHAR(100)) + ' ' + CAST(@SortOrder AS VARCHAR(100)) +'
OFFSET @offset ROWS
FETCH NEXT @PageSize ROWS ONLY;'
SET @TotalRecord = N'
SELECT COUNT(*) ''TotalRecord''
FROM [dbo].[BatchH] ' + @ConditionalClause + @SearchText
SET @sql = @SelectClause + @ConditionalClause + @SearchText + @OrderByClause + @TotalRecord
EXEC Sp_executesql @sql,
N' @Type VARCHAR(10) ,
@SearchString VARCHAR(500),
@SortColumn VARCHAR(100),
@SortOrder VARCHAR(100),
@offset INT,
@PageSize INT',
@Type = @Type,
@SearchString = @SearchString,
@SortColumn = @SortColumn,
@SortOrder = @SortOrder,
@offset = @offset,
@PageSize = @PageSize
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSAMPurchaseList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMPurchaseList]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMPurchaseList]
(@Type varchar(4) = '',
@Handler VARCHAR(10) = NULL)
AS
/*******************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMPurchaseList] *
* Description: To Get list based Type *
* *
* Modification History: *
* 2021-07-28 Vinodhkumar M Created *
* 2021-08-09 Vinodhkumar M Type parameter is added *
* 2021-08-11 Vinodhkumar M new column is added *
* 2021-08-11 Vinodhkumar M Modified : change time zone for date,Entry date *
*******************************************************************************************************/
BEGIN
SELECT [BAT].[BATCHNO] AS [BatchNo],
[BAT].[TYPE] AS [Type],
[BAT].[CODE] AS [Code],
[BAT].[REF] AS [Ref],
[dbo].KEYHM_FNConvertUTCDateToTargetTimeZone([BAT].[DATE], @Handler) AS [Date],
[BAT].[MATTER] AS [Matter],
[BAT].[SUBTOT] AS [SubTotal],
[BAT].[SUPP] AS [Supp],
[BAT].[NARR] AS [Narr],
[BAT].[VALUE] AS [Value],
[BAT].[POSTED] AS [Posted],
[BAT].[PERNO] AS [PerNo],
[BAT].[YEAR] AS [Year],
[BAT].[ENTRYDATE] AS [EntryDate],
[dbo].KEYHM_FNConvertUTCDateToTargetTimeZone([BAT].[ENTRYDATE], @Handler) AS [EntryDate],
[BAT].[RECNO] AS [RecNo],
[BAT].[USERCODE] AS [UserCode],
[BAT].[CLIENTBANK] AS [ClientBank],
[BAT].[CHEQUEREQNO] As [ChequeReqNo]
FROM
[dbo].[BatchH] [BAT]
WHERE
([BAT].[TYPE] = @Type AND
[BAT].[POSTED] = 'N')
ORDER BY
[BAT].[POSTED] ASC,
[BAT].[ENTRYDATE] ASC
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMRequestedTransferCost'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMRequestedTransferCost]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMRequestedTransferCost]
(
@Mode VARCHAR(10) = 'VIEW',
@RecordId DECIMAL(9)
)
AS
/*******************************************************************************************************
* Fetches the Waiting Costs Transfer Details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMRequestedTransferCost] *
* *
* Modification History: *
* 16 Mar 2022 Vignesh M Created
* 18 Oct 2022 Ghayathri.S.V Modified - Handled Delete logic with modes,
TCL Statements and formatting. *
* 23 May 2024 Revathy D Modified - Added Allocated columns *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
IF( @Mode = 'VIEW' )
BEGIN
SELECT [CTG].[Ref],
[CTG].[Date],
[CTG].[Matter],
[CTG].[Value],
[CTG].[RecordId],
[MTR].[Code],
[MTR].[ClientCode],
[MTR].[Description],
[MTR].[FeCode],
[MTR].[Dept],
[MTR].[WType],
[MTR].[Branch],
[MTR].[FileNum],
[MTR].[ThirdPart],
[MTR].[ThpartSol],
[MTR].[OldRef],
[MTR].[PCode],
[MTR].[PfeCode],
[MTR].[User1],
[MTR].[User2],
[MTR].[User3],
[MTR].[FileColour],
[MTR].[OutFileNo],
[MTR].[Closed],
[CON].[Name],
[CON].[Fe],
[CON].[Client],
[CON].[ClientGroup],
[CON].[OtherRef],
[CON].[OpsisRef],
[CON].[ContactNo],
[CON].[CompBillOnOff],
[CON].[TaxType],
[CTG].[EntryCurrency],
[CTG].[CurrencyValue],
[CTG].[CurrencyVAT],
[CTG].[HeadPRef],
[CTG].[HeadBatch],
[CTG].[AllocBatch],
[CTG].[AllocPRef],
[CTG].[AllocRef],
[CTG].[AllocValue],
[CTG].[AllocWriteOff]
FROM [dbo].[CostTransGathering] AS [CTG]
LEFT OUTER JOIN [dbo].[Matters] AS [MTR] ON [CTG].MATTER = [MTR].CODE
LEFT OUTER JOIN [dbo].[contacts] AS [CON] ON [MTR].CLIENTCODE = [CON].CODE
ORDER BY [CTG].MATTER ASC, [CTG].RECORDID ASC
END
ELSE IF (@Mode = 'DELETE')
BEGIN
DELETE FROM [dbo].[CostTransGathering]
WHERE RECORDID = @RecordId
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSamSelectContactList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamSelectContactList]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSamSelectContactList]
AS
/*******************************************************************************************************
* Get move matter List *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamSelectContactList] *
* *
* Modification History: *
* 2021-09-27 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
SELECT [CONT].[CODE] AS [Code],
[CONT].[Name] AS [Name],
[CONT].[Address] AS [Address],
[CONT].PRINCIPAL AS [Principal],
[CONT].FE AS [FE],
[CONT].CLIENT AS [Client],
[CONT].CLIENTGROUP AS [ClientGroup],
[CONT].OTHERREF AS [OtherRef],
[CONT].OPSISREF AS [OpSisRef],
[CONT].CONTACTNO AS [ContactNo],
[CONT].COMPBILLONOFF AS [CompBillOnOff],
[CONT].TAXTYPE AS [TaxType]
FROM
[dbo].[contacts] [CONT]
ORDER BY
[CONT].CODE ASC
END
GO
IF OBJECT_ID(N'KAAS_GetSAMSelectedBillDetails',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMSelectedBillDetails]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMSelectedBillDetails]
(@KeyId INT = NULL,
@DraftNo INT = NULL)
AS
/*******************************************************************************************************
* Get bill details based on keyId *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMSelectedBillDetails] *
* *
* Modification History: *
* 2021-09-17 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
SELECT [MATTER] AS [Matter],
[DRAFTNO] AS [DraftNo],
[BILLNO] AS [BillNo],
[TYPE] AS [Type],
[FEEEARNER] AS [FeeEarner],
[NOMINAL] AS [Nominal],
[NARRATIVE] AS [Narrative],
[NET] AS [Net],
[VATCODE] AS [VatCode],
[VATRATE] AS [VatRate],
[VATVALUE] AS [VatValue],
[LINENO] AS [LineNo],
[KEYID] AS [KeyId],
[OVERRIDDENVAT] AS [OverriddenVat],
[PREBILLEDOUTLAY] AS [PreBillingOutlay]
FROM
[dbo].[BillDetails]
WHERE
[KEYID] = @KeyId
AND [DRAFTNO] = @DraftNo
END
GO
IF OBJECT_ID(N'KAAS_GetSAMSelectedMatterWithContact',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMSelectedMatterWithContact]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMSelectedMatterWithContact]
(@Code VARCHAR(50) ='')
AS
/*******************************************************************************************************
* Get Matter and Contacts details based on Matter Code *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMSelectedMatterWithContact] *
* *
* Modification History: *
* 2021-09-16 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
SELECT
[MAT].[CODE] AS [Code],
[MAT].[CLIENTCODE] AS [ClientCode],
[MAT].[MATTER] AS [Matter],
[MAT].[DESCRIPTION] AS [Description],
[MAT].[DEBTBAL] AS [DebtBal],
[MAT].[OUTLAYBAL] AS [OutlayBal],
[MAT].[CLIENTBAL] AS [ClientBal],
[MAT].[CHARGEBAL] AS [ChargeBal],
[dbo].[ky_TimeFromMinutes]([MAT].[TimeBal]) AS [TimeBal],
[CON].[NAME] AS [Name],
[CON].[ADDRESS] AS [Address]
FROM
[dbo].[MATTERS] [MAT]
INNER JOIN
[dbo].[CONTACTS] [CON] ON [CON].[CODE] = [MAT].[CLIENTCODE]
WHERE
[MAT].[CODE] = @Code
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMSystemOptionsDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMSystemOptionsDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMSystemOptionsDetails]
AS
/*******************************************************************************************************
* Fetches the System Options Dropdown List *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSystemOptionsDetails] *
* *
* Modification History: *
* 2021-08-02 Balamurugan.C Created *
* 2021-09-07 Balamurugan.C Updated- Include Allow Forward Posting Flag *
* 2021-09-20 Balamurugan.C Modified- Removed Year End Date from control table and used *
srettings table year end date *
* 2021-10-13 Vinodhkumar.M Updated- Include EFT_EFTDebt *
* 2021-11-18 Vinodhkumar.M Updated- Include IEConvert,EICONVERT,BaseCurrency *
* 2022-03-23 Vinodhkumar.M Updated- Include Code configuration Labels name *
* 2022-03-24 Vinodhkumar.M Updated- Include Request File configuration Config *
* 2022-04-06 Vinodhkumar.M Updated- Handled code configuration empty values *
* 2022-04-07 Vinodhkumar.M Updated- Handled IS NULL forcode configuration null *
* 2022-11-24 Ghayathri.S.V Updated- Included code config columns to fetchfrom settings table *
* 2024-01-23 Ghayathri.S.V Updated- Included DefaultPrebilledOutlay columns to
fetchfrom settings table *
* 2024-02-28 Sadiq Updated- Added Azure Container dynamic values *
* 2024-03-25 Ghayathri.S.V Updated- Added EFT Default values *
* 2024-06-04 Vignesh M Updated- Added Remote Typist Values *
* 2024-06-10 Balamurugan.C Updated- Added Do NOT allow multi draft bill *
* 2024-07-03 Revathy D Modified- Added Risk Management values *
* 2024-07-23 Sadiq Modified- Risk Management values changes (Bug no - 18686) *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
RTRIM([Name]) AS [Name],
RTRIM([Debtors]) AS [DebtorsControlAc],
RTRIM([Creditor]) AS [CreditorControlAc],
RTRIM([VatNo]) AS [VatNo],
RTRIM([Outlay]) AS [OutlayControlAc],
RTRIM([Vat]) AS [VatAc],
RTRIM([Pl]) AS [ProfitLossAc],
RTRIM([Client]) AS [ClientLedgerControl],
RTRIM([FeesWriteOff]) AS [FeesWriteOffAc],
RTRIM([OutlayWriteOff]) AS [OutlayWriteOffAc],
RTRIM([BillsWriteOff]) AS [BillsWriteOffAc],
RTRIM([DefaultOfficeAc]) AS [DefaultOfficeAc],
RTRIM([DefaultClientAc]) AS [DefaultClientAc],
RTRIM([DefaultClientDep]) AS [DefaultClientDepositAc],
RTRIM([MiscOutlay]) AS [MiscOutlay],
RTRIM([PettyCash]) AS [DefaultPettyCash],
RTRIM([withTax]) AS [WithHoldingTax],
[Year] AS [Year],
[CurPer] AS [CurrentPeriod],
[OutlayBudget] AS [StdOutlayBudget],
[LastBill] AS [LastBillNo],
RTRIM([VatExclude]) AS [VatExclusionCode],
RTRIM([DefaultVat]) AS [DefaultVat],
RTRIM([FeeExclude]) AS [FeeExclusionCode],
RTRIM([MiscFE]) AS [DefaultMiscOutlayFeeEarner],
RTRIM([EnableFNL]) AS [EnableFNL],
[EnableCDB] AS [EnableClientDB],
[UK] AS [UK],
[EnableDW] AS [EnableDeedsWills],
[YearEndCompleted] AS [YearEndCompleted],
[EnableFM] AS [EnableFM],
[UseOutlayType] AS [UseOutlayType],
[PendingOutlay] AS [PendingOutlay],
[RecInstalled] AS [EnableBankRec],
[Indicator18] AS [BillPrinting],
[Indicator19] AS [UniqueMatterNumbering],
[Indicator20] AS [IntrestCalculator],
[Indicator22] AS [UseBranches],
[Indicator23] AS [TaggedBatches],
[Indicator24] AS [Indicator24],
[Indicator25] AS [Indicator25],
[Indicator26] AS [Indicator26],
[Indicator27] AS [Indicator27],
[Indicator28] AS [Indicator28],
[Indicator29] AS [Indicator29],
[Indicator30] AS [Indicator30],
[WordPerfect] AS [WordPerfect],
[DemoExpire] AS [DemoExpire],
[MaxNumberofMatters] AS [MaxMatter],
[OpSisLink] AS [CaseMgrLink],
[TimeCosting] AS [TimeCostingInstalled],
[ForceFE] AS [ForceFeeEarnerCode],
[LabelPrinter] AS [LabelPrinter],
[FeesRepSeq] AS [FeesReportingSeq],
[NoBar] AS [OverdrawnClientAc],
RTRIM([Solicitor]) AS [SolicitorCategory],
RTRIM([OthParty]) AS [OtherPartyCategory],
RTRIM([SupplierCategory]) AS [SupplierCategory],
RTRIM([DefaultCategory]) AS [SystemCategoryType],
[AutoNumber] AS [AutoNumberClients],
[AutoAlphaClientNumbering] AS [AutoAlphaClientNumbering],
[ThirdPartyLimit] AS [ThirdPartyLimit],
[EiConvert] AS [ConversionRate],
[DateFutValidation] AS [DateFutureValidation],
[DatePastValidation] AS [DatePastValidation],
RTRIM([USerPrompt1]) AS [PromptRef1],
RTRIM([USerPrompt2]) AS [PromptRef2],
RTRIM([USerPrompt3]) AS [PromptRef3],
[NextFile] AS [NextFile],
[ClosedFileNo] AS [ClosedFileNumber],
RTRIM([ChequePrinting]) AS [ChequeType],
[EnableCP] AS [EnableChequePrinting],
[IECONVERT] AS [CurrencyConvertValue],
[EICONVERT] AS [EIConvertValue],
[BaseCurrency] AS [BaseCurrency],
[dbo].[KAAS_FN_GetDateFromClarion]([PeriodEnd]) AS [NextPeriodEnd]
FROM [dbo].[Control]
SELECT
MAX(CASE WHEN [STI].[KeyName] = 'TimeBarred' THEN OutputValue END) AS [TimeBarred],
MAX(CASE WHEN [STI].[KeyName] = 'SupplierRemittance_On' THEN OutputValue END) AS [SupplierRemittanceOn],
MAX(CASE WHEN [STI].[KeyName] = 'EFTDefaultON' THEN OutputValue END) AS [EFTDefaultON],
MAX(CASE WHEN [STI].[KeyName] = 'EFTEmailToSend' THEN OutputValue END) AS [EFTEmailToSend],
MAX(CASE WHEN [STI].[KeyName] = 'EFTTransactionLimit' THEN OutputValue END) AS [EFTTransactionLimit],
MAX(CASE WHEN [STI].[KeyName] = 'EFTNoOfTransactionLimit' THEN OutputValue END) AS [EFTNoOfTransactionLimit],
MAX(CASE WHEN [STI].[KeyName] = 'EFTEmailSubject' THEN OutputValue END) AS [EFTEmailSubject],
MAX(CASE WHEN [STI].[KeyName] = 'EFTEmailMessage' THEN OutputValue END) AS [EFTEmailMessage],
MAX(CASE WHEN [STI].[KeyName] = 'DefaultPrebilledOutlay' THEN OutputValue END) AS [DefaultPrebilledOutlay],
MAX(CASE WHEN [STI].[KeyName] = 'MatterOutlayBudgetCheckON' THEN OutputValue END) AS [MatterOutlayBudgetCheckON],
MAX(CASE WHEN [STI].[KeyName] = 'CASE_LabelNo' THEN RTRIM(OutputValue) END) AS [CaseLabelNo],
MAX(CASE WHEN [STI].[KeyName] = 'InvoiceApprover' THEN RTRIM(OutputValue) END) AS [InvoiceApprover],
MAX(CASE WHEN [STI].[KeyName] = 'ChequeApprover' THEN RTRIM(OutputValue) END) AS [ChequeApprover],
MAX(CASE WHEN [STI].[KeyName] = 'NotifyReleasedInv' THEN OutputValue END) AS [NotifyReleasedInv],
MAX(CASE WHEN [STI].[KeyName] = 'NotifyApprovedInv' THEN OutputValue END) AS [NotifyApprovedInv],
MAX(CASE WHEN [STI].[KeyName] = 'NotifyReleasedChq' THEN OutputValue END) AS [NotifyReleasedChq],
MAX(CASE WHEN [STI].[KeyName] = 'NotifyApprovedChq' THEN OutputValue END) AS [NotifyApprovedChq],
MAX(CASE WHEN [STI].[KeyName] = 'EMailServer' THEN OutputValue END) AS [SMTPMailServer],
MAX(CASE WHEN [STI].[KeyName] = 'Money Laundering_MoneyLaunderingCheck' THEN OutputValue END) AS [MoneyLaunderingCheck],
MAX(CASE WHEN [STI].[KeyName] = 'Money Laundering_Dept' THEN RTRIM(OutputValue) END) AS [MoneyLaunderingDept],
MAX(CASE WHEN [STI].[KeyName] = 'Money Laundering_FeeEarner' THEN RTRIM(OutputValue) END) AS [MoneyLaunderingFeeEarner],
MAX(CASE WHEN [STI].[KeyName] = 'Money Laundering_WorkType' THEN RTRIM(OutputValue) END) AS [MoneyLaunderingWorkType],
MAX(CASE WHEN [STI].[KeyName] = 'Options_Conversion' THEN RTRIM(OutputValue) END) AS [ShowLedgerButton],
MAX(CASE WHEN [STI].[KeyName] = 'CompositeBilling' THEN RTRIM(OutputValue) END) AS [CompositeBilling],
MAX(CASE WHEN [STI].[KeyName] = 'AllowFwPostingJournals' THEN RTRIM(OutputValue) END) AS [AllowFwPostingJournals],
MAX(CASE WHEN [STI].[KeyName] = 'YearEndDate' THEN TRY_PARSE(OutputValue as date USING 'AR-LB') END) AS [YearEndDate],
MAX(CASE WHEN [STI].[KeyName] = 'EFT_EFTDebt' THEN RTRIM(OutputValue) END) AS [EFTDebt],
MAX(CASE WHEN [STI].[KeyName] = 'RequestFileExpiryTime' THEN RTRIM(OutputValue) END) AS [RequestFileExpiryTime],
MAX(CASE WHEN [STI].[KeyName] = 'RemoteTypist' THEN OutputValue END) AS [RemoteTypist],
MAX(CASE WHEN [STI].[KeyName] = 'MaxClCode' THEN RTRIM(OutputValue) END) AS [MaxClCode],
MAX(CASE WHEN [STI].[KeyName] = 'ManualClientCode' THEN RTRIM(OutputValue) END) AS [ManualClientCode],
MAX(CASE WHEN [STI].[KeyName] = 'MaxMatNum' THEN RTRIM(OutputValue) END) AS [MaxMatNum],
MAX(CASE WHEN [STI].[KeyName] = 'ShowMatterCode' THEN RTRIM(OutputValue) END) AS [ShowMatterCode],
MAX(CASE WHEN [STI].[KeyName] = 'AutoNumberIfBlank' THEN RTRIM(OutputValue) END) AS [AutoNumberIfBlank],
--Code configuration Labels name
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'ClientLabel' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Client'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Client') AS [ClientLabel],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'ContactLabel' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Contact'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Contact') AS [ContactLabel],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'MatterLabel' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Matter'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Matter') AS [MatterLabel],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'CaseLabel' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Case'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Case') AS [CaseLabel],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'CaseMatterLabel' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Case Or Matter'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Case Or Matter') AS [CaseMatterLabel],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'FeeEarnerLabel' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Fee Earner'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Fee Earner') AS [FeeEarnerLabel],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'PartnerLabel' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Partner'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Partner') AS [PartnerLabel],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'AssociateLabel' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Associate'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Associate') AS [AssociateLabel],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'BranchLabel' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Branch'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END), 'Branch') AS [BranchLabel],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'PostalCodeLabel' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Postal Code'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Postal Code' ) AS [PostalCodeLabel],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'AzureBlobStorageClientFolder' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Azure Blob Storage Client Folder'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Azure Blob Storage Client Folder' ) AS [AzureBlobStorageClientFolder],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'AzureBlobStorageClientVersionsFolder' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Azure Blob Storage Client Versions Folder'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Azure Blob Storage Client Versions Folder' ) AS [AzureBlobStorageClientVersionsFolder],
ISNULL(MAX(CASE WHEN [STI].[KeyName] = 'AzureBlobStorageTemplatesFolder' THEN
CASE WHEN RTRIM(OutputValue) ='' THEN 'Azure Blob Storage Templates Folder'
WHEN RTRIM(OutputValue) !='' THEN RTRIM(OutputValue) END END),'Azure Blob Storage Templates Folder' ) AS [AzureBlobStorageTemplatesFolder],
MAX(CASE WHEN [STI].[KeyName] = 'NotAllowMulipleDraftBill' THEN RTRIM(OutputValue) END) AS [NotAllowMultipleDraftBill],
MAX(CASE WHEN [STI].[KeyName] = 'InvoiceApproverHandler' THEN OutputValue END) AS [InvoiceApproverHandler],
MAX(CASE WHEN [STI].[KeyName] = 'ChequeApproverHandler' THEN OutputValue END) AS [ChequeApproverHandler],
MAX(CASE WHEN [STI].[KeyName] = 'Risk Management_StatuteActionCode' THEN RTRIM(OutputValue) END) AS [RMStatuteActionCode],
MAX(CASE WHEN [STI].[KeyName] = 'Risk Management_StatuteWarning' THEN OutputValue END) AS [RMStatuteWarning],
MAX(CASE WHEN [STI].[KeyName] = 'Risk Management_UndertakingActionCode' THEN OutputValue END) AS [RMUndertakingActionCode],
MAX(CASE WHEN [STI].[KeyName] = 'Risk Management_UndertakingWarning' THEN RTRIM(OutputValue) END) AS [RMUndertakingWarning],
MAX(CASE WHEN [STI].[KeyName] = 'UseNewStatuteSystem' THEN OutputValue END) AS [UseNewStatuteSystem],
MAX(CASE WHEN [STI].[KeyName] = 'EstFeeWarningLimit' THEN OutputValue END) AS [EstFeeWarningLimit],
MAX(CASE WHEN [STI].[KeyName] = 'LockupUpValue' THEN OutputValue END) AS [LockUpValue],
MAX(CASE WHEN [STI].[KeyName] = 'LastActionMonth' THEN OutputValue END) AS [LastActionMonth],
MAX(CASE WHEN [STI].[KeyName] = 'DebtorWarningDaysLimit' THEN OutputValue END) AS [DebtorWarningDaysLimit],
MAX(CASE WHEN [STI].[KeyName] = 'AddUndertakingCommentLedger' THEN OutputValue END) AS [AddUndertakingCommentLedger],
MAX(CASE WHEN [STI].[KeyName] = 'ShowAlarm' THEN OutputValue END) AS [ShowAlarm]
FROM [dbo].[Settings] STI
CROSS APPLY
(
VALUES ([KeyValue])
)
CPV(OutputValue)
WHERE [STI].[KeyName]
IN (
'TimeBarred',
'SupplierRemittance_On',
'EFTDefaultON',
'EFTEmailToSend',
'EFTTransactionLimit',
'EFTNoOfTransactionLimit',
'EFTEmailSubject',
'EFTEmailMessage',
'DefaultPrebilledOutlay',
'MatterOutlayBudgetCheckON',
'CASE_LabelNo',
'InvoiceApprover',
'ChequeApprover',
'NotifyReleasedInv',
'NotifyApprovedInv',
'NotifyReleasedChq',
'NotifyApprovedChq',
'Money Laundering_MoneyLaunderingCheck',
'Money Laundering_Dept',
'Money Laundering_FeeEarner',
'Money Laundering_WorkType',
'EMailServer',
'Options_Conversion',
'CompositeBilling',
'AllowFwPostingJournals',
'YearEndDate',
'EFT_EFTDebt',
'RequestFileExpiryTime',
'RemoteTypist',
'MaxClCode',
'ManualClientCode',
'MaxMatNum',
'ShowMatterCode',
'AutoNumberIfBlank',
'ClientLabel',
'ContactLabel',
'MatterLabel',
'CaseLabel',
'CaseMatterLabel',
'FeeEarnerLabel',
'PartnerLabel',
'AssociateLabel',
'BranchLabel',
'PostalCodeLabel',
'AzureBlobStorageClientFolder',
'AzureBlobStorageClientVersionsFolder',
'AzureBlobStorageTemplatesFolder',
'NotAllowMulipleDraftBill',
'InvoiceApproverHandler',
'ChequeApproverHandler',
'Risk Management_StatuteActionCode',
'Risk Management_StatuteWarning',
'Risk Management_UndertakingActionCode',
'Risk Management_UndertakingWarning',
'UseNewStatuteSystem',
'EstFeeWarningLimit',
'LockupUpValue',
'LastActionMonth',
'DebtorWarningDaysLimit',
'AddUndertakingCommentLedger',
'ShowAlarm'
)
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMSystemOptionsDropDownList'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMSystemOptionsDropDownList]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMSystemOptionsDropDownList]
AS
/*******************************************************************************************************
* Fetches the System Options Dropdown List *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMSystemOptionsDropDownList] *
* *
* Modification History: *
* 2021-08-01 Balamurugan.C Created *
* 2024-06-07 Vignesh M Modified Remote Typist taken from Handlers table *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
[Code],
[Desc],
[Type],
[Retired]
FROM [dbo].[Nominal]
ORDER BY [Code] ASC
SELECT
[Code],
[Name],
[Nominal],
[Retired]
FROM [dbo].[FeeEarnerCodes]
ORDER BY [Code] ASC
SELECT
[Code],
[Rate]
FROM [dbo].[VATCodes]
ORDER BY [Code] ASC
SELECT
[Code],
[Desc],
[Pb]
FROM [dbo].[NominalReportSeq]
WHERE [Pb] = ' '
ORDER BY [Pb] DESC,
[Code] DESC
SELECT
RTRIM([CatType]) AS [CatType],
RTRIM([Code]) AS [Code],
RTRIM([Desc$]) AS [Description],
RTRIM([CategoryType]) AS [CategoryType]
FROM [dbo].[Category]
LEFT OUTER JOIN [dbo].[CategoryType]
ON [CatType]=[CategoryType]
WHERE [CatType]= (SELECT [DefaultCategory] FROM [dbo].[control])
ORDER BY [CatType] DESC,
[Code] DESC
SELECT
RTRIM([CategoryType]) AS [CategoryType],
RTRIM([Description]) AS [Description]
FROM [dbo].[CategoryType]
ORDER BY [CategoryType] ASC
SELECT
RTRIM([Code]) AS [Code],
RTRIM([Description]) AS [Description]
FROM [dbo].[Departments]
WHERE ISNULL([Retired],'') <> 'Y'
ORDER BY [Code] ASC
SELECT
RTRIM([Code]) AS [Code],
RTRIM([Description]) AS [Description]
FROM [dbo].[WorkTypes]
WHERE ISNULL([Retired],'') <> 'Y'
ORDER BY [Code] ASC
SELECT
[Code],
[Name],
[Retired]
FROM [dbo].[Handlers]
ORDER BY [Code] ASC
SET NOCOUNT OFF
END
GO
IF EXISTS(SELECT
TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMUndertakingBaseDetails'
AND SO.[type] = 'P'
)
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMUndertakingBaseDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMUndertakingBaseDetails](
@MatterCode VARCHAR(20),
@FECode VARCHAR(10),
@Handler VARCHAR(10)
)
AS
/*******************************************************************************************************
* [dbo].[KAAS_GetSAMUndertakingBaseDetails] '000001/0000','ADM','ADM' *
* Description: Get basic undertaking details to insert undertakings *
* Modification History: *
* 2021-04-10 Natarajan S Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [RecordId] AS [RecordId],
[MATTER] AS [MATTER],
[SEQ] AS [SEQ],
[DISCHARGEDATE] AS [DischargeDate],
[TYPE] AS [TYPE],
[DESCRIPTION] AS [DESCRIPTION],
[WHO] AS [WHO],
[ACTIONID] AS [ACTIONID],
[GIVENORRECEIVED] AS [GivenOrReceived],
[NOTIFIED] AS [Notified],
[DISCHARGEDESCRIPTION] AS [DischargeDescription],
[DISCHARGEDBY] AS [DischargedBy],
[DEALINGNUMBER] AS [DealingNumber],
[NOTES] AS [Notes],
[COMMERCIALORNON] AS [CommercialOrNon],
[STATUS] AS [STATUS],
[dbo].KAAS_FNConvertUTCDateToTargetTimeZone([DATE],@Handler) AS [Date],
[dbo].KAAS_FNConvertUTCDateToTargetTimeZone([UNDDATE],@Handler) AS [UndDate],
[VALUE] AS [VALUE],
[UNDVALUE] AS [UndValue],
[AUTHORISEDBYFE] AS [AUTHORISEDBYFE],
[HANDLER] AS [Handler],
[UNDERTAKINGTO] AS [UndertakingTo],
[CASECONTACT] AS [CaseContact],
[ENTRYDATE] AS [EntryDate],
[CATEGORY] AS [Category],
[ISCONDITIONAL] AS [IsConditional],
[CONDITION] AS [Condition],
[NEEDSATTENTION] AS [NeedsAttention]
FROM [dbo].[Undertakings]
WHERE ([MATTER] = @MatterCode AND (MATTER < @MatterCode
OR
([SEQ] <= 99 AND ([SEQ] < 99 OR ([DATE] <= null AND ([DATE] < NULL OR ([RECORDID] <= 0 )))))))
ORDER BY
[MATTER] DESC,
[SEQ] DESC,
[DATE] DESC,
[RECORDID] DESC
SELECT
[CODE] AS [Code],
[BRANCH] AS [Branch],
[NAME] AS [Name],
[NOMINAL] AS [Nominal],
[RETIRED] AS [Retired]
FROM
[dbo].[FeeEarnerCodes] WHERE [CODE] = @FECode
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMUndertakingDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].KAAS_GetSAMUndertakingDetails
END
go
CREATE PROCEDURE [dbo].[KAAS_GetSAMUndertakingDetails] (@MatterCode VARCHAR(20),@Handler VARCHAR(10))
AS
/*******************************************************************************************************
* *
*Used to Get Undertaking details *
* Stored Procedure Name: [dbo].KAAS_GetSAMUndertakingDetails '000003/0008','ADM' *
* Modification History: *
* 2021-03-30 Natarajan S Created *
* 2021-06-01 Balamurugan Modified--Commented the type column case when *
*******************************************************************************************************/
BEGIN
EXEC [dbo].KAAS_GetSAMHeaderDetails @MatterCode
SELECT
[UND].[RecordID],
[UND].[Matter],
[UND].[Seq],
[dbo].KAAS_FNConvertUTCDateToTargetTimeZone([UND].[DischargeDate],@Handler) AS [DischargeDate],
[UND].[Type],
[UND].[Description],
[UND].[Who],
[UND].[ActionID],
[UND].[Status],
[dbo].KAAS_FNConvertUTCDateToTargetTimeZone([UND].[Date],@Handler) AS [Date],
[UND].[Value],
[UND].[AuthorisedByFE]
FROM
[dbo].[Undertakings] [UND]
WHERE
[UND].[MATTER] = @MatterCode
ORDER BY
[UND].[MATTER] ASC,
[UND].[SEQ] ASC,
[UND].[DATE] ASC,
[UND].[RECORDID]
END
GO
IF EXISTS(SELECT
TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMUndertakingDetailsForEdit'
AND SO.[type] = 'P'
)
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMUndertakingDetailsForEdit]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMUndertakingDetailsForEdit] (
@RecordId INT,
@Handler VARCHAR(10) = ''
)
AS
/*******************************************************************************************************
* *
*Used to Get Undertaking details for edit *
* Stored Procedure Name: [dbo].KAAS_GetSAMUndertakingDetailsForEdit 166,'ADM' *
* Modification History: *
* 2021-03-30 Natarajan S Created *
* 2021-10-04 Balamurugan.c Modified - Change DATE to Date *
*******************************************************************************************************/
BEGIN
SELECT [UDK].[RecordId] AS [RecordId],
[UDK].[Matter] AS [Matter],
[UDK].[Seq] AS [Seq],
[dbo].KAAS_FNConvertUTCDateToTargetTimeZone([UDK].[DISCHARGEDATE],@Handler) AS [DischargeDate],
[UDK].[Type] AS [Type],
[UDK].[Description] AS [Description],
[UDK].[Who] AS [Who],
[UDK].[ActionId] AS [ActionId],
[UDK].[GivenOrReceived] AS [GivenOrReceived],
[UDK].[DischargeDescription] AS [DisDescription],
[UDK].[DischargedBy] AS [DischargedBy],
[UDK].[DealingNumber] AS [DealingNumber],
[UDK].[Notes] AS [Notes],
[UDK].[CommercialOrNon] AS [CommercialOrNon],
[UDK].[Status] AS [Status],
[dbo].KAAS_FNConvertUTCDateToTargetTimeZone([UDK].[DATE],@Handler) AS [Date],
[UDK].[Value] AS [Value],
[UDK].[AuthorisedByFe] AS [AuthorisedByFe],
[UDK].[Handler] AS [Handler],
[UDK].[UndertakingTo] AS [UndertakingTo],
[UDK].[CaseContact] AS [CaseContact],
[UDK].[EntryDate] AS [EntryDate],
[UDK].[Category] AS [Category],
[UDK].[IsConditional] AS [IsConditional],
[UDK].[Condition] AS [Condition],
[UDK].[NeedsAttention] AS [NeedsAttention],
[UDK].[AddCommentLedger] AS [AddCommentLedger],
[dbo].KAAS_FNConvertUTCDateToTargetTimeZone([DIA].[DATE],@Handler) AS [DueDate],
[DIA].[TeamCode] AS [TeamCode],
[DIA].[FNCode] AS [FNCode],
[DIA].[Text1] AS [Text1]
FROM [dbo].[Undertakings] [UDK] INNER JOIN
[dbo].[diary] [DIA]
ON [UDK].[ActionId]=[DIA].[ActionId]
WHERE [RecordId]=@RecordId
END
GO
IF EXISTS(SELECT
TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMUndertakingDiaryDetails'
AND SO.[type] = 'P'
)
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMUndertakingDiaryDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMUndertakingDiaryDetails] (
@ActionCode VARCHAR(20),
@FECode VARCHAR(10)
)
AS
/*******************************************************************************************************
* [dbo].[KAAS_GetSAMUndertakingDiaryDetails] *
* Description: Get basic details to insert into diary information. *
* Modification History: *
* 10 APR 2021 Natarajan S Created *
* 14 JUL 2021 Natarajan S Modified - SP Formatted *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT CASE [Priority] WHEN 'High'
THEN 'H'
ELSE 'N'
END
AS [Priority],
[Highlighted] AS [Highlighted],
[Publisher] AS [Publish],
[ActionCode] AS [ActionCode],
[Status] AS [ActionStatus],
[ActionCategory] AS [ActionType],
[ProcessType] AS [ProcessType],
[Desc] AS [ActionCodeDescription],
[Code] AS [FNCode],
[Team] AS[TeamCode]
FROM [dbo].[TemplateActions],
[dbo].[Handlers]
WHERE [Code] = @FECode
AND [ActionCode] = @ActionCode
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAMUnpostedBatches'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMUnpostedBatches]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMUnpostedBatches]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'Posted',
@SortOrder VARCHAR(100) = 'ASC'
)
AS
/*******************************************************************************************************
* Fetches the unposted batches *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMUnpostedBatches] *
* *
* Modification History: *
* 09 Sep 2021 Balamurugan C Created *
* 16 Mar 2022 Vignesh M Modified Added Requested Transfer Count
* 21 Jul 2022 Ghayathri.S.V Modified - To implement dynamic sql query to fetch sort
and search datas and fetch debtor ledger balances *
* 09 Aug 2022 Ghayathri.S.V Modified - To add value column for server side pagination search *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql ='SELECT [BatchNo],
[Type],
[Code],
[Ref],
[Date],
[Fee],
[Matter],
[Supp],
[Narr],
[Value],
[Posted],
[PerNo],
[Year],
[EntryDate],
[RecNo],
[ChequeReqNo]
FROM [dbo].[BatchH]
WHERE [Posted]=''N''' +
'AND (
[BatchNo] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[Code] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Ref] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Matter] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Supp] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Narr] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Date] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Fee] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Value] LIKE ' + '''%' + @SearchString + '%' + '''' +
')
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
SELECT COUNT(*) 'TotalRecord'
FROM [dbo].[BatchH]
WHERE [Posted]='N'
AND (
[BatchNo] LIKE '%' + @SearchString + '%'
OR
[Code] LIKE '%' + @SearchString + '%'
OR
[Ref] LIKE '%' + @SearchString + '%'
OR
[Matter] LIKE '%' + @SearchString + '%'
OR
[Supp] LIKE '%' + @SearchString + '%'
OR
[Narr] LIKE '%' + @SearchString + '%'
OR
[Date] LIKE '%' + @SearchString + '%'
OR
[Fee] LIKE '%' + @SearchString + '%'
OR
[Value] LIKE '%' + @SearchString + '%')
SELECT COUNT([CTG].RECORDID) [RequestedTransfer]
FROM [dbo].[CostTransGathering] AS [CTG]
LEFT OUTER JOIN [dbo].[Matters] AS [MTR] ON [CTG].MATTER = [MTR].CODE
LEFT OUTER JOIN [dbo].[contacts] AS [CON] ON [MTR].CLIENTCODE = [CON].CODE
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSAMUpdateApproveBillHeader',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMUpdateApproveBillHeader]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSAMUpdateApproveBillHeader]
(
@Code VARCHAR(50) = '',
@DraftNo INT,
@BillSentOrNot CHAR(1) = '',
@Date DATE,
@Message VARCHAR(100) = '',
@BillTo VARCHAR(100) = ''
)
AS
/*******************************************************************************************************
* Update Bill Header *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMUpdateApproveBillHeader] *
* *
* Modification History: *
* 2021-09-16 Vinodhkumar M Created *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRANSACTION
UPDATE [dbo].[BillHeader]
SET [BILLSENT] = @BillSentOrNot,
[DATE] = @Date,
[RETURNREASON] = @Message,
[ADDRESSEE] = @BillTo
WHERE [MATTER] = @Code
AND [DRAFTNO] = @DraftNo
COMMIT TRANSACTION
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_GetSamUpdateDebtLodgement',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamUpdateDebtLodgement]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSamUpdateDebtLodgement]
(
@PostingRef INT = 0,
@LastBatch INT = 0
)
AS
/*******************************************************************************************************
* Update Debt Lodgement *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamUpdateDebtLodgement] *
* *
* Modification History: *
* 2021-10-01 Vinodhkumar M Created *
* 2021-10-18 Vinodhkumar M Modified - removed insert query *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
UPDATE [dbo].[DebtCostingLedger]
SET XnId = @LastBatch
WHERE POSTINGREF = @PostingRef
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_GetSamUpdateMatterClientCode',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamUpdateMatterClientCode]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSamUpdateMatterClientCode]
(
@Code VARCHAR(11) = '',
@ClientCode VARCHAR(8) = '',
@PreviousClientCode VARCHAR(8) = ''
)
AS
/*******************************************************************************************************
* Update Matter and Client Code *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamUpdateMatterClientCode] *
* *
* Modification History: *
* 2021-10-01 Vinodhkumar M Created *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DECLARE @FormatNewMaterCode VARCHAR(4) = '',
@NewClientMatterCode VARCHAR(11) = '',
@oldClientCode VARCHAR(11) = '';
--UPDATE LAST MATTER COUNTS FOR NEW CLIENT
UPDATE [dbo].[Contacts]
SET [LastMatter] = (LastMatter + 1)
WHERE [Code] = @ClientCode
SELECT @oldClientCode = Code,
@FormatNewMaterCode = RIGHT('000'+CAST(ISNULL(LastMatter,0) AS VARCHAR),4)
FROM [dbo].[Contacts]
WHERE [Code] = @ClientCode
SET @NewClientMatterCode = (@oldClientCode+'/'+@FormatNewMaterCode)
--INSERT NEW RECORD IN MATTER TABLE
INSERT INTO [dbo].[matters]
([Code]
,[ClientCode]
,[Matter]
,[Description]
,[FECode]
,[Partner]
,[Secretary]
,[Dept]
,[Started]
,[WType]
,[Branch]
,[EstFee]
,[OutlayBud]
,[ExpBillD]
,[ExpPayD]
,[S13]
,[Comment]
,[DebtBal]
,[OutlayBal]
,[ClientBal]
,[ClientCurBal]
,[ClientDepBal]
,[DebtBalFwd]
,[OutlayBalFwd]
,[ClientBalFwd]
,[ClientCurBalFwd]
,[ClientDepBalFwd]
,[PendingBal]
,[ClientMin]
,[FileNum]
,[ThirdPart]
,[ThPartSol]
,[Value]
,[Undertaking]
,[LastAct]
,[LastActType]
,[LastActWho]
,[StatuteLimits]
,[Status]
,[Section68]
,[FNL_Date]
,[FNL_Name]
,[FNL_Address]
,[FNL_Fees]
,[FNL_Outlay]
,[FNL_VAT]
,[FNL_Total]
,[OldRef]
,[PCODE]
,[PFECODE]
,[User1]
,[User2]
,[User3]
,[DepositName]
,[DepositType]
,[TimeBal]
,[ChargeBal]
,[YourRef]
,[CurDebtBal]
,[CurOutlayBal]
,[CurClientBal]
,[CurClientCBal]
,[CurClientDBal]
,[CurDebtBalFwd]
,[CurOutlayBalFwd]
,[CurClientBalFwd]
,[CurClientCBalFwd]
,[CurClientDBalFwd]
,[CurPendingBal]
,[Unallocated]
,[Statements]
,[ChargeLevel]
,[FileColour]
,[OpenInvoiceNo]
,[Password]
,[CompBillOnOff]
,[CompFrequency]
,[CompOutlayLimit]
,[CompFeesLimit]
,[CompTotalLimit]
,[CompBillingMatter]
,[CompBilling]
,[ClientName]
,[ClientAddress]
,[ClientSalutation]
,[ChargeArrangement]
,[Importance]
,[OriginalDebt]
,[DebtCollected]
,[RecoverableCosts]
,[DebtInterest]
,[BillingMethod]
,[CollectingBalance]
,[Publish]
,[Permissions]
,[ChargeOutRateInd]
,[OUTFileNo]
,[OrgClosedDate]
,[ReOpenedDate]
,[FixedFee]
,[ShowCommentInAlarm]
,[OtherRef]
,[Location]
,[DestroyDate]
,[Closed]
,[ClosingDate]
,[CloseDate]
,[DepositAC1]
,[DepositAC2]
,[DepositAC3]
,[ArchiveDate]
,[ArchiveLocation]
,[SetupYear]
,[SetupPeriod]
,[OldNew]
,[ClientBankAc]
,[OfficeBankAc]
,[FileManagerFileNumber]
,[ItemCode]
,[BoxNumber]
,[BillingFE]
,[EstFeeIndicator]
,[DestroyedBy]
,[FileBarCodeNo]
,[BoxBarCodeNo]
,[ActualDestroyDate]
,[NoWinNoFee]
,[FeeType])
SELECT @NewClientMatterCode AS [Code]
,@ClientCode
,@FormatNewMaterCode AS [Matter]
,[Description]
,[FECode]
,[Partner]
,[Secretary]
,[Dept]
,[Started]
,[WType]
,[Branch]
,[EstFee]
,[OutlayBud]
,[ExpBillD]
,[ExpPayD]
,[S13]
,[Comment]
,[DebtBal]
,[OutlayBal]
,[ClientBal]
,[ClientCurBal]
,[ClientDepBal]
,[DebtBalFwd]
,[OutlayBalFwd]
,[ClientBalFwd]
,[ClientCurBalFwd]
,[ClientDepBalFwd]
,[PendingBal]
,[ClientMin]
,[FileNum]
,[ThirdPart]
,[ThPartSol]
,[Value]
,[Undertaking]
,[LastAct]
,[LastActType]
,[LastActWho]
,[StatuteLimits]
,[Status]
,[Section68]
,[FNL_Date]
,[FNL_Name]
,[FNL_Address]
,[FNL_Fees]
,[FNL_Outlay]
,[FNL_VAT]
,[FNL_Total]
,[OldRef]
,@NewClientMatterCode AS [PCODE]
,[PFECODE]
,[User1]
,[User2]
,[User3]
,[DepositName]
,[DepositType]
,[TimeBal]
,[ChargeBal]
,[YourRef]
,[CurDebtBal]
,[CurOutlayBal]
,[CurClientBal]
,[CurClientCBal]
,[CurClientDBal]
,[CurDebtBalFwd]
,[CurOutlayBalFwd]
,[CurClientBalFwd]
,[CurClientCBalFwd]
,[CurClientDBalFwd]
,[CurPendingBal]
,[Unallocated]
,[Statements]
,[ChargeLevel]
,[FileColour]
,[OpenInvoiceNo]
,[Password]
,[CompBillOnOff]
,[CompFrequency]
,[CompOutlayLimit]
,[CompFeesLimit]
,[CompTotalLimit]
,[CompBillingMatter]
,[CompBilling]
,[ClientName]
,[ClientAddress]
,[ClientSalutation]
,[ChargeArrangement]
,[Importance]
,[OriginalDebt]
,[DebtCollected]
,[RecoverableCosts]
,[DebtInterest]
,[BillingMethod]
,[CollectingBalance]
,[Publish]
,[Permissions]
,[ChargeOutRateInd]
,[OUTFileNo]
,[OrgClosedDate]
,[ReOpenedDate]
,[FixedFee]
,[ShowCommentInAlarm]
,[OtherRef]
,[Location]
,[DestroyDate]
,'N' AS [Closed]
,NULL AS [ClosingDate]
,NULL AS [CloseDate]
,[DepositAC1]
,[DepositAC2]
,[DepositAC3]
,[ArchiveDate]
,[ArchiveLocation]
,[SetupYear]
,[SetupPeriod]
,[OldNew]
,[ClientBankAc]
,[OfficeBankAc]
,[FileManagerFileNumber]
,[ItemCode]
,[BoxNumber]
,[BillingFE]
,[EstFeeIndicator]
,[DestroyedBy]
,[FileBarCodeNo]
,[BoxBarCodeNo]
,[ActualDestroyDate]
,[NoWinNoFee]
,[FeeType]
FROM
[dbo].[matters]
WHERE
[Code]=@Code
--CLOSE EXISTING CLIENT MATTER CODE
UPDATE [dbo].[matters]
SET
[Description] = ('Moved to NEW Matter: '+@NewClientMatterCode),
[Comment] = ([Comment] +'Moved to NEW Matter: '+@NewClientMatterCode),
[Closed] = 'Y',
[ClosingDate] = GETUTCDATE(),
[CloseDate] = GETUTCDATE()
WHERE
[Code]=@Code
--UPDATE OPEN MATTER COUNTS FOR PREVIOUS CLIENT
UPDATE [dbo].[Contacts]
SET
[OpenMatters] = (SELECT COUNT(1)
FROM [dbo].[matters]
WHERE [ClientCode]=@PreviousClientCode
AND [Closed]='N')
WHERE
[Code] = @PreviousClientCode
--UPDATE OPEN MATTER COUNTS FOR NEW CLIENT
UPDATE [dbo].[Contacts]
SET
[OpenMatters] = (SELECT COUNT(1)
FROM [dbo].[matters]
WHERE [ClientCode]=@ClientCode
AND [Closed]='N')
WHERE
[Code] = @ClientCode
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_GetSamUpdateMatterClientCode',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSamUpdateMatterClientCode]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSamUpdateMatterClientCode]
(@Code VARCHAR(11) = '',
@ClientCode VARCHAR(8) = '',
@PreviousClientCode VARCHAR(8) = '')
AS
/*******************************************************************************************************
* Update Matter and Client Code *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamUpdateMatterClientCode] *
* *
* Modification History: *
* 2021-10-01 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DECLARE @FormatNewMaterCode VARCHAR(4) = '',
@NewClientMatterCode VARCHAR(11) = '',
@oldClientCode VARCHAR(11) = '';
--UPDATE LAST MATTER COUNTS FOR NEW CLIENT
UPDATE [dbo].[Contacts]
SET
[LastMatter] = (LastMatter + 1)
WHERE
[Code] = @ClientCode
SELECT @oldClientCode = Code,
@FormatNewMaterCode = RIGHT('000'+CAST(ISNULL(LastMatter,0) AS VARCHAR),4)
FROM
[dbo].[Contacts]
WHERE
[Code] = @ClientCode
SET @NewClientMatterCode = (@oldClientCode+'/'+@FormatNewMaterCode)
--INSERT NEW RECORD IN MATTER TABLE
INSERT INTO [dbo].[matters]
([Code]
,[ClientCode]
,[Matter]
,[Description]
,[FECode]
,[Partner]
,[Secretary]
,[Dept]
,[Started]
,[WType]
,[Branch]
,[EstFee]
,[OutlayBud]
,[ExpBillD]
,[ExpPayD]
,[S13]
,[Comment]
,[DebtBal]
,[OutlayBal]
,[ClientBal]
,[ClientCurBal]
,[ClientDepBal]
,[DebtBalFwd]
,[OutlayBalFwd]
,[ClientBalFwd]
,[ClientCurBalFwd]
,[ClientDepBalFwd]
,[PendingBal]
,[ClientMin]
,[FileNum]
,[ThirdPart]
,[ThPartSol]
,[Value]
,[Undertaking]
,[LastAct]
,[LastActType]
,[LastActWho]
,[StatuteLimits]
,[Status]
,[Section68]
,[FNL_Date]
,[FNL_Name]
,[FNL_Address]
,[FNL_Fees]
,[FNL_Outlay]
,[FNL_VAT]
,[FNL_Total]
,[OldRef]
,[PCODE]
,[PFECODE]
,[User1]
,[User2]
,[User3]
,[DepositName]
,[DepositType]
,[TimeBal]
,[ChargeBal]
,[YourRef]
,[CurDebtBal]
,[CurOutlayBal]
,[CurClientBal]
,[CurClientCBal]
,[CurClientDBal]
,[CurDebtBalFwd]
,[CurOutlayBalFwd]
,[CurClientBalFwd]
,[CurClientCBalFwd]
,[CurClientDBalFwd]
,[CurPendingBal]
,[Unallocated]
,[Statements]
,[ChargeLevel]
,[FileColour]
,[OpenInvoiceNo]
,[Password]
,[CompBillOnOff]
,[CompFrequency]
,[CompOutlayLimit]
,[CompFeesLimit]
,[CompTotalLimit]
,[CompBillingMatter]
,[CompBilling]
,[ClientName]
,[ClientAddress]
,[ClientSalutation]
,[ChargeArrangement]
,[Importance]
,[OriginalDebt]
,[DebtCollected]
,[RecoverableCosts]
,[DebtInterest]
,[BillingMethod]
,[CollectingBalance]
,[Publish]
,[Permissions]
,[ChargeOutRateInd]
,[OUTFileNo]
,[OrgClosedDate]
,[ReOpenedDate]
,[FixedFee]
,[ShowCommentInAlarm]
,[OtherRef]
,[Location]
,[DestroyDate]
,[Closed]
,[ClosingDate]
,[CloseDate]
,[DepositAC1]
,[DepositAC2]
,[DepositAC3]
,[ArchiveDate]
,[ArchiveLocation]
,[SetupYear]
,[SetupPeriod]
,[OldNew]
,[ClientBankAc]
,[OfficeBankAc]
,[FileManagerFileNumber]
,[ItemCode]
,[BoxNumber]
,[BillingFE]
,[EstFeeIndicator]
,[DestroyedBy]
,[FileBarCodeNo]
,[BoxBarCodeNo]
,[ActualDestroyDate]
,[NoWinNoFee]
,[FeeType])
SELECT @NewClientMatterCode AS [Code]
,@ClientCode
,@FormatNewMaterCode AS [Matter]
,[Description]
,[FECode]
,[Partner]
,[Secretary]
,[Dept]
,[Started]
,[WType]
,[Branch]
,[EstFee]
,[OutlayBud]
,[ExpBillD]
,[ExpPayD]
,[S13]
,[Comment]
,[DebtBal]
,[OutlayBal]
,[ClientBal]
,[ClientCurBal]
,[ClientDepBal]
,[DebtBalFwd]
,[OutlayBalFwd]
,[ClientBalFwd]
,[ClientCurBalFwd]
,[ClientDepBalFwd]
,[PendingBal]
,[ClientMin]
,[FileNum]
,[ThirdPart]
,[ThPartSol]
,[Value]
,[Undertaking]
,[LastAct]
,[LastActType]
,[LastActWho]
,[StatuteLimits]
,[Status]
,[Section68]
,[FNL_Date]
,[FNL_Name]
,[FNL_Address]
,[FNL_Fees]
,[FNL_Outlay]
,[FNL_VAT]
,[FNL_Total]
,[OldRef]
,@NewClientMatterCode AS [PCODE]
,[PFECODE]
,[User1]
,[User2]
,[User3]
,[DepositName]
,[DepositType]
,[TimeBal]
,[ChargeBal]
,[YourRef]
,[CurDebtBal]
,[CurOutlayBal]
,[CurClientBal]
,[CurClientCBal]
,[CurClientDBal]
,[CurDebtBalFwd]
,[CurOutlayBalFwd]
,[CurClientBalFwd]
,[CurClientCBalFwd]
,[CurClientDBalFwd]
,[CurPendingBal]
,[Unallocated]
,[Statements]
,[ChargeLevel]
,[FileColour]
,[OpenInvoiceNo]
,[Password]
,[CompBillOnOff]
,[CompFrequency]
,[CompOutlayLimit]
,[CompFeesLimit]
,[CompTotalLimit]
,[CompBillingMatter]
,[CompBilling]
,[ClientName]
,[ClientAddress]
,[ClientSalutation]
,[ChargeArrangement]
,[Importance]
,[OriginalDebt]
,[DebtCollected]
,[RecoverableCosts]
,[DebtInterest]
,[BillingMethod]
,[CollectingBalance]
,[Publish]
,[Permissions]
,[ChargeOutRateInd]
,[OUTFileNo]
,[OrgClosedDate]
,[ReOpenedDate]
,[FixedFee]
,[ShowCommentInAlarm]
,[OtherRef]
,[Location]
,[DestroyDate]
,'N' AS [Closed]
,NULL AS [ClosingDate]
,NULL AS [CloseDate]
,[DepositAC1]
,[DepositAC2]
,[DepositAC3]
,[ArchiveDate]
,[ArchiveLocation]
,[SetupYear]
,[SetupPeriod]
,[OldNew]
,[ClientBankAc]
,[OfficeBankAc]
,[FileManagerFileNumber]
,[ItemCode]
,[BoxNumber]
,[BillingFE]
,[EstFeeIndicator]
,[DestroyedBy]
,[FileBarCodeNo]
,[BoxBarCodeNo]
,[ActualDestroyDate]
,[NoWinNoFee]
,[FeeType]
FROM
[dbo].[matters]
WHERE
[Code]=@Code
--CLOSE EXISTING CLIENT MATTER CODE
UPDATE [dbo].[matters]
SET
[Description] = ('Moved to NEW Matter: '+@NewClientMatterCode),
[Comment] = ([Comment] +'Moved to NEW Matter: '+@NewClientMatterCode),
[Closed] = 'Y',
[ClosingDate] = GETUTCDATE(),
[CloseDate] = GETUTCDATE()
WHERE
[Code]=@Code
--UPDATE OPEN MATTER COUNTS FOR PREVIOUS CLIENT
UPDATE [dbo].[Contacts]
SET
[OpenMatters] = (SELECT COUNT(1)
FROM [dbo].[matters]
WHERE [ClientCode]=@PreviousClientCode
AND [Closed]='N')
WHERE
[Code] = @PreviousClientCode
--UPDATE OPEN MATTER COUNTS FOR NEW CLIENT
UPDATE [dbo].[Contacts]
SET
[OpenMatters] = (SELECT COUNT(1)
FROM [dbo].[matters]
WHERE [ClientCode]=@ClientCode
AND [Closed]='N')
WHERE
[Code] = @ClientCode
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetSAM_MatterClosable'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAM_MatterClosable]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAM_MatterClosable]
(@MATTER VARCHAR(20))
AS
/*******************************************************************************************************
* check SAM Matter closable or not *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAM_MatterClosable] *
* *
* Modification History : *
* 2022-01-21 Vinodhkumar.M Duplication from SP-> ky_NETPMatterClosable *
*******************************************************************************************************/
BEGIN
DECLARE @AlreadyClosed INT
DECLARE @HasOutstandingRec INT
DECLARE @HasOutstandingBal INT
DECLARE @HasOutstandingTimeBal INT
DECLARE @HasOutstandingChargeBal INT
DECLARE @HasOutstandingDiary INT
DECLARE @HasOutstandingUndertakings INT
DECLARE @HasUnallocatedReceipts BIT
DECLARE @CheckUnallocatedReceipts BIT
DECLARE @HasDraftBills BIT
DECLARE @CheckDraftBillsClosingMatter BIT
DECLARE @IsSAM4 bit
SELECT @CheckDraftBillsClosingMatter = CASE WHEN [SET].[KeyName] = 'CheckDraftBillsClosingMatter'
AND [SET].[KeyValue] = 'True'
THEN 1
ELSE ISNULL(@CheckDraftBillsClosingMatter, 0) END,
@CheckUnallocatedReceipts = CASE WHEN [SET].[KeyName] = 'CheckUnallocatedReceipts'
AND [SET].[KeyValue] = 'True'
THEN 1
ELSE ISNULL(@CheckUnallocatedReceipts, 0) END
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] IN ('CheckDraftBillsClosingMatter', 'CheckUnallocatedReceipts')
SET @IsSAM4 = [dbo].[ISSAM4]()
-- Please see also: ky_NETCaseSummaryPageLoad. If you change any of these calculations,
-- ensure the ones in there are changed as well.
-- ky_NETTLFetchTimeEntry. If you change any of these calculations,
-- ensure the ones in there are changed as well.
DECLARE @TimeBal INT
DECLARE @ChargeBal DECIMAL(19, 2)
DECLARE @TotalCharge Decimal(19, 2)
DECLARE @TotalTime INT
DECLARE @TimeEntryTotalCharge DECIMAL(19, 2)
DECLARE @TimeEntryTotalTime INT
SELECT @TimeEntryTotalCharge = ISNULL(SUM(ISNULL(TIE.[Charge], 0)), 0),
@TimeEntryTotalTime = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0),
@TotalCharge = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N'
THEN 0
ELSE ISNULL(TIE.[Charge], 0) END), 0),
@ChargeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N'
THEN 0
WHEN [TIE].[IncludeInBill] = 2
THEN 0
WHEN @IsSAM4 = 1
AND ISNULL(TIE.[InvoiceNo], 0) <> 0
THEN 0
WHEN @IsSAM4 = 1
THEN ISNULL(TIE.[Charge], 0)
ELSE ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0) END), 0),
@TimeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N'
THEN 0
WHEN [TIE].[IncludeInBill] = 2
THEN 0
WHEN @IsSAM4 = 1
AND ISNULL(TIE.[InvoiceNo], 0) <> 0
THEN 0
WHEN @IsSAM4 = 0
THEN CASE WHEN TIE.[Charge] = 0
THEN 0
ELSE CONVERT(INT,
FLOOR(CONVERT(DECIMAL(18, 2), TIE.[TIME])
* ( (TIE.[Charge] - TIE.[BilledAmount])
/
TIE.[Charge]))) END
ELSE ISNULL(TIE.[Time], 0) END), 0),
@TotalTime = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N'
THEN 0
ELSE ISNULL(TIE.[Time], 0) END), 0)
FROM [dbo].[TimeEntry] TIE
WHERE TIE.[Matter] = @MATTER
AND ( (TIE.[TimeOrCharge] = 'T')
OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun
DECLARE @DebtBal DECIMAL(19, 2)
DECLARE @OutlayBal DECIMAL(19, 2)
DECLARE @DebtBalDate DATETIME
DECLARE @OutlayBalDate DATETIME
DECLARE @ClientCurrent DECIMAL(19, 2)
DECLARE @ClientDeposit DECIMAL(19, 2)
DECLARE @NCOMMAND NVARCHAR(MAX)
-- To ensure SAM3 will retrieve these from [dbo].[matters]
SET @DebtBal = 0
SET @OutlayBal = 0
SET @ClientCurrent = 0
SET @ClientDeposit = 0
IF @IsSAM4 = 1
BEGIN
SET @NCOMMAND = N'
SELECT @DebtBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[DebtorsValue], 0)), 0)),
@DebtBalDate = MAX(CASE WHEN ISNULL(TRN.[DebtorsValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END),
@OutlayBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[OutlayValue], 0)), 0)),
@OutlayBalDate = MAX(CASE WHEN ISNULL(TRN.[OutlayValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END),
@ClientCurrent = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientCurrent], 0)), 0)),
@ClientDeposit = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientDeposit], 0)), 0))
FROM [dbo].[Transactions] TRN
WHERE TRN.[MatterCode] = @MATTER
AND TRN.[Posted] = ''Y''
AND TRN.[RecType] <> ''V''
AND TRN.[CorrectionInd] = ''L'''
EXECUTE sp_executesql @NCOMMAND,
N'@MATTER VARCHAR(20),
@DebtBal DECIMAL(19, 2) OUTPUT,
@DebtBalDate DATETIME OUTPUT,
@OutlayBal DECIMAL(19, 2) OUTPUT,
@OutlayBalDate DATETIME OUTPUT,
@ClientCurrent DECIMAL(19, 2) OUTPUT,
@ClientDeposit DECIMAL(19, 2) OUTPUT',
@MATTER = @MATTER,
@DebtBal = @DebtBal OUTPUT,
@DebtBalDate = @DebtBalDate OUTPUT,
@OutlayBal = @OutlayBal OUTPUT,
@OutlayBalDate = @OutlayBalDate OUTPUT,
@ClientCurrent = @ClientCurrent OUTPUT,
@ClientDeposit = @ClientDeposit OUTPUT
END
SELECT @AlreadyClosed = CASE WHEN MAT.[Closed] = 'Y' THEN 1 ELSE 0 END,
@HasOutstandingBal = CASE WHEN @DebtBal <> 0
THEN 1
WHEN ISNULL(MAT.[DebtBal], 0) <> 0
THEN 1
WHEN @OutlayBal <> 0
THEN 1
WHEN ISNULL(MAT.[OutlayBal], 0) <> 0
THEN 1
WHEN ISNULL(MAT.[ClientBal], 0) <> 0 --No need to check @ClientCurBal + @ClientDepBal
THEN 1
WHEN @ClientCurrent <> 0
THEN 1
WHEN ISNULL(MAT.[ClientCurBal], 0) <> 0
THEN 1
WHEN @ClientDeposit <> 0
THEN 1
WHEN ISNULL(MAT.[ClientDepBal], 0) <> 0
THEN 1
ELSE 0 END,
@HasOutstandingTimeBal = CASE WHEN @TimeBal <> 0 THEN 1 ELSE 0 END,
@HasOutstandingChargeBal = CASE WHEN @ChargeBal <> 0 THEN 1 ELSE 0 END
FROM [dbo].[matters] MAT
WHERE MAT.[Code] = @MATTER
SET @AlreadyClosed = ISNULL(@AlreadyClosed, 0)
SET @HasOutstandingBal = ISNULL(@HasOutstandingBal, 0)
SET @HasOutstandingTimeBal = ISNULL(@HasOutstandingTimeBal, 0)
SET @HasOutstandingChargeBal = ISNULL(@HasOutstandingChargeBal, 0)
DECLARE @YEAR INT
IF @IsSAM4 = 0
BEGIN
SET @NCOMMAND = N'SELECT @YEAR = ISNULL(CTL.[YEAR], DATEPART(YEAR, GetDate()))
FROM [dbo].[Control] CTL
IF (@YEAR IS NULL)
BEGIN
SET @YEAR = DATEPART(YEAR, GetDate())
END'
END
ELSE
BEGIN
SET @NCOMMAND = N'SELECT @YEAR = ISNULL(CONVERT(INT, CTL.[NumValue]), DATEPART(YEAR, GetDate()))
FROM [dbo].[CtrlNum] CTL
WHERE CTL.[Code] = ''CurYear''
IF (@YEAR IS NULL)
BEGIN
SET @YEAR = DATEPART(YEAR, GetDate())
END'
END
EXEC sp_executesql @NCOMMAND, N'@YEAR INT OUTPUT', @YEAR OUTPUT
IF @IsSAM4 = 0
BEGIN
SET @NCOMMAND = N'SELECT @HasOutstandingRec = CASE COUNT(1) WHEN 0 THEN 0 ELSE 1 END
FROM [dbo].[MatterLedger] MAL
INNER JOIN [dbo].[BatchH] BH
INNER JOIN [dbo].[BankRecHistory] BHS
ON BHS.[BANKAC] = BH.[CODE]
ON BH.[BATCHNO] = MAL.[BATCHNO]
AND BH.[RECNO] <= 0
AND BH.[TYPE] IN (''P'', ''R'', ''T'')
WHERE MAL.[MATTER] = @MATTER
AND MAL.[YEAR] = @YEAR
AND MAL.[REF] <> ''EUROADJ''
SET @HasOutstandingRec = ISNULL(@HasOutstandingRec, 0)'
END
ELSE
BEGIN
SET @NCOMMAND = N'SELECT @HasOutstandingRec = CASE COUNT(1) WHEN 0 THEN 0 ELSE 1 END
FROM [dbo].[Transactions] TRN
WHERE TRN.[MatterCode] = @MATTER
AND TRN.[Posted] = ''Y''
AND TRN.[RecType] <> ''V''
AND ( TRN.[CorrectionInd] = ''L''
OR TRN.[CorrectionInd] = ''C'')
AND TRN.[PostingYear] = @YEAR
AND TRN.[Reconciliation] <= 0
SET @HasOutstandingRec = ISNULL(@HasOutstandingRec, 0)'
END
EXEC sp_executesql @NCOMMAND, N'@MATTER VARCHAR(20), @YEAR INT, @HasOutstandingRec INT OUTPUT', @MATTER, @YEAR, @HasOutstandingRec OUTPUT
IF @CheckUnallocatedReceipts = 1
BEGIN
IF @IsSAM4 = 0
BEGIN
SET @NCOMMAND = N'SELECT @HasUnallocatedReceipts =
CASE WHEN COUNT(1) = 0
THEN CONVERT(BIT, 0)
ELSE CONVERT(BIT, 1) END
FROM [dbo].[DebtorsLedger] [DL]
WHERE [DL].[MATTER] = @MATTER
AND [DL].[TYPE] = ''R''
AND [DL].[OSVALUE] <> 0'
END
ELSE
BEGIN
SET @NCOMMAND = N'SELECT @HasUnallocatedReceipts =
CASE WHEN COUNT(1) = 0
THEN CONVERT(BIT, 0)
ELSE CONVERT(BIT, 1) END
FROM [dbo].[DebtorsLedger] [DL]
WHERE [DL].[MatterCode] = @MATTER
AND [DL].[RecType] = ''R''
AND [DL].[OSValue] <> 0'
END
EXEC sp_executesql @NCOMMAND, N'@MATTER VARCHAR(20), @HasUnallocatedReceipts INT OUTPUT', @MATTER, @HasUnallocatedReceipts OUTPUT
END
ELSE
BEGIN
SET @HasUnallocatedReceipts = 0
END
IF @CheckDraftBillsClosingMatter = 1
BEGIN
IF @IsSAM4 = 0
BEGIN
SET @NCOMMAND = N'SELECT @HasDraftBills = CASE WHEN COUNT(1) > 0 THEN 1 ELSE 0 END
FROM [dbo].[BillHeader] AS [BH]
WHERE [BH].[MATTER] = @MATTER
AND [BH].[BILLNO] = 0'
END
ELSE
BEGIN
SET @NCOMMAND = N'SELECT @HasDraftBills = CASE WHEN COUNT(1) > 0 THEN 1 ELSE 0 END
FROM [dbo].[Billhead] AS [BH]
WHERE [BH].[MatterCode] = @MATTER
AND [BH].[InvoiceNo] = 0'
END
EXEC sp_executesql @NCOMMAND, N'@MATTER VARCHAR(20), @HasDraftBills BIT OUTPUT', @MATTER, @HasDraftBills OUTPUT
END
ELSE
BEGIN
SET @HasDraftBills = 0
END
SELECT @HasOutstandingDiary = CASE WHEN COUNT(1) = 0 THEN 0 ELSE 1 END
FROM [dbo].[diary] DIA
WHERE DIA.[CASECODE] = @MATTER
AND DIA.[STATUS] <> 1
SELECT @HasOutstandingUndertakings = CASE WHEN COUNT(1) = 0 THEN 0 ELSE 1 END
FROM [dbo].[Undertakings] UND
WHERE UND.[MATTER] = @MATTER
AND UND.[DISCHARGEDATE] IS NULL
SELECT @AlreadyClosed AS [AlreadyClosed],
@HasOutstandingBal AS [HasOutstandingBal],
@HasOutstandingTimeBal AS [HasOutstandingTimeBal],
@HasOutstandingChargeBal AS [HasOutstandingChargeBal],
@HasOutstandingRec AS [HasOutstandingRec],
@HasOutstandingDiary AS [HasOutstandingDiary],
@HasOutstandingUndertakings AS [HasOutstandingUndertakings],
@HasUnallocatedReceipts AS [HasUnallocatedReceipts],
@HasDraftBills AS [HasDraftBills]
END
GO
IF OBJECT_ID(N'KAAS_GetSettingsDetails',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSettingsDetails]
GO
CREATE PROCEDURE [dbo].[KAAS_GetSettingsDetails]
(
@mode VARCHAR(6) = ''
)
AS
/*******************************************************************************************************
* [dbo].[KAAS_GetSettingsDetails] *
* Description: Used to get EFT status from system options *
* Modification History: *
* 2021-05-19 Natarajan S Created *
* 2021-05-26 Balamurugan C Modified-Added EFT Alert Details *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
* 2022-11-04 Ghayathri.S.V Modified - Removed select statement to fetch EFT Default On *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
IF(@mode='SELECT')
BEGIN
/*EFT Alert Setting*/
SELECT [EFTYN]
FROM [dbo].[EFTDetails]
END
IF(@mode='UPDATE')
BEGIN
/*UPDATE EFT ALERT STATUS*/
UPDATE [dbo].[EFTDetails]
SET [EFTYN]='Y'
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSupplierLedgerAllocations', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSupplierLedgerAllocations]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSupplierLedgerAllocations] (@RecordID INT)
AS
/********************************************************************************************************
* Returns a list of allocations for the specified supplier ledger record *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSupplierLedgerAllocations] *
* *
* Modification History: *
* 2021-07-05 Natarajan S Created *
* 2021-07-07 Natarajan S Modified Added record id *
* 2021-07-09 Natarajan S Modified changed column record id to KeyId,added PRef *
* 2022-01-07 Vinodhkumar.M Modified Pref,Against Date Added as a Param,Allocation Table *
* inner join with supplier ledger is removed *
* 2024-02-15 John Ginnane #17689 - Refactored and renamed the procedure *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT ISNULL(LTRIM(RTRIM([SUP].[CODE])), '') AS [SupplierCode],
ISNULL(LTRIM(RTRIM([SUP].[NAME])), '') AS [SupplierName],
ISNULL(LTRIM(RTRIM([SPL].[TYPE])), '') AS [Type],
[SPL].[DATE] AS [Date],
ISNULL(LTRIM(RTRIM([SPL].[REF])), '') AS [Ref],
ISNULL([SPL].[BATCHNO], 0) AS [BatchNo],
ISNULL([SPL].[PREF], 0) AS [Pref],
ISNULL(LTRIM(RTRIM([SPL].[NARR])), '') AS [Narrative],
ISNULL([SPL].[ORIGINAL], 0) AS [Original],
ISNULL([SPL].[OSVALUE], 0) AS [OSValue],
[SPL].[ENTRYDATE] AS [EntryDate],
ISNULL(LTRIM(RTRIM([SPL].[Matter])), '') AS [Matter],
ISNULL([SPL].[RECORDID], 0) AS [RecordID]
FROM [dbo].[SupplierLedger] AS [SPL]
LEFT OUTER JOIN [dbo].[Suppliers] AS [SUP]
ON [SUP].[CODE] = [SPL].[SUPP]
WHERE [SPL].[RECORDID] = @RecordID
SELECT ISNULL([ALO].[BATCHNO], 0) AS [BatchNo],
ISNULL([ALO].[PREF], 0) AS [Pref],
[ALO].[DATE] AS [AllocationDate],
[SPL].[DATE] AS [TransactionDate],
ISNULL([ALO].[ABATCHNO], 0) AS [ABatchNo],
ISNULL([ALO].[OPREF], 0) AS [OPref],
ISNULL(LTRIM(RTRIM([ALO].[OREF])), '') AS [ORef],
ISNULL([ALO].[VALUE], 0) AS [Value],
ISNULL(LTRIM(RTRIM([ALO].[USERCODE])), '') AS [UserCode],
ISNULL([ALO].[AllNo], 0) AS [AllNo],
ISNULL([ALO].[KEYID], 0) AS [KeyID]
FROM [dbo].[SupplierLedger] AS [SPL]
INNER JOIN [dbo].[Allocations] AS [ALO]
ON [SPL].[BATCHNO] = [ALO].[BATCHNO]
AND [SPL].[PREF] = [ALO].[PREF]
WHERE [SPL].[RECORDID] = @RecordID
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_GetSupplierLedgerDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSupplierLedgerDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetSupplierLedgerDetails] (
@PageNumber INT = 1,
@PageSize INT = 100,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'Supp',
@SortOrder VARCHAR(100) = 'ASC',
@Code VARCHAR(10) = '',
@Flag VARCHAR(15) = '')
AS
/********************************************************************************************************
* Fetches the Supplier Ledger details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSupplierLedgerDetails] *
* *
* Modification History: *
* 2021-06-30 Natarajan S Created *
* 2021-12-29 Balamurugan C Modified - Added Third Party Balance column in supplier list *
* 2021-12-30 Vinodhkumar.M Modified - Added Matter column in supplier Ledger, *
* balance in Supplier *
* 2022-07-21 Ghayathri.S.V Modified - To implement dynamic sql query to fetch sort *
* and search datas and fetch debtor ledger balances *
* 2024-02-09 John Ginnane Renamed two columns to fix bug as part of #17689 *
* 2024-06-21 Ghayathri.S.V Modified - To fetch the sum of oustanding balance
for a code *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON
/*Supplier LIST*/
IF @Flag = 'SUPPLIERLIST'
BEGIN
SELECT [SUP].[CODE] AS [Code],
[SUP].[NAME] AS [Name],
[SUP].[TPBAL] AS [ThirdPartyBalance],
[SUP].[BALANCE] AS [Balance]
FROM [dbo].[Suppliers] AS [SUP]
ORDER BY [SUP].[CODE]
END
/*GRID DETAILS FROM SUPPLIER LEDGER*/
IF @Flag = 'SUPPLIERLEDGER'
BEGIN
DECLARE @sql NVARCHAR(MAX)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber - 1)
SET @sql = 'SELECT ISNULL(LTRIM(RTRIM([SPL].[SUPP])), '''') AS [SupplierCode],
ISNULL(LTRIM(RTRIM([SUP].[NAME])), '''') AS [SupplierName],
ISNULL(LTRIM(RTRIM([SPL].[TYPE])), '''') AS [Type],
[SPL].[DATE] AS [Date],
ISNULL(LTRIM(RTRIM([SPL].[REF])), '''') AS [Ref],
ISNULL([SPL].[BATCHNO], 0) AS [BatchNo],
ISNULL([SPL].[PREF], 0) AS [Pref],
ISNULL(LTRIM(RTRIM([SPL].[NARR])), '''') AS [Narrative],
ISNULL([SPL].[ORIGINAL], 0) AS [Original],
ISNULL([SPL].[OSVALUE], 0) AS [OSValue],
[SPL].[ENTRYDATE] AS [EntryDate],
ISNULL(LTRIM(RTRIM([SPL].[MATTER])), '''') AS [Matter],
ISNULL([SPL].[RECORDID], 0) AS [RecordID]
FROM [dbo].[SupplierLedger] AS [SPL]
LEFT OUTER JOIN [dbo].[Suppliers] AS [SUP]
ON [SUP].[CODE] = [SPL].[SUPP]
WHERE [SPL].[SUPP] = ''' + @Code + '''' +
'AND ([SPL].[PREF] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [SPL].[DATE] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [SPL].[RECORDID] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [SPL].[REF] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [SPL].[NARR] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [SPL].[SUPP] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [SPL].[BATCHNO] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [SPL].[YEAR] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR [SPL].[MATTER] LIKE ' + '''%' + @SearchString + '%' + '''' + ')
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY'
EXEC sp_executesql @sql
SELECT COUNT(*) AS [TotalRecord]
FROM [dbo].[SupplierLedger] AS [SPL]
WHERE [SPL].[SUPP] = @Code
AND ([SPL].[PREF] LIKE '%' + @SearchString + '%'
OR [SPL].[DATE] LIKE '%' + @SearchString + '%'
OR [SPL].[RECORDID] LIKE '%' + @SearchString + '%'
OR [SPL].[REF] LIKE '%' + @SearchString + '%'
OR [SPL].[NARR] LIKE '%' + @SearchString + '%'
OR [SPL].[SUPP] LIKE '%' + @SearchString + '%'
OR [SPL].[BATCHNO] LIKE '%' + @SearchString + '%'
OR [SPL].[YEAR] LIKE '%' + @SearchString + '%'
OR [SPL].[MATTER] LIKE '%' + @SearchString + '%')
SELECT ISNULL(SUM(OSVALUE),0) AS [TotalOsValue]
FROM [dbo].[SupplierLedger] AS [SPL]
WHERE [SPL].[SUPP] = @Code
END
END
GO
IF OBJECT_ID(N'KAAS_GetThirdPartyLedgerDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetThirdPartyLedgerDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetThirdPartyLedgerDetails]
(
@SuppCode VARCHAR(10)='',
@Year INT
)
AS
/*******************************************************************************************************
* Fetches the Third party ledger details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetThirdPartyLedgerDetails] *
* SAMPLE DATA [KAAS_GetThirdPartyLedgerDetails] 'BRADY','2018' * *
* Modification History: *
* 2021-07-02 Natarajan S Created
* 2022-03-14 Ghayathri.S.V Modified where conditiond to fetch Tax No and Service details *
*******************************************************************************************************/
BEGIN
SELECT
[BAT].[BatchNo],
[BAT].[Type],
[BAT].[Code],
[BAT].[Pref],
[BAT].[Ref],
[BAT].[Date],
[BAT].[Matter],
[BAT].[Supp],
[BAT].[Narr],
[BAT].[Value],
[BAT].[Posted],
[BAT].[PerNo],
[BAT].[Year],
[BAT].[EntryDate],
[BAT].[RecNo],
[BAT].[ChequeReqNo],
[SUP].[TaxNo],
[SUP].[ServiceCode]
FROM
[dbo].[BatchH] [BAT]
INNER JOIN
[dbo].[Suppliers] [SUP]
ON
[BAT].[Supp] = [SUP].[Code]
WHERE [BAT].[Supp] = @SuppCode
AND [BAT].[Year] = @Year
AND [BAT].[ThirdParty] = 'Y'
ORDER BY
[BAT].[Supp] ASC
END
GO
IF EXISTS
(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KAAS_GetVATCodes]') AND type in (N'P', N'PC'))
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetVATCodes]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetVATCodes]
AS
/*******************************************************************************************************
* Fetches the list of VAT codes *
* *
* Stored Procedure Name : [dbo].[KAAS_GetVATCodes] *
* *
* Modification History: *
* 2021-03-23 Revathy D Created *
* 2024-01-19 Ghayathri.S.V Updated the select to fetch only unretired VAT codes in Invoice *
* 2024-12-05 Ponni M Returns the extra field 'Comments' *
*******************************************************************************************************/
BEGIN
SELECT
VAC.[CODE] AS Vat,
VAC.[RATE] AS Rate ,
VAC.[Comments] As Comments
FROM [dbo].[VATCodes] VAC
WHERE VAC.RETIRED <> 'Y'
ORDER BY
VAC.[CODE] ASC
END
GO
IF EXISTS(SELECT
TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetWorkTypeGroupDropdownList'
AND SO.[type] = 'P'
)
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetWorkTypeGroupDropdownList]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetWorkTypeGroupDropdownList]
AS
/*******************************************************************************************************
* Fetches dropdown list values for worktype group *
* *
* Stored Procedure Name : [dbo].[KAAS_GetWorkTypeGroupDropdownList] *
* *
* Modification History: *
* 09 Aug 2021 Natarajan S Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [Code],
[Description]
FROM [dbo].[WorkTypes]
WHERE [Retired]='N'
SELECT RIGHT(100+[WorkGroup],2) AS [WorkGroup],
[GroupOrder],
[Description]
FROM [WorkGroup1]
SELECT [WorkGroup2] AS [WorkGroup2],
[description2] AS [Description]
FROM [dbo].[WorkGroup2]
SET NOCOUNT OFF
END
GO
IF EXISTS(SELECT
TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetWorkTypeGroupList'
AND SO.[type] = 'P'
)
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetWorkTypeGroupList]
END
GO
CREATE PROCEDURE [dbo].[KAAS_GetWorkTypeGroupList] (
@GroupType VARCHAR(30))
AS
/*******************************************************************************************************
* Fetches the work group type *
* *
* Stored Procedure Name : [dbo].[KAAS_GetWorkTypeGroupList] 'typeOfWork1' *
* *
* Modification History: *
* 05 Aug 2021 Natarajan S Created *
* 2023-10-19 Vignesh M Modified Removed Extra white space in Nominal Reporting Seq *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF(@GroupType = 'typeOfWorkGroup')
BEGIN
SELECT [WTG].[RecordID] AS [RecordID],
[WTG].[WorkType] AS [WorkType],
LTRIM(RTRIM([WTS].[Desc])) AS [WorkTypeDescription],
RIGHT(100 + [WTG].[Group1],2) AS [Group1],
LTRIM(RTRIM([WG1].[Description])) AS [G1Description],
[WTG].[Group2] AS [Group2],
LTRIM(RTRIM([WG2].[Description2])) AS [G2Description]
FROM [dbo].[WorkTypeGroupings] [WTG]
LEFT JOIN [dbo].[WorkGroup2] [WG2]
ON [WTG].[Group2] = [WG2].[WorkGroup2]
LEFT JOIN [dbo].[WorkGroup1] [WG1]
ON [WTG].[Group1] = [WG1].[WorkGroup]
LEFT JOIN [dbo].[WorkTypes] [WTS]
ON [WTG].[WorkType] = [WTS].[Code]
END
IF(@GroupType = 'typeOfWork1')
BEGIN
SELECT [WorkGroup] [Group],
[GroupOrder] [GroupOrder],
LTRIM(RTRIM([Description])) [Description]
FROM [dbo].[WorkGroup1]
END
IF(@GroupType = 'typeOfWork2')
BEGIN
SELECT [WorkGroup2] [Group],
LTRIM(RTRIM([Description2])) [Description]
FROM [dbo].[WorkGroup2]
END
SET NOCOUNT OFF
END
GO
IF EXISTS
(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KAAS_GetWorkTypes]') AND type in (N'P', N'PC'))
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetWorkTypes]
END
GO
/****** Object: StoredProcedure [dbo].[KAAS_GetWorkTypes] Script Date: 11-06-2021 17:46:11 ******/
CREATE PROCEDURE [dbo].[KAAS_GetWorkTypes]
(
@Code varchar(20)
)
AS
/*******************************************************************************************************
* Fetches Work Types Masters *
* *
* Stored Procedure Name : [dbo].[KAAS_GetWorkTypes] 'ACC' *
* *
* Modification History: *
* 11 June 2021 Natarajan S Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF(@Code <> '0')
BEGIN
SELECT
[Code] AS [Code],
[Description] AS [Description],
[Retired] AS [Retired]
FROM
[dbo].[WorkTypes]
WHERE
CODE = @Code
END
ELSE
BEGIN
SELECT
[Code] AS [Code],
[Description] AS [Description],
[Retired] AS [Retired]
FROM
[dbo].[WorkTypes]
END
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_Get_ReportId', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_Get_ReportId]
END
GO
CREATE PROCEDURE [dbo].[KAAS_Get_ReportId]
(
@FileName VARCHAR(500)
)
AS
/*******************************************************************************************************
* This SP used to Fetch report Id *
* *
* Stored Procedure Name : [dbo].[KAAS_Get_ReportId] *
* *
* Modification History: *
* 16 July 2021 Revathy D Created
* 15 February 2024 Nithyanandham.m Modified Change table name from CRReport to Kaas_CRReport *
* 17 April 2024 Revathy D Modified Added a column 'ReportNameKey' *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
[CRR].[Reportid] As [ReportId],
[CRR].[filename] As [FileName],
[CRR].[name] As [ReportName]
FROM
[dbo].[Kaas_CRReport] CRR
WHERE
[CRR].[ReportNameKey] = @FileName
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_ImportDNDSearchBill', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_ImportDNDSearchBill]
END
GO
CREATE PROCEDURE [dbo].[KAAS_ImportDNDSearchBill] (
@MATTERCODE VARCHAR(20),
@HANDLERCODE VARCHAR(10),
@XML NVARCHAR(MAX))
AS
/*************************************************************************************************************
* *
* [dbo].[KAAS_ImportDNDSearchBill] *
* *
* Performs a synchronisation of data that are either deferred to the night-time (e.g. HandlerNames) *
* or data that have become out of sync due to anything unexpected such as a software crash *
* - this will cover the likes of DiaryAttachments v. DiaryAttachmentSelector *
* *
* Compatibility information - PLEASE update older versions if necessary to ensure the compatible software *
* remains fully functional *
* ***************************************************************************************************** *
* * * *
* * Supersedes: - * *
* * First compatible version: 5.8.1.18 * *
* * Last compatible software version: - * *
* * Superseded by: - * *
* * * *
* ***************************************************************************************************** *
* *
* Modification History *
* 2023-11-27 John Ginnane Created *
* 2024-02-26 Vignesh M Modified - Restricted duplicate entries *
* 2024-02-27 Vignesh M Modified - Batchno returned after batch is created *
* *
*************************************************************************************************************/
BEGIN
SET NOCOUNT ON;
SET QUOTED_IDENTIFIER ON;
SET DATEFORMAT dmy;
DECLARE @AUTOPOST BIT
DECLARE @DEFAULTSUPPLIER VARCHAR(10)
DECLARE @DEFAULTOUTLAYCODE VARCHAR(10)
DECLARE @TODAY DATETIME
DECLARE @YEAR INT
DECLARE @PERIOD INT
DECLARE @PERIODEND DATETIME
DECLARE @EICONVERT DECIMAL(9, 6)
DECLARE @OUTLAY VARCHAR(10)
DECLARE @idoc INT
DECLARE @UseBranches BIT
DECLARE @Branch VARCHAR(10)
SELECT @YEAR = [CON].[YEAR],
@PERIOD = [CON].[CURPER],
@PERIODEND = DATEADD(DAY, [CON].[PERIODEND], '18001228'),
@EICONVERT = 0.787564, -- This is hard coded in clarion code
@OUTLAY = [CON].[OUTLAY],
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0),
@UseBranches = CASE WHEN ISNULL([CON].[INDICATOR22], '') = 'Y'
THEN 1
ELSE 0 END
FROM [dbo].[control] AS [CON]
SELECT @PERIODEND = ISNULL(@PERIODEND, @TODAY),
@YEAR = ISNULL(@YEAR, YEAR(@TODAY)),
@PERIOD = ISNULL(@PERIOD, MONTH(@PERIOD))
SELECT @AUTOPOST = CASE WHEN [SET].[KeyName] = 'DNDSearchBillAutoPost'
AND ISNULL([SET].[KeyValue], '') IN ('Y', 'true', '1')
THEN 1
ELSE ISNULL(@AUTOPOST, 0) END,
@DEFAULTSUPPLIER = CASE WHEN [SET].[KeyName] = 'DNDSearchBillDefaultSupplier'
THEN ISNULL([SET].[KeyValue], '')
ELSE ISNULL(@DEFAULTSUPPLIER, '') END,
@DEFAULTOUTLAYCODE = CASE WHEN [SET].[KeyName] = 'DNDSearchBillDefaultOutlayCode'
THEN ISNULL([SET].[KeyValue], '')
ELSE ISNULL(@DEFAULTOUTLAYCODE, '') END
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] = 'DNDSearchBillAutoPost'
OR [SET].[KeyName] = 'DNDSearchBillDefaultSupplier'
OR [SET].[KeyName] = 'DNDSearchBillDefaultOutlayCode'
IF ISNULL(@UseBranches, 0) = 1
BEGIN
SELECT @Branch = ISNULL([MAT].[Branch], '')
FROM [dbo].[matters] AS [MAT]
WHERE [MAT].[Code] = @MATTERCODE
END
ELSE
BEGIN
SET @Branch = ''
END
DECLARE @HEADERS TABLE (
[id] INT IDENTITY(1, 1) PRIMARY KEY,
[BatchNo] INT DEFAULT(0),
[PostRef] INT DEFAULT(0),
[Batch] INT,
[TransactionType] VARCHAR(1),
[Code] VARCHAR(10),
[Branch] VARCHAR(10),
[Ref] VARCHAR(10),
[Date] DATETIME,
[Fee] VARCHAR(10),
[Matter] VARCHAR(20),
[Supp] VARCHAR(10),
[Narr] VARCHAR(100),
[ClientAc] VARCHAR(1),
[UserCode] VARCHAR(10),
[HandlerCode] VARCHAR(10),
[EntryDate] DATETIME,
[Value] DECIMAL(19, 2), -- Gross
[SubTotal] DECIMAL(19, 2), -- Also gross
[VATTotal] DECIMAL(19, 2), -- VAT
[Year] INT,
[Period] INT)
DECLARE @DETAILS TABLE (
[id] INT IDENTITY(1, 1) PRIMARY KEY,
[LineNo] INT,
[BatchNo] INT DEFAULT(0),
[PostRef] INT DEFAULT(0),
[Batch] INT,
[TransactionType] VARCHAR(1),
[LineType] VARCHAR(1),
[Code] VARCHAR(10),
[Ref] VARCHAR(10),
[Date] DATETIME,
[Fee] VARCHAR(10),
[Branch] VARCHAR(10),
[Narr] VARCHAR(100),
[Matter] VARCHAR(20),
[Supp] VARCHAR(10),
[Value] DECIMAL(19, 2), -- Net Value
[VATCode] VARCHAR(1),
[VATValue] DECIMAL(19, 2), -- VAT value
[OutlayCode] VARCHAR(10),
[ClientAc] VARCHAR(1),
[Deposit] VARCHAR(1))
BEGIN TRY
EXEC sp_xml_preparedocument @idoc OUTPUT, @XML
END TRY
BEGIN CATCH
EXEC sp_xml_preparedocument @idoc OUTPUT, ''
END CATCH
-- Make sure the XML file fits our expected format:
-- root node = "invoice"
-- node contains attributes:
-- 1. Date
-- 2. "InvoiceNo
-- node also contains one of these attributes:
-- 1. TotalONV
-- 2. TotalOWV
-- 3. TotalSWV
-- 4. TotalVAT
IF NOT EXISTS (SELECT TOP 1 1
FROM OPENXML(@idoc, 'invoice', 2)
WITH ([Date] VARCHAR(50) '@Date',
[InvoiceNo] VARCHAR(50) '@InvoiceNo',
[TotalONV] DECIMAL(19, 2) '@TotalONV', -- Total Outlay Non-VATable
[TotalOWV] DECIMAL(19, 2) '@TotalOWV', -- Total Outlay VATable (excl. VAT)
[TotalOverall] DECIMAL(19, 2) '@TotalOverall', -- Gross
[TotalSWV] DECIMAL(19, 2) '@TotalSWV', -- Services VATable (excl. VAT)
[TotalVAT] DECIMAL(19, 2) '@TotalVAT' -- Total VAT
) AS [XML]
WHERE [XML].[Date] IS NOT NULL
AND [XML].[InvoiceNo] IS NOT NULL
AND ([XML].[TotalONV] IS NOT NULL
OR [XML].[TotalOWV] IS NOT NULL
OR [XML].[TotalSWV] IS NOT NULL
OR [XML].[TotalVAT] IS NOT NULL))
BEGIN
RETURN
END
INSERT INTO @DETAILS (
[Batch],
[TransactionType],
[LineType],
[Code],
[Ref],
[Date],
[Fee],
[Branch],
[Narr],
[Matter],
[Supp],
[Value],
[VATCode],
[VATValue],
[OutlayCode],
[ClientAc],
[Deposit])
SELECT ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY [Date] ASC) AS [Batch],
'B' AS [Type],
'O' AS [LineType], -- OUTLAY column
ISNULL(@OUTLAY, '') AS [Code],
LEFT([XML].[InvoiceNo], 10) AS [Ref],
CASE WHEN [XML].[Date] LIKE '%[1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9]%'
THEN CONVERT(DATETIME, [XML].[Date], 112)
ELSE @TODAY END AS [Date],
'' AS [Fee],
@Branch AS [Branch],
'Bill from ' + ISNULL([SUP].[NAME], '') AS [Narrative],
ISNULL(@MATTERCODE, '') AS [Matter],
ISNULL(@DEFAULTSUPPLIER, '') AS [Supplier],
ISNULL([XML].[TotalONV], 0) + ISNULL([XML].[TotalOWV], 0) + ISNULL([XML].[TotalSWV], 0) + ISNULL([XML].[TotalVAT], 0) AS [Net],
'E' AS [VATCode], -- Hard code 'E' for exempt
0 AS [VAT], -- VAT from purchase bill is added to GROSS, and we don't claim it here
ISNULL(@DEFAULTOUTLAYCODE, '') AS [OutlayCode],
'N' AS [ClientAc],
'N' AS [Deposit]
FROM OPENXML(@idoc, 'invoice', 2)
WITH ([Date] VARCHAR(50) '@Date',
[InvoiceNo] VARCHAR(50) '@InvoiceNo',
[TotalONV] DECIMAL(19, 2) '@TotalONV', -- Total Outlay Non-VATable
[TotalOWV] DECIMAL(19, 2) '@TotalOWV', -- Total Outlay VATable (excl. VAT)
[TotalOverall] DECIMAL(19, 2) '@TotalOverall', -- Gross
[TotalSWV] DECIMAL(19, 2) '@TotalSWV', -- Services VATable (excl. VAT)
[TotalVAT] DECIMAL(19, 2) '@TotalVAT', -- Total VAT
[Total_Gross] DECIMAL(19, 2) '@Total_Gross', -- Gross (again?)
[Total_Net] DECIMAL(19, 2) '@Total_Net', -- Net (outlay non-VATable + outlay VATable + services?)
[Total_ONV] DECIMAL(19, 2) '@Total_ONV', -- Total Outlay Non-VATable (again?)
[Total_OWV] DECIMAL(19, 2) '@Total_OWV', -- Total Outlay VATable (excl. VAT) (again?)
[Total_SWV] DECIMAL(19, 2) '@Total_SWV', -- Total Services VATable (excl. VAT) (again?)
[Total_Vat] DECIMAL(19, 2) '@Total_Vat', -- Total VAT (again?)
[VATRate] DECIMAL(19, 2) '@VATRate' -- Need to try find a VAT code for this rate
) AS [XML]
LEFT OUTER JOIN [dbo].[VATCodes] AS [VAT]
ON [VAT].[RATE] = [XML].[VATRate]
LEFT OUTER JOIN [dbo].[Suppliers] AS [SUP]
ON [SUP].[CODE] = @DEFAULTSUPPLIER
INSERT INTO @HEADERS (
[Batch],
[TransactionType],
[Code],
[Branch],
[Ref],
[Date],
[Fee],
[Matter],
[Supp],
[Narr],
[ClientAc],
[UserCode],
[HandlerCode],
[EntryDate],
[Value],
[SubTotal],
[VATTotal])
SELECT [DET].[Batch] AS [Batch],
'B' AS [TransactionType],
'' AS [Code],
@Branch AS [Branch],
MIN([DET].[Ref]) AS [Reference],
MIN([DET].[Date]) AS [Date],
'' AS [Fee],
ISNULL(@MATTERCODE, '') AS [MatterCode],
ISNULL(@DEFAULTSUPPLIER, '') AS [Supplier],
MAX([DET].[Narr]) AS [Narrative],
'Y' AS [ClientAc],
'KEYHOUSE' AS [UserCode], -- We don't link handler code to clarion user, so hardcode KEYHOUSE
@HANDLERCODE AS [HandlerCode],
@TODAY AS [EntryDate],
SUM([DET].[Value]) AS [Value], -- Detail line already contains GROSS so don't add VAT again
SUM([DET].[Value]) AS [SubTotal],
SUM([DET].[VATValue]) AS [VATTotal]
FROM @DETAILS AS [DET]
GROUP BY [DET].[Batch]
EXEC sp_xml_removedocument @idoc
IF EXISTS (
SELECT TOP 1 1
FROM [BatchH] AS [BAT]
INNER JOIN @DETAILS AS [DET]
ON [BAT].[MATTER] = [DET].[Matter]
AND [BAT].[REF] = [DET].[Ref]
AND [BAT].[Supp] = @DEFAULTSUPPLIER
AND [BAT].[TYPE] = 'B')
BEGIN
SELECT '-1' [BatchNo]
RETURN
END
-- A lot of this code was taken from ky_NETImportTransactionXML
-- Fill in Line Numbers to help with error reporting
;WITH [CTE] ([Batch], [id], [LineNumber]) AS (
SELECT [DET].[Batch],
[DET].[id],
ROW_NUMBER() OVER (PARTITION BY [DET].[Batch]
ORDER BY [DET].[id] ASC)
FROM @DETAILS AS [DET])
UPDATE [DET]
SET [DET].[LineNo] = [CTE].[LineNumber]
FROM @DETAILS AS [DET]
INNER JOIN [CTE]
ON [DET].[id] = [CTE].[id]
-- Prepare batch and pref numbers
DECLARE @LastBatchNo INT
DECLARE @LastPostRef INT
SELECT @LastBatchNo = [T].[BATCHNO],
@LastPostRef = [T].[PREF],
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
FROM [dbo].[ky_NETTFGetLastBatchNoAndPostRef]() AS [T]
;WITH [CTE] ([id], [NewBatchNo], [NewPostRef]) AS (
SELECT [HED].[id],
@LastBatchNo + ROW_NUMBER() OVER (ORDER BY [HED].[Batch], [HED].[id]),
@LastPostRef + ROW_NUMBER() OVER (ORDER BY [HED].[Batch], [HED].[id])
FROM @HEADERS AS [HED])
UPDATE [HED]
SET [HED].[BatchNo] = [CTE].[NewBatchNo],
[HED].[PostRef] = [CTE].[NewPostRef]
FROM @HEADERS AS [HED]
INNER JOIN [CTE]
ON [CTE].[id] = [HED].[id]
SELECT @LastPostRef = MAX([HED].[PostRef])
FROM @HEADERS AS [HED]
;WITH [CTE] ([id], [NewBatchNo], [NewPostRef]) AS (
SELECT [DET].[id],
[HED].[BatchNo],
@LastPostRef + ROW_NUMBER() OVER (ORDER BY [DET].[Batch], [DET].[id])
FROM @DETAILS AS [DET]
INNER JOIN @HEADERS AS [HED]
ON [HED].[Batch] = [DET].[Batch])
UPDATE [DET]
SET [DET].[BatchNo] = [CTE].[NewBatchNo],
[DET].[PostRef] = [CTE].[NewPostRef]
FROM @DETAILS AS [DET]
INNER JOIN [CTE]
ON [CTE].[id] = [DET].[id]
UPDATE [HED]
SET [HED].[Year] = @YEAR,
[HED].[Period] = @PERIOD
FROM @HEADERS AS [HED]
-- Insert into BatchH
INSERT INTO [dbo].[BatchH] (
[BATCHNO],
[POSTFWD],
[TYPE],
[CODE],
[BRANCH],
[PREF],
[REF],
[DATE],
[FEE],
[MATTER],
[SUPP],
[NARR],
[VALUE],
[SUBTOT],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[OUTLAYTOT],
[VATTOT],
[FEETOT],
[INVCR],
[THIRDPARTY],
[USERCODE],
[ENTRYDATE],
[CLIENTBANK],
[CURRENCY],
[CURRENCYVALUE],
[CUROUTLAYTOT],
[CURVATTOT],
[CURFEETOT],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[WRITEDOWN],
[WRITEBACKHOURS],
[WRITEBACKVALUE],
[CORRECTCOPY],
[CreditInvoiceNo],
[DraftBillNo],
[EFTSent],
[EFTDate],
[EFTFileNumber],
[EFTFileName],
[EFTYorN],
[ClientCode],
[PayClient],
[OnceOffPayment],
[CaseAssCode],
[EFTEmailYorN],
[HandlerCode],
[PaymentMethod],
[ClearedDate])
SELECT [HED].[BatchNo], /* BATCHNO */
'', /* POSTFWD */
[HED].[TransactionType], /* TYPE */
[HED].[Code], /* CODE */
[HED].[Branch], /* BRANCH */
[HED].[PostRef], /* PREF */
[HED].[Ref], /* REF */
[HED].[Date], /* DATE */
[HED].[Fee], /* FEE */
[HED].[Matter], /* MATTER */
[HED].[Supp], /* SUPP */
[HED].[Narr], /* NARR */
[HED].[Value], /* VALUE */
[HED].[SubTotal], /* SUBTOT */
'N', /* POSTED */
[HED].[ClientAc], /* CLIENTAC */
[HED].[Period], /* PERNO */
[HED].[Year], /* YEAR */
'', /* PAYEE */
0, /* OUTLAYTOT */
[HED].[VATTotal], /* VATTOT */
0, /* FEETOT */
'I', /* INVCR */
'', /* THIRDPARTY */
[HED].[UserCode], /* USERCODE */
[HED].[EntryDate], /* ENTRYDATE */
'', /* CLIENTBANK */
'', /* CURRENCY */
[HED].[Value] * -@EICONVERT, /* CURRENCYVALUE - Minus for some reason in desktop app! */
0, /* CUROUTLAYTOT */
[HED].[VATTotal] * @EICONVERT, /* CURVATTOT */
0, /* CURFEETOT */
0, /* RECNO */
'', /* SINGLELINE */
'', /* TEMPLATE */
0, /* CHEQUEREQNO */
NULL, /* WRITEDOWN */
0, /* WRITEBACKHOURS */
0, /* WRITEBACKVALUE */
'', /* CORRECTCOPY */
0, /* CreditInvoiceNo */
0, /* DraftBillNo */
'N', /* EFTSent */
NULL, /* EFTDate */
0, /* EFTFileNumber */
'', /* EFTFileName */
'N', /* EFTYorN */
'', /* ClientCode */
'N', /* PayClient */
'N', /* OnceOffPayment */
'', /* CaseAssCode */
'N', /* EFTEmailYorN */
[HED].[HandlerCode], /* HandlerCode */
0, /* PaymentMethod */
NULL /* ClearedDate */
FROM @HEADERS AS [HED]
WHERE [HED].[BatchNo] > 0
INSERT INTO [dbo].[BatchDetails] (
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay])
SELECT [DET].[BatchNo], /* BATCHNO */
[HED].[TransactionType], /* TYPE */
[DET].[Code], /* CODE */
[DET].[PostRef], /* PREF */
[DET].[Ref], /* REF */
ISNULL([DET].[Date], [HED].[Date]), /* DATE */
[DET].[Fee], /* FEE */
[DET].[Branch], /* BRANCH */
[DET].[Narr], /* NARR */
[DET].[Matter], /* MATTER */
'', --[DET].[Supp], /* SUPP - Apparently this is left blank when transactions entered manually */
[DET].[Value], /* VALUE */
[DET].[VATCode], /* VATCODE */
[DET].[VATValue], /* VATVAL */
'', /* CLIENTYN */
[DET].[LineType], /* OUTLAY */
'', /* PENDING */
[HED].[Year], /* YEAR */
[HED].[Period], /* PERNO */
'E', /* ENTRYCURRENCY */
[DET].[Value] * @EICONVERT, /* CURRENCYVALUE */
[DET].[VATValue] * @EICONVERT, /* CURRENCYVAT */
[DET].[OutlayCode], /* OUTLAYCODE */
'', /* THIRDPARTY */
'', /* PAYEE */
0, /* HEADPREF */
0, /* HEADBATCH */
0, /* ALLOCBATCH */
0, /* ALLOCPREF */
'', /* ALLOCREF */
0, /* ALLOCVALUE */
'', /* ALLOCWRITEOFF */
'', /* PSUPP */
0, /* UNDETAKING */
'', /* CaseAssCode */
'N', /* OnceOffPayment */
'N', /* PayClient */
'', /* ClientCode */
'N', /* EFTEmailYorN */
0, /* RegisteredPost */
0 /* PreBilledOutlay */
FROM @HEADERS AS [HED]
INNER JOIN @DETAILS AS [DET]
ON [HED].[Batch] = [DET].[Batch]
WHERE [DET].[BatchNo] > 0
SELECT @LastBatchNo = [T].[BATCHNO],
@LastPostRef = [T].[PREF]
FROM [dbo].[ky_NETTFGetLastBatchNoAndPostRef]() AS [T]
UPDATE [CON]
SET [CON].[LASTBATCH] = @LastBatchNo,
[CON].[LASTPREF] = @LastPostRef
FROM [dbo].[control] AS [CON]
-- Try to auto-post if option is turned on
IF @AUTOPOST = 1 AND OBJECT_ID(N'KAAS_UpdatePostingSAMPurchaseBill', N'P') IS NOT NULL
BEGIN
DECLARE @I INT
DECLARE @N INT
DECLARE @BATCHNO_W INT
DECLARE @POSTFWD VARCHAR(1)
SELECT @I = 1,
@N = ISNULL(MAX([HED].[id]), 0)
FROM @HEADERS AS [HED]
WHILE @I <= @N
BEGIN
SET @BATCHNO_W = NULL
SET @POSTFWD = NULL
SELECT @BATCHNO_W = [HED].[BatchNo],
@POSTFWD = CASE WHEN [HED].[Date] > @PERIODEND THEN 'Y' ELSE 'N' END
FROM @HEADERS AS [HED]
WHERE [HED].[id] = @I
EXEC [dbo].[KAAS_UpdatePostingSAMPurchaseBill] @BATCHNO_W, @POSTFWD, @HANDLERCODE
SET @I = @I + 1
END
END
SELECT TOP 1 [DET].[BatchNo]
FROM @DETAILS AS [DET]
WHERE [DET].[BatchNo] > 0
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_ImportOutlayIssueInvoice'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_ImportOutlayIssueInvoice]
END
GO
CREATE PROCEDURE [dbo].[KAAS_ImportOutlayIssueInvoice]
(
@BatchNo INT,
@Date DATETIME,
@Matter VARCHAR(20),
@NextPeriodEnd DATETIME,
@SingleLine VARCHAR(1) = ''
)
AS
/*******************************************************************************************************
* Import Outlay inserting issue invoice batch detail logic *
* *
* Stored Procedure Name : [dbo].[KAAS_ImportOutlayIssueInvoice] *
* *
* Modification History: *
* 2022-11-16 Ghayathri.S.V Created *
* 2024-03-14 Balamurugan.C Modified - Added logic for Single Line process, if single line is *
checked we to sum all the outlay of other batches *
and convert into single outlay record *
* 2024-03-22 Vignesh M Modified - Narrative text is changed *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DECLARE @VATEXCLUDE CHAR(1)
DECLARE @IECONVERT DECIMAL(17,6)
DECLARE @CURRENTYEAR INT
DECLARE @CURRENTPERIOD INT
DECLARE @NEWPREF INT
DECLARE @SUMOFVALUE DECIMAL(19, 2)
DECLARE @SUMOFCURRENCYVALUE DECIMAL(19, 2)
DECLARE @SINGLELINEREF VARCHAR(10)
DECLARE @DEFAULTOUTLAY VARCHAR(10)
SELECT @IECONVERT = [CON].[IECONVERT],
@VATEXCLUDE = [CON].[VATEXCLUDE],
@CURRENTYEAR = [CON].[YEAR],
@CURRENTPERIOD = [CON].[CURPER],
@DEFAULTOUTLAY = [CON].[OUTLAY]
FROM [dbo].[control] AS [CON]
IF(@SingleLine='N')
BEGIN
DECLARE @Ref VARCHAR(10),
@Narr VARCHAR(100),
@Value DECIMAL(17, 2),
@CurrencyValue DECIMAL(17, 2)
DECLARE importOutlay_Cursor CURSOR FOR
SELECT @BatchNo,
[BAH].[REF],
@Date,
[BAH].[NARR],
[MAT].[VALUEO],
CONVERT(DECIMAL(19, 2),[MAT].VALUEO * @IECONVERT)
FROM MatterLedger [MAT]
JOIN BatchH [BAH]
ON [BAH].BATCHNO = [MAT].BATCHNO
AND [BAH].TYPE <> 'I'
WHERE [MAT].MATTER = @Matter
AND [MAT].VALUEO<>0
AND [MAT].[BILLINGDATE] IS NULL
AND (([BAH].[POSTFWD] = 'Y' AND [MAT].[DATE] <> @NextPeriodEnd ) OR [MAT].[FEE] <> '')
OPEN importOutlay_Cursor
FETCH
NEXT FROM importOutlay_Cursor
INTO @BatchNo,
@Ref,
@Date,
@Narr,
@Value,
@CurrencyValue
WHILE @@FETCH_STATUS = 0
BEGIN
(
SELECT @NEWPREF = (LastPref + 1)
FROM [dbo].[Control] WITH(NOLOCK)
)
/* INSERT INTO ISSUE INVOICE BATCH DETAIL */
INSERT INTO [dbo].[BatchDetails] (
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay])
VALUES (@BatchNo, /*BATCHNO*/
'I', /*TYPE*/
'OUTLAY', /*CODE*/
@NEWPREF, /*PREF*/
@Ref, /*REF*/
@Date, /*DATE*/
'', /*FEE*/
'', /*BRANCH*/
@Narr, /*NARR*/
'', /*MATTER*/
'', /*SUPP*/
@Value, /*VALUE*/
@VATEXCLUDE, /*VATCODE*/
0.00, /*VATVAL*/
'', /*CLIENTYN*/
'O', /*OUTLAY*/
'', /*PENDING*/
@CURRENTYEAR, /*YEAR*/
@CURRENTPERIOD, /*PERNO*/
'E', /*ENTRYCURRENCY*/
@CurrencyValue, /*CURRENCYVALUE*/
0.00, /*CURRENCYVAT*/
'', /*OUTLAYCODE*/
'', /*THIRDPARTY*/
'', /*PAYEE*/
0, /*HEADPREF*/
0, /*HEADBATCH*/
0, /*ALLOCBATCH*/
0, /*ALLOCPREF*/
'', /*ALLOCREF*/
0.00, /*ALLOCVALUE*/
'', /*ALLOCWRITEOFF*/
'', /*PSUPP*/
0, /*UNDETAKING*/
'', /*CASEASSCODE*/
'N', /*ONCEOFFPYMENT*/
'N', /*PAYCLIENT*/
'', /*CLIENTCODE*/
'N', /*EFTEMAILYorN*/
0, /*REGISTEREDPOST*/
0) /*PREBILLEDOUTLAY*/
/*UPDATE AND SELECT PREF FOR BATCH DETAILS*/
UPDATE [dbo].[Control]
SET [LASTPREF] = (@NEWPREF)
WHERE [NEXT_DOC_NO] = 0
FETCH
NEXT FROM importOutlay_Cursor
INTO @BatchNo,
@Ref,
@Date,
@Narr,
@Value,
@CurrencyValue
END
CLOSE importOutlay_Cursor;
DEALLOCATE importOutlay_Cursor;
END
ELSE
BEGIN
SELECT @SUMOFVALUE = SUM([MAT].[VALUEO]),
@SUMOFCURRENCYVALUE = CONVERT(DECIMAL(19, 2),SUM([MAT].VALUEO) * @IECONVERT)
FROM MatterLedger [MAT]
JOIN BatchH [BAH]
ON [BAH].BATCHNO = [MAT].BATCHNO
AND [BAH].TYPE <> 'I'
WHERE [MAT].MATTER = @Matter
AND [MAT].VALUEO<>0
AND [MAT].[BILLINGDATE] IS NULL
AND (([BAH].[POSTFWD] = 'Y' AND [MAT].[DATE] <> @NextPeriodEnd ) OR [MAT].[FEE] <> '')
SELECT @SINGLELINEREF = [Ref] FROM [dbo].[BatchH] WHERE [BatchNo] = @BatchNo
SELECT @NEWPREF = (LastPref + 1)
FROM [dbo].[Control] WITH(NOLOCK)
/* INSERT INTO ISSUE INVOICE BATCH DETAIL */
INSERT INTO [dbo].[BatchDetails] (
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay])
VALUES (@BatchNo, /*BATCHNO*/
'I', /*TYPE*/
@DEFAULTOUTLAY, /*CODE*/
@NEWPREF, /*PREF*/
@SINGLELINEREF, /*REF*/
@Date, /*DATE*/
'', /*FEE*/
'', /*BRANCH*/
'Total Outlays', /*NARR*/
'', /*MATTER*/
'', /*SUPP*/
@SUMOFVALUE, /*VALUE*/
@VATEXCLUDE, /*VATCODE*/
0.00, /*VATVAL*/
'', /*CLIENTYN*/
'O', /*OUTLAY*/
'', /*PENDING*/
@CURRENTYEAR, /*YEAR*/
@CURRENTPERIOD, /*PERNO*/
'E', /*ENTRYCURRENCY*/
@SUMOFCURRENCYVALUE, /*CURRENCYVALUE*/
0.00, /*CURRENCYVAT*/
'', /*OUTLAYCODE*/
'', /*THIRDPARTY*/
'', /*PAYEE*/
0, /*HEADPREF*/
0, /*HEADBATCH*/
0, /*ALLOCBATCH*/
0, /*ALLOCPREF*/
'', /*ALLOCREF*/
0.00, /*ALLOCVALUE*/
'', /*ALLOCWRITEOFF*/
'', /*PSUPP*/
0, /*UNDETAKING*/
'', /*CASEASSCODE*/
'N', /*ONCEOFFPYMENT*/
'N', /*PAYCLIENT*/
'', /*CLIENTCODE*/
'N', /*EFTEMAILYorN*/
0, /*REGISTEREDPOST*/
0) /*PREBILLEDOUTLAY*/
/*UPDATE AND SELECT PREF FOR BATCH DETAILS*/
UPDATE [dbo].[Control]
SET [LASTPREF] = (@NEWPREF)
WHERE [NEXT_DOC_NO] = 0
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_InsertContactCategory', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertContactCategory]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertContactCategory]
(
@CatType VARCHAR(6) = '',
@Code VARCHAR(10) = '',
@Mode VARCHAR(20) = '',
@Description VARCHAR(30) = '',
@Prompt1 VARCHAR(20) = '',
@Prompt2 VARCHAR(20) = '',
@Prompt3 VARCHAR(20) = '',
@Prompt4 VARCHAR(20) = '',
@Prompt5 VARCHAR(20) = '',
@Prompt6 VARCHAR(20) = '',
@Prompt7 VARCHAR(20) = '',
@Prompt8 VARCHAR(20) = '',
@Prompt9 VARCHAR(20) = '',
@Prompt10 VARCHAR(20) = ''
)
/*******************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_InsertContactCategory] *
* Copied from : NA *
* *
* Modification History : *
* 2021-06-14 Balamurugan C Created
* 2022-03-03 Ghayathri.S.V Script Modified for Insert and Edit
*******************************************************************************************************/
AS
BEGIN
IF( @Mode = 'EDIT' )
BEGIN
IF EXISTS (
SELECT TOP 1 1
FROM [dbo].[Category]
WHERE [Code] = @Code
)
BEGIN
UPDATE [dbo].[Category]
SET [CatType] = @CatType,
[Desc$] = @Description,
[Prompt1] = @Prompt1,
[Prompt2] = @Prompt2,
[Prompt3] = @Prompt3,
[Prompt4] = @Prompt4,
[Prompt5] = @Prompt5,
[Prompt6] = @Prompt6,
[Prompt7] = @Prompt7,
[Prompt8] = @Prompt8,
[Prompt9] = @Prompt9,
[Prompt10] = @Prompt10
WHERE [Code] = @Code
END
END
IF ( @Mode = 'INSERT')
BEGIN
IF NOT EXISTS (
SELECT TOP 1 1
FROM [dbo].[Category]
WHERE [Code] = @Code
)
BEGIN
INSERT
INTO [dbo].[Category]
(
[Code],
[CatType],
[Desc$],
[Prompt1],
[Prompt2],
[Prompt3],
[Prompt4],
[Prompt5],
[Prompt6],
[Prompt7],
[Prompt8],
[Prompt9],
[Prompt10]
)
VALUES (
@Code, /*[Code]*/
@CatType, /*[CatType]*/
@Description, /*[Desc$]*/
@Prompt1, /*[Prompt1]*/
@Prompt2, /*[Prompt2]*/
@Prompt3, /*[Prompt3]*/
@Prompt4, /*[Prompt4]*/
@Prompt5, /*[Prompt5]*/
@Prompt6, /*[Prompt6]*/
@Prompt7, /*[Prompt7]*/
@Prompt8, /*[Prompt8]*/
@Prompt9, /*[Prompt9]*/
@Prompt10 /*[Prompt10]*/
)
END
END
IF ( @Mode = 'DELETE')
BEGIN
IF EXISTS (
SELECT TOP 1 1
FROM [dbo].[Category]
WHERE [Code] = @Code
)
DELETE
FROM [dbo].[Category]
WHERE [Code] = @Code
AND [CatType] = @CatType
END
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = N'KAAS_InsertDebtorsLedgerAllocation'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertDebtorsLedgerAllocation]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertDebtorsLedgerAllocation] (
@ReceiptRecordID INT,
@InvoiceRecordID INT,
@VALUE DECIMAL(17, 2),
@FEES DECIMAL(17, 2),
@OUTLAY DECIMAL(17, 2),
@VAT DECIMAL(17, 2),
@UserCode VARCHAR(30),
@DATE DATETIME,
@Result TINYINT OUTPUT)
AS
/*******************************************************************************************************
* Used to insert debtors ledger allocation *
* Stored Procedure Name: [dbo].[KAAS_InsertDebtorsLedgerAllocation] *
* *
* Modification History: *
* 2021-07-09 Natarajan S Created *
* 2021-07-12 Natarajan S Modified Allocation ID from control table. *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
* 2023-11-28 John Ginnane #17504 - Removing time component from date and refactored code *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON;
-- Make sure receipt exists
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[RECORDID] = @ReceiptRecordID)
BEGIN
SET @Result = 0
RETURN
END
-- Make sure invoice exists
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[RECORDID] = @InvoiceRecordID)
BEGIN
SET @Result = 0
RETURN
END
BEGIN TRY
BEGIN TRANSACTION
DECLARE @AllNo INT
DECLARE @TODAY DATETIME
-- Get today's date only
SET @TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
-- Check both [dbo].[control] AND [dbo].[Allocations]
SELECT TOP 1
@AllNo = ISNULL([CON].[LastAlloc], 0) + 1
FROM [dbo].[control] AS [CON]
SELECT TOP 1 @AllNo = CASE WHEN ISNULL(MAX([ALO].[AllNo]), 0) > @AllNo
THEN ISNULL(MAX([ALO].[AllNo]), 0)
ELSE ISNULL(@AllNo, 0) END
FROM [dbo].[Allocations] AS [ALO]
-- Use a common table expression (CTE) to combine
-- data from both rows into a single row then use a
-- UNION to get two rows with data from both rows
;WITH [CombinedData] ([AllNo],
[InvoiceBatchNo],
[InvoicePostRef],
[InvoiceRef],
[InvoiceVATCode],
[ReceiptBatchNo],
[ReceiptPostRef],
[ReceiptRef],
[ReceiptVATCode],
[Date],
[Value],
[Fees],
[Outlay],
[VAT],
[UserCode]) AS (
SELECT @AllNo,
[INV].[BATCHNO],
[INV].[PREF],
[INV].[REF],
[INV].[VATCODE],
[REC].[BATCHNO],
[REC].[PREF],
[REC].[REF],
[REC].[VATCODE],
@TODAY,
@VALUE,
@FEES,
@OUTLAY,
@VAT,
@UserCode
FROM [dbo].[DebtorsLedger] [INV]
CROSS APPLY [dbo].[DebtorsLedger] [REC]
WHERE [INV].[RECORDID] = @InvoiceRecordID
AND [REC].[RECORDID] = @ReceiptRecordID)
INSERT INTO [dbo].[Allocations] (
[BATCHNO],
[PREF],
[DATE],
[ABATCHNO],
[OPREF],
[OREF],
[VALUE],
[FEES],
[OUTLAY],
[VAT],
[USERCODE],
[AllNo],
[VATCODE])
-- Invoice side
SELECT [CD].[InvoiceBatchNo], /* BATCHNO */
[CD].[InvoicePostRef], /* PREF */
[CD].[Date], /* DATE */
[CD].[ReceiptBatchNo], /* ABATCHNO */
[CD].[ReceiptPostRef], /* OPREF */
[CD].[ReceiptRef], /* OREF */
[CD].[Value], /* VALUE */
[CD].[Fees], /* FEES */
[CD].[Outlay], /* OUTLAY */
[CD].[VAT], /* VAT */
[CD].[UserCode], /* USERCODE */
[CD].[AllNo], /* AllNo */
[CD].[ReceiptVATCode] /* VATCODE */
FROM [CombinedData] AS [CD]
UNION ALL
-- Receipt side
SELECT [CD].[ReceiptBatchNo], /* BATCHNO */
[CD].[ReceiptPostRef], /* PREF */
[CD].[Date], /* DATE */
[CD].[InvoiceBatchNo], /* ABATCHNO */
[CD].[InvoicePostRef], /* OPREF */
[CD].[InvoiceRef], /* OREF */
[CD].[Value], /* VALUE */
[CD].[Fees], /* FEES */
[CD].[Outlay], /* OUTLAY */
[CD].[VAT], /* VAT */
[CD].[UserCode], /* USERCODE */
[CD].[AllNo], /* AllNo */
[CD].[InvoiceVATCode] /* VATCODE */
FROM [CombinedData] AS [CD]
UPDATE [INV]
SET [INV].[OSValue] = [INV].[OSValue] + @VALUE,
[INV].[OSFees] = [INV].[OSFees] + @FEES,
[INV].[OSOUTLAY] = [INV].[OSOutlay] + @OUTLAY,
[INV].[OSVAT] = [INV].[OSVat] + @VAT
FROM [dbo].[DebtorsLedger] [INV]
WHERE [INV].[RECORDID] = @InvoiceRecordID
UPDATE [REC]
SET [REC].[OSValue] = [REC].[OSValue] - @VALUE,
[REC].[OSFees] = [REC].[OSFees] - @FEES,
[REC].[OSOUTLAY] = [REC].[OSOutlay] - @OUTLAY,
[REC].[OSVAT] = [REC].[OSVat] - @VAT
FROM [dbo].[DebtorsLedger] [REC]
WHERE [REC].[RECORDID] = @ReceiptRecordID
UPDATE [CON]
SET [CON].[LastAlloc] = @AllNo
FROM [dbo].[control] AS [CON]
SET @Result = 1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @Result = 0
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_InsertDeleteNominalLedgerComments'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertDeleteNominalLedgerComments]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertDeleteNominalLedgerComments]
(
@Date DATETIME = NULL,
@Narr VARCHAR(100) = '',
@Code VARCHAR(10) = '',
@Ref VARCHAR(10) = '',
@Year INT = 0,
@RecordId INT = 0,
@Mode VARCHAR(20) = 'INSERT',
@User VARCHAR(20) = '',
@EntryDate DATE = NULL
)
/*******************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_InsertDeleteNominalLedgerComments] *
* Copied from : NA *
* *
* Modification History : *
* 2021-07-28 Balamurugan C Created *
* 2022-03-03 Balamurugan C Modified - Handled TCL Statements and formatting *
*******************************************************************************************************/
AS
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
IF( @Mode = 'INSERT' )
BEGIN
SET @EntryDate = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](GETDATE(), @User)), 0)
SET @Date = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@Date, @User)), 0)
INSERT
INTO [dbo].[NominalLedger]
(
[Code],
[BatchNo],
[Pref],
[Date],
[Narr],
[Ref],
[Value],
[CurrencyValue],
[Year],
[EntryDate]
)
VALUES (
@Code, /*[Code]*/
0, /*[BatchNo]*/
0, /*[Pref]*/
@Date, /*[Date]*/
@Narr, /*[Narr]*/
@Ref, /*[Ref]*/
0.00, /*[Value]*/
0.00, /*[CurrencyValue]*/
@Year, /*[Year]*/
@EntryDate /*[EntryDate]*/
)
END
ELSE
BEGIN
DELETE
FROM [dbo].[NominalLedger]
WHERE [RecordID] = @RecordId
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_InsertDeleteSuppliersDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertDeleteSuppliersDetails]
END
GO
/****** Object: StoredProcedure [dbo].[KAAS_InsertDeleteSuppliersDetails] Script Date: 6/17/2021 6:19:33 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[KAAS_InsertDeleteSuppliersDetails] (
@Code VARCHAR(10)='',
@Name VARCHAR(40)='',
@Address VARCHAR(500)='',
@Phone VARCHAR(50)='',
@EmailAddress VARCHAR(100)='',
@TaxNo VARCHAR(15)='',
@ServiceCode VARCHAR(6)='',
@VATNo VARCHAR(20)='',
@DeftpStatus VARCHAR(1)='',
@BankName VARCHAR(60)='',
@BankAddress VARCHAR(120)='',
@BankSortCode VARCHAR(20)='',
@BankAccNo VARCHAR(20)='',
@Iban VARCHAR(34)='',
@Bic VARCHAR(20)='',
@BankType VARCHAR(1)='',
@EFTEmailAddress VARCHAR(150)='',
@Retired VARCHAR(1)='',
@Mode VARCHAR(20)='',
@Nominal VARCHAR(40)=''
)
/*******************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_InsertDeleteSuppliersDetails] *
* Copied from : NA *
* *
* Modification History : *
* 2021-06-16 Balamurugan C Created
* 2021-02-28 Ghayathri.S.V Modified to check validations before delete
* 2024-01-19 Revathy.D Included Nominal field in add/edit *
*******************************************************************************************************/
AS
BEGIN
DECLARE @deleteCount INT = 0
IF( @Mode = 'EDIT' )
BEGIN
IF EXISTS (
SELECT TOP 1 1
FROM dbo.[Suppliers]
WHERE [code] = @Code
)
BEGIN
UPDATE dbo.[Suppliers]
SET
[Code] = @Code,
[Name] = @Name,
[Address] = @Address,
[Phone] = @Phone,
[EmailAddress] = @EmailAddress,
[TaxNo] = @TaxNo,
[ServiceCode] = @ServiceCode,
[VATNo] = @VATNo,
[DeftpStatus] = @DeftpStatus,
[BankName] = @BankName,
[BankAddress] = @BankAddress,
[BankSortCode] = @BankSortCode,
[BankAccNo] = @BankAccNo,
[Iban] = @Iban,
[Bic] = @Bic,
[BankType] = @BankType,
[EFTEmailAddress] = @EFTEmailAddress,
[Retired] = @Retired,
[Nominal] = @Nominal
WHERE [Code] = @Code
END
END
IF( @Mode = 'INSERT' )
BEGIN
IF NOT EXISTS (
SELECT TOP 1 1
FROM dbo.[Suppliers]
WHERE [code] = @Code
)
BEGIN
INSERT INTO dbo.[Suppliers]
(
[Code],
[Name],
[Address],
[Phone],
[EmailAddress],
[TaxNo],
[ServiceCode],
[VATNo],
[DeftpStatus],
[BankName],
[BankAddress],
[BankSortCode],
[BankAccNo],
[Iban],
[Bic],
[BankType],
[EFTEmailAddress],
[Retired],
[Nominal]
)
VALUES (
@Code, /*[Code]*/
@Name, /*[Name]*/
@Address, /*[Address]*/
@Phone, /*[Phone]*/
@EmailAddress, /*[EmailAddress]*/
@TaxNo, /*[TaxNo]*/
@ServiceCode, /*[ServiceCode]*/
@VATNo, /*[VATNo]*/
@DeftpStatus, /*[DeftpStatus]*/
@BankName, /*[BankName]*/
@BankAddress, /*[BankAddress]*/
@BankSortCode, /*[BankSortCode]*/
@BankAccNo, /*[BankAccNo]*/
@Iban, /*[Iban]*/
@Bic, /*[Bic]*/
@BankType, /*[BankType]*/
@EFTEmailAddress, /*[EFTEmailAddress]*/
@Retired, /*[Retired]*/
@Nominal /*[Nominal]*/
)
END
END
IF( @Mode = 'VALIDATE')
BEGIN
SET @deleteCount =
(
SELECT COUNT(1)
FROM [dbo].[Suppliers] SUP
JOIN [dbo].[SupplierLedger] SUPL
ON SUP.[CODE] = SUPL.[SUPP]
WHERE SUP.[Code] = @Code
)
IF(@deleteCount > 0)
BEGIN
SELECT 'Postings Present' AS [Message]
END
ELSE
BEGIN
SELECT 'Postings Not Present' AS [Message]
END
END
IF( @Mode = 'DELETE' )
BEGIN
DELETE
FROM dbo.[Suppliers]
WHERE [Code] = @Code
END
END
GO
IF OBJECT_ID(N'KAAS_InsertSAMAccruals', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertSAMAccruals]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_InsertSAMAccruals]
(
@NominalAc VARCHAR(10),
@AccrualAc VARCHAR(10),
@Description VARCHAR(40),
@Value DECIMAL,
@ValueYTD DECIMAL,
@RecordId INT
)
AS
/*******************************************************************************************************
* [dbo].[KAAS_InsertSAMAccruals] *
* Description: Used to post accrual details *
* Modification History: *
* 2021-08-04 Revathy D Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF ISNULL(@RecordId, 0) = 0
BEGIN
INSERT INTO [dbo].[Accruals] (
[NOMINALFROM],
[NOMINALTO],
[DESCRIPTION],
[VALUE],
[VALUEYTD])
SELECT @NominalAc,
@AccrualAc,
@Description,
@Value,
@ValueYTD
END
ELSE
BEGIN
UPDATE [dbo].[Accruals]
SET [NOMINALFROM] = @NominalAc,
[NOMINALTO] = @AccrualAc,
[DESCRIPTION] = @Description,
[VALUE] = @Value,
[VALUEYTD] = @ValueYTD
WHERE [RECORDID] = @RecordId
END
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_INSERTSAMDiaryDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_INSERTSAMDiaryDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_INSERTSAMDiaryDetails]
(
@MatterCode VARCHAR(20),
@Priority VARCHAR(5),
@Highlighted VARCHAR(20),
@Publisher VARCHAR(20),
@Status INT,
@ActionCode VARCHAR(20),
@ActionStatus VARCHAR(20),
@ActionType VARCHAR(20),
@ProcessType VARCHAR(20),
@FNCode VARCHAR(20),
@TeamCode VARCHAR(20),
@Text1 VARCHAR(MAX),
@Date DATETIME,
@diaryWarningDate DATETIME,
@Handler VARCHAR(10),
@Result INT OUTPUT
)
AS
/*******************************************************************************************************
* *
*Used to list the matter ledger *
* Stored Procedure Name: [dbo].[KAAS_INSERTSAMDiaryDetails] '000001/0000','H','','N',0,'ADMUD','NA','U','I','ADM','COM','UNDERTAKING EXAMPLE',0 *
* Modification History: *
* 2021-03-26 Natarajan S Created *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRANSACTION
DECLARE @TIMECONVERT INT
DECLARE @IdentityValue INT
SET @TIMECONVERT = [dbo].[KAAS_ConvertTimeToClarion](GETDATE())
EXEC @IdentityValue = [dbo].[KAAS_GetNextActionID]
INSERT
INTO [dbo].[diary]
( [ActionID],
[CASECODE],
[PRIORITY],
[HIGHLIGHTED],
[PUBLISH],
[DATE],
[STATUS],
[ACTIONCODE],
[ACTIONSTATUS],
[ACTIONTYPE],
[PROCESSTYPE],
[FNCODE],
[TEAMCODE],
[TEXT1],
[TEXT2],
[DELEGATEDFNR],
[DELEGATEDDATE],
[DELEGATEDBACKDATE],
[DEFERRED],
[DUEDATE],
[IMAGENO],
[DYSTARTTIME],
[DYENDTIME],
[DURATION],
[ORGINALACTIONID],
[MILESTEONETYPE],
[ATTACHMENTS],
[PROCESSSTATUS],
[WORKPROCESS],
[BILLABLE],
[BILLDESCRIPTION],
[EMAILADDRESS],
[EMAIL],
[SUBJECT],
[DELEGATIONSTATUS],
[DRAFTBILLNO],
[CHEQUEREQNO],
[TXMSENT],
[LOCATION],
[HEARINGTYPE],
[FORCOPY],
[TXMDATE],
[TXMSEQNO],
[DISPLAYTEXT],
[FLAG],
[ADDRESSTO],
[CCTO],
[BCCTO],
[CLIENTCONTACTID],
[CONTACTCATEGORY],
[CAMPAIGN],
[FILENUM],
[CASEASSOCIATE]
)
VALUES
(
@IdentityValue, /*[ActionID]*/
@MatterCode, /*[CASECODE]*/
@Priority, /*[PRIORITY]*/
@Highlighted, /*[HIGHLIGHTED]*/
@Publisher, /*[PUBLISH]*/
DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@diaryWarningDate, @Handler)), 0), /*[DATE]*/
@Status, /*[STATUS]*/
@ActionCode, /*[ACTIONCODE]*/
@ActionStatus, /*[ACTIONSTATUS]*/
@ActionType, /*[ACTIONTYPE]*/
@ProcessType, /*[PROCESSTYPE]*/
@FNCode, /*[FNCODE]*/
@TEAMCODE, /*[TEAMCODE]*/
@TEXT1, /*[TEXT1]*/
NULL, /*[TEXT2]*/
NULL, /*[DELEGATEDFNR]*/
NULL, /*[DELEGATEDDATE]*/
NULL, /*[DELEGATEDBACKDATE]*/
NULL, /*[DEFERRED]*/
DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@Date, @Handler)), 0), /*[DUEDATE]*/
0, /*[IMAGENO]*/
@TIMECONVERT, /*[DYSTARTTIME]*/
@TIMECONVERT, /*[DYENDTIME]*/
NULL, /*[DURATION]*/
@IdentityValue, /*[ORGINALACTIONID]*/
'JP', /*[MILESTEONETYPE]*/
'N', /*[ATTACHMENTS]*/
0, /*[PROCESSSTATUS]*/
NULL, /*[WORKPROCESS]*/
0, /*[BILLABLE]*/
'', /*[BILLDESCRIPTION]*/
NULL, /*[EMAILADDRESS]*/
NULL, /*[EMAIL]*/
'', /*[SUBJECT]*/
0, /*[DELEGATIONSTATUS]*/
0, /*[DRAFTBILLNO]*/
NULL, /*[CHEQUEREQNO]*/
0, /*[TXMSENT]*/
NULL, /*[LOCATION]*/
NULL, /*[HEARINGTYPE]*/
NULL, /*[FORCOPY]*/
NULL, /*[TXMDATE]*/
NULL, /*[TXMSEQNO]*/
@TEXT1, /*[DISPLAYTEXT]*/
NULL, /*[FLAG]*/
NULL, /*[ADDRESSTO]*/
NULL, /*[CCTO]*/
NULL, /*[BCCTO]*/
NULL, /*[CLIENTCONTACTID]*/
NULL, /*[CONTACTCATEGORY]*/
NULL, /*[CAMPAIGN]*/
0, /*[FILENUM]*/
NULL /*[CASEASSOCIATE]*/
)
INSERT
INTO [dbo].[DiaryDelegations]
( [ACTIONID],
[HANDLER],
[TEAM],
[DATE],
[TIME],
[DATER],
[TIMER],
[DUEDATE],
[DUETIME],
[REVIEW],
[STATUS],
[OWNER],
[DELEGATE],
[DELEGATESTATUS],
[ACTIONTYPE],
[FROMHANDLER],
[RETURNEDBY],
[DELTYPE]
)
VALUES
( @IdentityValue, /*[ACTIONID]*/
@FNCode, /*[HANDLER]*/
@TeamCode, /*[TEAM]*/
CONVERT(DATETIME, @diaryWarningDate ,112), /*[DATE]*/
@TIMECONVERT, /*[TIME]*/
NULL, /*[DATER]*/
'', /*[TIMER]*/
CONVERT(DATETIME, @Date ,112), /*[DUEDATE]*/
@TIMECONVERT, /*[DUETIME]*/
' ', /*[REVIEW]*/
0, /*[STATUS]*/
'Y', /*[OWNER]*/
'JP', /*[DELEGATE]*/
0, /*[DELEGATESTATUS]*/
'U', /*[ACTIONTYPE]*/
'JP', /*[FROMHANDLER]*/
'', /*[RETURNEDBY]*/
'Created' /*[DELTYPE]*/
)
SET @Result = @IdentityValue
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @Result = 0
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_INSERTSAMMatterLedgerComment'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_INSERTSAMMatterLedgerComment]
END
go
CREATE PROCEDURE
[dbo].[KAAS_INSERTSAMMatterLedgerComment]
(@MatterCode VARCHAR(20),
@Narrative VARCHAR(MAX),
@ClientMin FLOAT,
@Date DATETIME,
@HandlerCode VARCHAR(20),
@IsDormantClientBalReason BIT = 0,
@Result TINYINT OUTPUT)
AS
/*******************************************************************************************************
* *
*Used to list the matter ledger *
* Stored Procedure Name: [dbo].[KAAS_INSERTSAMMatterLedgerComment] *
* Modification History: *
* 2021-03-26 Natarajan S Created *
* 2021-07-08 Natarajan S Modified - Formatting Added. *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements *
* 2023-05-09 Vignesh M Modified - Logged in Handler code is added *
* 2024-06-19 Revathy.D Modified -- Included IsDormantClientBalReason *
********************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
INSERT
INTO [dbo].[MatterLedger]
( [Matter],
[BatchNo],
[PRef],
[Date],
[Ref],
[Narr],
[ValueD],
[ValueO],
[ValueC],
[Fee],
[Per],
[Year],
[EntryDate],
[Client],
[ValueCC],
[ValueCD],
[DepositType],
[CurValueD],
[CurValueO],
[CurValueC],
[CurValueCC],
[CurValueCD],
[Billed],
[BillingYear],
[BillingPeriod],
[BillingDate],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[IsDormantClientBalReason]
)
VALUES
( @MatterCode, /*[Matter]*/
0, /*[BatchNo]*/
0, /*[PRef]*/
@Date, /*[Date]*/
@HandlerCode, /*[Ref]*/
@Narrative, /*[Narr]*/
0.00, /*[ValueD]*/
0.00, /*[ValueO]*/
0.00, /*[ValueC]*/
'', /*[Fee]*/
0, /*[Per]*/
0, /*[Year]*/
GETDATE(), /*[EntryDate]*/
'', /*[Client]*/
0.00, /*[ValueCC]*/
0.00, /*[ValueCD]*/
'', /*[DepositType]*/
0.00, /*[CurValueD]*/
0.00, /*[CurValueO]*/
0.00, /*[CurValueC]*/
0.00, /*[CurValueCC]*/
0.00, /*[CurValueCD]*/
'', /*[Billed]*/
0, /*[BillingYear]*/
0, /*[BillingPeriod]*/
NULL, /*[BillingDate]*/
0.00, /*[BilledOutlayValue]*/
0, /*[InvoiceNo]*/
0, /*[IncludeInBill]*/
@IsDormantClientBalReason
)
SET @Result = 1
UPDATE [OMO]
SET [OMO].[ClientMin] = @ClientMin
FROM [dbo].[OpenMattersOnly] [OMO]
WHERE [OMO].[Code] = @MatterCode
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS(SELECT
TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_INSERTSAMUndertakingDetails'
AND SO.[type] = 'P'
)
BEGIN
DROP PROCEDURE [dbo].[KAAS_INSERTSAMUndertakingDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_INSERTSAMUndertakingDetails] (
@MatterCode VARCHAR(20),
@Seq INT,
@Type VARCHAR(10),
@Details VARCHAR(MAX),
@Who VARCHAR(MAX),
@ActionID INT,
@GivenOrReceived VARCHAR(10),
@DealingNumber VARCHAR(10),
@Notes VARCHAR(MAX),
@CommercialOrNonCommerical VARCHAR(10),
@Status VARCHAR(50),
@Value DECIMAL,
@AuthorizedByFE VARCHAR(10),
@UndertakingTo VARCHAR(10),
@Date DATETIME,
@Handler VARCHAR(10),
@AddCommentLedger BIT,
@Result TINYINT OUTPUT
)
AS
/********************************************************************************************************************************************************
*Used to list the matter ledger *
* Stored Procedure Name: [dbo].[KAAS_INSERTSAMUndertakingDetails] *
* Modification History: *
* 26 MAR 2021 Natarajan S Created *
* 13 JUL 2021 Natarajan S Created *
* 03 DEC 2021 Vinodhkumar M Modified - Added add comment Ledger field *
* 08 Mar 2022 Balamurugan.C Modified - Handled TCL Statements and Formatting *
********************************************************************************************************************************************************/
BEGIN TRY
BEGIN TRANSACTION
DECLARE @CurrentDate DATETIME;
SET @CurrentDate = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](GETDATE(), @Handler)), 0)
SET @Type = SUBSTRING(@Type, 1, 1)
SET @GivenOrReceived = SUBSTRING(@GivenOrReceived, 1, 1)
SET @CommercialOrNonCommerical = SUBSTRING(@CommercialOrNonCommerical, 1, 1)
INSERT
INTO [dbo].[Undertakings]
([MATTER],
[SEQ],
[DISCHARGEDATE],
[TYPE],
[DESCRIPTION],
[WHO],
[ACTIONID],
[GIVENORRECEIVED],
[NOTIFIED],
[DISCHARGEDESCRIPTION],
[DISCHARGEDBY],
[DEALINGNUMBER],
[NOTES],
[COMMERCIALORNON],
[STATUS],
[DATE],
[UNDDATE],
[VALUE],
[UNDVALUE],
[AUTHORISEDBYFE],
[HANDLER],
[UNDERTAKINGTO],
[CASECONTACT],
[CATEGORY],
[ISCONDITIONAL],
[CONDITION],
[NEEDSATTENTION],
[AddCommentLedger])
VALUES (@MatterCode, /*[MATTER]*/
@Seq, /*[SEQ]*/
NULL, /*[DISCHARGEDATE]*/
@Type, /*[TYPE]*/
@Details, /*[DESCRIPTION]*/
@Who, /*[WHO]*/
@ActionID, /*[ACTIONID]*/
@GivenOrReceived, /*[GIVENORRECEIVED]*/
' ', /*[NOTIFIED]*/
'', /*[DISCHARGEDESCRIPTION]*/
'', /*[DISCHARGEDBY]*/
@DealingNumber, /*[DEALINGNUMBER]*/
@Notes, /*[NOTES]*/
@CommercialOrNonCommerical, /*[COMMERCIALORNON]*/
@Status, /*[STATUS]*/
DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@Date, @Handler)), 0), /*[DATE]*/
DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@Date, @Handler)), 0), /*[UNDDATE]*/
@Value, /*[VALUE]*/
@Value, /*[UNDVALUE]*/
@AuthorizedByFE, /*[AUTHORISEDBYFE]*/
@AuthorizedByFE, /*[HANDLER]*/
@UndertakingTo, /*[UNDERTAKINGTO]*/
@UndertakingTo, /*[CASECONTACT]*/
'', /*[CATEGORY]*/
0, /*[ISCONDITIONAL]*/
'', /*[CONDITION]*/
0, /*[NEEDSATTENTION]*/
@AddCommentLedger) /*[AddCommentLedger]*/
SET @Result = 1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @Result = 0
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] SO
WHERE [SO].[name] = N'KAAS_InsertSupplierLedgerAllocation'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertSupplierLedgerAllocation]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertSupplierLedgerAllocation] (
@BillRecordID INT,
@PaymentRecordID INT,
@VALUE DECIMAL(17, 2),
@DATE DATETIME,
@UserCode VARCHAR(30),
@Result TINYINT OUTPUT)
AS
/********************************************************************************************************
* Used to insert supplier ledger allocation *
* Stored Procedure Name: [dbo].[KAAS_InsertSupplierLedgerAllocation] *
* *
* Modification History: *
* 2021-07-09 Natarajan S Created *
* 2021-07-12 Natarajan S Modified Allocation ID from control table. *
* 2022-02-25 Ghayathri.S.V Modified Insert Logic by adding two where clauses. *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
* 2024-02-01 John Ginnane #17658 - Refactored code *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON;
-- Make sure bill exists
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[SupplierLedger] AS [SPL]
WHERE [SPL].[RECORDID] = @BillRecordID)
BEGIN
SET @Result = 0
RETURN
END
-- Make sure payment exists
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[SupplierLedger] AS [SPL]
WHERE [SPL].[RECORDID] = @PaymentRecordID)
BEGIN
SET @Result = 0
RETURN
END
BEGIN TRY
BEGIN TRANSACTION
DECLARE @AllNo INT
DECLARE @TODAY DATETIME
-- Get today's date only
SET @TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
-- Check both [dbo].[control] AND [dbo].[Allocations]
SELECT TOP 1
@AllNo = ISNULL([CON].[LastAlloc], 0) + 1
FROM [dbo].[control] AS [CON]
SELECT TOP 1 @AllNo = CASE WHEN ISNULL(MAX([ALO].[AllNo]), 0) > @AllNo
THEN ISNULL(MAX([ALO].[AllNo]), 0)
ELSE ISNULL(@AllNo, 0) END
FROM [dbo].[Allocations] AS [ALO]
-- Use a common table expression (CTE) to combined
-- data from both rows into a single row, then use
-- a UNION to get two rows with data from both
;WITH [CombinedData] ([AllNo],
[BillBatchNo],
[BillPostRef],
[BillRef],
[PaymentBatchNo],
[PaymentPostRef],
[PaymentRef],
[Date],
[Value],
[UserCode]) AS (
SELECT @AllNo,
[BIL].[BATCHNO],
[BIL].[PREF],
[BIL].[REF],
[PAY].[BATCHNO],
[PAY].[PREF],
[PAY].[REF],
@TODAY,
@VALUE,
@UserCode
FROM [dbo].[SupplierLedger] AS [BIL]
CROSS APPLY [dbo].[SupplierLedger] AS [PAY]
WHERE [BIL].[RECORDID] = @BillRecordID
AND [PAY].[RECORDID] = @PaymentRecordID)
INSERT INTO [dbo].[Allocations] (
[BATCHNO],
[PREF],
[DATE],
[ABATCHNO],
[OPREF],
[OREF],
[VALUE],
[FEES],
[OUTLAY],
[VAT],
[USERCODE],
[AllNo],
[VATCode])
-- Bill side
SELECT [CD].[BillBatchNo], /* BATCHNO */
[CD].[BillPostRef], /* PREF */
[CD].[Date], /* DATE */
[CD].[PaymentBatchNo], /* ABATCHNO */
[CD].[PaymentPostRef], /* OPREF */
[CD].[PaymentRef], /* OREF */
[CD].[Value], /* VALUE */
0, /* FEES */
0, /* OUTLAY */
0, /* VAT */
[CD].[UserCode], /* USERCODE */
[CD].[AllNo], /* AllNo */
'' /* VATCODE */
FROM [CombinedData] AS [CD]
UNION ALL
-- Payment side
SELECT [CD].[PaymentBatchNo], /* BATCHNO */
[CD].[PaymentPostRef], /* PREF */
[CD].[Date], /* DATE */
[CD].[BillBatchNo], /* ABATCHNO */
[CD].[BillPostRef], /* OPREF */
[CD].[BillRef], /* OREF */
[CD].[Value], /* VALUE */
0, /* FEES */
0, /* OUTLAY */
0, /* VAT */
[CD].[UserCode], /* USERCODE */
[CD].[AllNo], /* AllNo */
'' /* VATCODE */
FROM [CombinedData] AS [CD]
UPDATE [BIL]
SET [BIL].[OSValue] = [BIL].[OSValue] + @VALUE
FROM [dbo].[SupplierLedger] AS [BIL]
WHERE [BIL].[RECORDID] = @BillRecordID
UPDATE [PAY]
SET [PAY].[OSValue] = [PAY].[OSValue] - @VALUE
FROM [dbo].[SupplierLedger] AS [PAY]
WHERE [PAY].[RECORDID] = @PaymentRecordID
UPDATE [CON]
SET [CON].[LastAlloc] = @AllNo
FROM [dbo].[control] AS [CON]
SET @Result = 1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @Result = 0
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_InsertSupplierLedgerComment'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertSupplierLedgerComment]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertSupplierLedgerComment]
(
@Supp VARCHAR(20),
@User VARCHAR(50),
@Comments VARCHAR(MAX),
@Date DATETIME,
@Result TINYINT OUTPUT
)
AS
/*******************************************************************************************************
* Used to insert supplier ledger comment *
* Stored Procedure Name: [dbo].[KAAS_InsertSupplierLedgerComment] *
* Modification History: *
* 2021-07-07 Natarajan S Created *
* 2021-07-08 Natarajan S Modified - Formatting Added. *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
INSERT
INTO [dbo].[SupplierLedger]
(
[Supp],
[Type],
[Date],
[Ref],
[BatchNo],
[Pref],
[Narr],
[Original],
[OSValue],
[Year],
[Per],
[EntryDate],
[ThirdParty],
[ThirdPartyValue],
[Matter],
[PendingOutlay]
)
VALUES
(@Supp, /*[Supp]*/
' ', /*[Type]*/
@Date, /*[Date]*/
@User, /*[Ref]*/
0, /*[BatchNo]*/
0, /*[Pref]*/
@Comments, /*[Narr]*/
0.00, /*[Original]*/
0.00, /*[OSValue]*/
0, /*[Year]*/
0, /*[Per]*/
@Date, /*[EntryDate]*/
'N', /*[ThirdParty]*/
0.00, /*[ThirdPartyValue]*/
'', /*[Matter]*/
0.00) /*[PendingOutlay]*/
SET @Result=1
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_InsertUpdateAccountMenuPermission'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertUpdateAccountMenuPermission]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[KAAS_InsertUpdateAccountMenuPermission]
(
@HandlerCode VARCHAR(10),
@CurrentHandlerCode VARCHAR(10),
@HandlerMenuPermissionTypeTbl HandlerMenuPermissionType READONLY
)
AS
/*******************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_InsertUpdateAccountMenuPermission] *
* Description: Insert / Update SAM Menu Permission *
* *
* Modification History: *
* 2024-01-04 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
UPDATE [HPM]
SET [HPM].[ReadAccess] = [TMP].ReadAccess ,
[HPM].[WriteAccess] = [TMP].WriteAccess
FROM [dbo].[HandlerMenuPermissionMap] [HPM]
INNER JOIN @HandlerMenuPermissionTypeTbl [TMP] ON
[TMP].[MenuId] = [HPM].[MenuId] AND
[TMP].[HandlerPermissionMapId] = [HPM].[HandlerPermissionMapId]
WHERE [TMP].[HandlerPermissionMapId] <> 0
INSERT
INTO [dbo].[HandlerMenuPermissionMap]
(
[HandlerCode],
[MenuId],
[ReadAccess],
[WriteAccess],
[LastModifiedBy],
[LastModifiedDate]
)
SELECT @HandlerCode,
[MenuId],
[ReadAccess],
[WriteAccess],
@CurrentHandlerCode,
GETDATE()
FROM @HandlerMenuPermissionTypeTbl
WHERE HandlerPermissionMapId = 0
SELECT [MenuId], [ReadAccess], [WriteAccess] FROM @HandlerMenuPermissionTypeTbl
WHERE HandlerPermissionMapId = 0
END
GO
IF OBJECT_ID(N'KAAS_InsertUpdateFeeEarnerCodesDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertUpdateFeeEarnerCodesDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertUpdateFeeEarnerCodesDetails]
(
@Code VARCHAR(10) = '',
@Name VARCHAR(40) = '',
@Nominal VARCHAR(10) = '',
@Retired VARCHAR(1) = '',
@Mode VARCHAR(20) = '',
@Branch VARCHAR(10) = ''
)
/*******************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_InsertUpdateFeeEarnerCodesDetails] *
* Copied from : NA *
* *
* Modification History : *
* 2021-06-23 Balamurugan C Created *
* 2022-03-02 Vignesh.M Modified Branch Implemented
* 2022-03-04 Ghayathri.S.V Script Modified for Insert and Edit
*******************************************************************************************************/
AS
BEGIN
IF( @Mode = 'EDIT' )
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[FeeEarnerCodes]
WHERE [Code] = @Code
)
BEGIN
UPDATE [dbo].[FeeEarnerCodes]
SET [Name] = @Name,
[Nominal] = @Nominal,
[Retired] = @Retired,
[Branch] = @Branch
WHERE [Code] = @Code
END
END
IF( @Mode = 'INSERT' )
BEGIN
IF NOT EXISTS
(
SELECT TOP 1 1
FROM [dbo].[FeeEarnerCodes]
WHERE [Code] = @Code
)
BEGIN
INSERT
INTO [dbo].[FeeEarnerCodes]
(
[Code],
[Name],
[Nominal],
[Retired],
[Branch]
)
VALUES (
@Code, /*[Code]*/
@Name, /*[Name]*/
@Nominal, /*[Nominal]*/
@Retired, /*[Retired]*/
@Branch /*[Branch]*/
)
END
END
IF( @Mode = 'DELETE' )
BEGIN
DELETE
FROM [dbo].[FeeEarnerCodes]
WHERE [Code] = @Code
END
END
GO
IF OBJECT_ID(N'KAAS_InsertUpdateNominalReportingSeq', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertUpdateNominalReportingSeq]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertUpdateNominalReportingSeq] (
@Code VARCHAR(4)='',
@Desc VARCHAR(40)='',
@Pb VARCHAR(1)='',
@Mode VARCHAR(20)=''
)
/*******************************************************************************************************
* *
* Stored Procedure Name : [dbo].[KAAS_InsertUpdateNominalReportingSeq] *
* Copied from : NA *
* *
* Modification History : *
* 2021-06-18 Balamurugan C Created
* 2022-03-04 Ghayathri.S.V Script Modified for Insert and Edit *
*******************************************************************************************************/
AS
BEGIN
IF( @Mode = 'EDIT' )
BEGIN
IF EXISTS (
SELECT TOP 1 1
FROM [dbo].[NominalReportSeq]
WHERE [Code] = @Code
)
BEGIN
UPDATE [dbo].[NominalReportSeq]
SET [DESC] = @Desc,
[PB] = @Pb
WHERE [CODE] = @Code
END
END
IF( @Mode = 'INSERT' )
BEGIN
IF NOT EXISTS (
SELECT TOP 1 1
FROM [dbo].[NominalReportSeq]
WHERE [Code] = @Code
)
BEGIN
INSERT
INTO [dbo].[NominalReportSeq]
(
[CODE],
[DESC],
[PB]
)
VALUES (
@Code, /*[Code]*/
@Desc, /*[DESC]*/
@Pb /*[PB]*/
)
END
END
IF( @Mode = 'DELETE' )
BEGIN
DELETE
FROM [dbo].[NominalReportSeq]
WHERE [CODE] = @Code
END
END
GO
IF OBJECT_ID(N'KAAS_InsertUpdatePaymentMethods', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertUpdatePaymentMethods]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertUpdatePaymentMethods]
(
@Id INT = 0,
@Description VARCHAR(500) = '',
@ClearDays INT = 0,
@Retired TINYINT = 0,
@Mode VARCHAR(20) = 'INSERTEDIT'
)
/*******************************************************************************************************
* Stored Procedure Name : [dbo].[KAAS_InsertUpdatePaymentMethods] *
* Copied from : NA *
* *
* Modification History : *
* 2021-06-22 Balamurugan C Created *
*******************************************************************************************************/
AS
BEGIN
SET NOCOUNT ON
IF( @Mode = 'INSERTEDIT' )
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[PaymentMethods]
WHERE [id] = @Id
)
BEGIN
UPDATE [dbo].[PaymentMethods]
SET [Description] = @Description,
[ClearDays] = @ClearDays,
[Retired] = @Retired
WHERE [id] = @Id
END
ELSE
BEGIN
INSERT
INTO [dbo].[PaymentMethods]
(
[Description],
[ClearDays],
[Retired]
)
VALUES (
@Description,
@ClearDays,
@Retired
)
END
END
ELSE
BEGIN
DELETE
FROM [dbo].[PaymentMethods]
WHERE [id] = @Id
END
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_InsertUpdateVATCodes', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertUpdateVATCodes]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertUpdateVATCodes]
(
@Code VARCHAR(1) = '',
@Rate DECIMAL(5,2) = 0,
@Mode VARCHAR(20) = '',
@Comments VARCHAR(2000) = '',
@Retired VARCHAR(1) = 'N'
)
/*******************************************************************************************************
* Stored Procedure Name : [dbo].[KAAS_InsertUpdateVATCodes] *
* Copied from : NA *
* *
* Modification History : *
* 2021-06-21 Balamurugan C Created
* 2022-03-04 Ghayathri.S.V Script Modified for Insert and Edit
* 2023-09-27 Ghayathri.S.V Inserted the Comments column while INSERTING AND UPDATING vatcodes *
* 2023-12-13 Vignesh M Added Retired field *
*******************************************************************************************************/
AS
BEGIN
IF( @Mode = 'EDIT' )
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[VATCodes]
WHERE [Code] = @Code
)
BEGIN
UPDATE [dbo].[VATCodes]
SET [Rate] = @Rate,
[Comments] = @Comments,
[RETIRED] = @Retired
WHERE [Code] = @Code
END
END
IF( @Mode = 'INSERT')
BEGIN
IF NOT EXISTS
(
SELECT TOP 1 1
FROM [dbo].[VATCodes]
WHERE [Code] = @Code
)
BEGIN
INSERT
INTO [dbo].[VATCodes]
(
[Code], /*[Code]*/
[Rate], /*[Rate]*/
[Comments], /*[Comments]*/
[RETIRED] /*[Retired]*/
)
VALUES (
@Code,
@Rate,
@Comments,
@Retired
)
END
END
IF( @Mode = 'DELETE')
BEGIN
DELETE
FROM [dbo].[VATCodes]
WHERE [Code] = @Code
END
END
GO
IF OBJECT_ID(N'KAAS_InsertUpdateWorkGroup', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertUpdateWorkGroup]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertUpdateWorkGroup]
(
@RecordID INT,
@WorkType VARCHAR(50),
@Group1 VARCHAR(10),
@Group2 VARCHAR(10),
@Result INT OUTPUT
)
/*******************************************************************************************************
* Stored Procedure Name : [dbo].[KAAS_InsertUpdateWorkGroup] * *
* *
* Modification History : *
* 2021-08-10 Natarajan S Created *
*******************************************************************************************************/
AS
BEGIN
SET NOCOUNT ON
IF(@RecordID = 0)
BEGIN
INSERT INTO [dbo].[WorkTypeGroupings] (
[WorkType],
[Group1],
[Group2])
VALUES (@WorkType,
@Group1,
@Group2
)
SET @Result = 1;
END
ELSE
BEGIN
UPDATE [dbo].[WorkTypeGroupings]
SET [WorkType] = @WorkType,
[Group1] = @Group1,
[Group2] = @Group2
WHERE RecordID = @RecordID
SET @Result = 1;
END
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_InsertUpdateWorkType', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertUpdateWorkType]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertUpdateWorkType]
(
@Mode VARCHAR(10),
@Type VARCHAR(5),
@OldWorkGroup varchar(50),
@WorkGroup VARCHAR(50),
@GroupOrder VARCHAR(10) NULL,
@Description VARCHAR(60),
@Result INT OUTPUT
)
/*******************************************************************************************************
* Stored Procedure Name : [dbo].[KAAS_InsertUpdateWorkType] * *
* *
* Modification History : *
* 2021-08-10 Natarajan S Created *
* 2022-04-26 Balamurugan C Modified - Increased Parameter Length and *
* added duplicate check condition *
*******************************************************************************************************/
AS
BEGIN
SET NOCOUNT ON
IF(@Type = 'ONE')
BEGIN
IF(@Mode = 'INSERT')
BEGIN
IF EXISTS(SELECT WorkGroup FROM WorkGroup1 WHERE WorkGroup=@WorkGroup)
BEGIN
SET @Result = 0;
END
ELSE
BEGIN
INSERT INTO [dbo].[WorkGroup1] (
[WorkGroup],
[GroupOrder],
[Description])
VALUES (@WorkGroup,
@GroupOrder,
@Description)
SET @Result = 1;
END
END
ELSE
BEGIN
IF EXISTS(SELECT WorkGroup FROM WorkGroup1 WHERE WorkGroup = @WorkGroup AND WorkGroup <> @OldWorkGroup)
BEGIN
SET @Result = 0;
END
ELSE
BEGIN
UPDATE [dbo].[WorkGroup1]
SET [WorkGroup] = @WorkGroup,
[GroupOrder] = @GroupOrder,
[Description] = @Description
WHERE [WorkGroup] = @OldWorkGroup
SET @Result = 1;
END
END
END
ELSE
BEGIN
IF(@Mode = 'INSERT')
BEGIN
IF EXISTS(SELECT WorkGroup2 FROM WorkGroup2 WHERE WorkGroup2 = @WorkGroup)
BEGIN
SET @Result = 0;
END
ELSE
BEGIN
INSERT INTO [dbo].[WorkGroup2] (
[WorkGroup2],
[Description2])
VALUES (@WorkGroup,
@Description)
SET @Result = 1;
END
END
ELSE
BEGIN
IF EXISTS(SELECT WorkGroup2 FROM WorkGroup2 WHERE WorkGroup2 = @WorkGroup AND WorkGroup2 <> @OldWorkGroup)
BEGIN
SET @Result = 0;
END
ELSE
BEGIN
UPDATE [dbo].[WorkGroup2]
SET [WorkGroup2] = @WorkGroup,
[Description2] = @Description
WHERE [WorkGroup2] = @OldWorkGroup
SET @Result = 1;
END
END
END
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_MaintainInsertMaster', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_MaintainInsertMaster]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_MaintainInsertMaster]
(
@MasterName VARCHAR(50),
@Code VARCHAR(100),
@Description VARCHAR(MAX),
@Retired VARCHAR(2),
@Childcare CHAR(1) = '',
@RGBColour INT = 0,
@DefaultRate FLOAT = 0,
@ClientCharge INT = 0,
@Value FLOAT = 0,
@ClientValue FLOAT = 0,
@User VARCHAR(8) = '' ,
@Mode VARCHAR(10),
@NewCodeVal VARCHAR(20) = '',
@BackGroundColour VARCHAR(30) = '#FF008000',
@Result BIT OUTPUT
)
AS
/*******************************************************************************************************
*This procedure is used to Fetch details FROM the below listed Masters table. *
* [dbo].[KAAS_MaintainInsertMaster] 'UndertakingStatus','as','yu','N','',0,0,0,0,0,'','INSERT','yu',0
select * from undertakingstatus *
* Stored Procedure Name : [dbo].[KAAS_MaintainInsertMaster] *
* Copied from : [dbo].[ky_NETMaintainInsertMaster] *
* *
* Modification History : *
* 2021-06-16 NATARAJAN S Created *
* 2021-07-01 Prabhu V Changed Master Name for File Colour as per *
Master Name we provided in front end and Added Retired for Update *
* 2021-07-02 Prabhu V SP structure changed as per coding standrard in Keyhouse *
* 2023-08-23 Ghayathri.S.V Modified the billing update procedure as per coding in keyhouse *
* 2023-08-24 Ghayathri.S.V Modified the client group procedure as per coding in keyhouse *
* 2023-08-28 Ghayathri.S.V Inserted the Document CLass and Type
procedure as per coding in keyhouse *
* 2023-08-29 Ghayathri.S.V Modified the Marital Status,Tax Type, Narratives,Tax Head,
Salutation Codes to fetch the grid data *
* 2023-11-28 Revathy.D Modified the Item Types Codes to fetch the grid data *
* 2023-11-29 Revathy.D Added SMS template *
* 2023-12-14 Vignesh M Modified the Retired field is added for Add/Edit Nominal Types *
* 2023-12-18 Revathy.D Modified param for Charge Type *
* 2024-12-03 Sadiq Added FeeType also in the SP(19194) *
*******************************************************************************************************/
BEGIN
DECLARE @Command VARCHAR(MAX)
DECLARE @HandleRate AS FLOAT
DECLARE @EventDesc AS VARCHAR(300)
SET @HandleRate = 0
SET @EventDesc=''
IF(@Mode = 'INSERT')
BEGIN
Exec @Result = [KAAS_CheckCodeExists_Maintenance]
@Mode,
@MasterName,
@Code,
@Description,
@NewCodeVal
END
IF(@Result = 0)
BEGIN
SET @Result = 0
END
ELSE
BEGIN
IF (@MasterName='Departments')
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[departments]
([Code],
[Description],
[Desc],
[Retired])
VALUES (@Code,
@Description,
@Description,
@Retired)
ELSE
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[departments] WHERE RTRIM([Code])= @Code)
UPDATE
[dbo].[departments]
SET [Code] = @NewCodeVal,
[Description] = @Description,
[Desc] = @Description,
[Retired] = @Retired
WHERE [Code] = @Code
END
ELSE IF (@MasterName='Worktypes')
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[WorkTypes]
([Code],
[Description],
[Desc],
[Retired])
VALUES (@Code,
@Description,
@Description,
@Retired)
ELSE
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[WorkTypes] WHERE RTRIM([Code])= @Code)
UPDATE
[dbo].[WorkTypes]
SET [Code] = @NewCodeVal,
[Description] = @Description,
[Desc] = @Description,
[Retired] = @Retired
WHERE [Code] = @Code
END
ELSE IF (@MasterName='NominalTypes')
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[NominalTypes]
([ntyCode],
[ntydesc],
[Retired])
VALUES (@Code,
@Description,
@Retired)
ELSE
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[NominalTypes] WHERE RTRIM([ntyCode]) = @Code)
UPDATE [dbo].[NominalTypes]
SET [ntyCode] = @NewCodeVal,
[ntydesc] = @Description ,
[Retired] = @Retired
WHERE [ntyCode] = @Code
END
ELSE IF ( @MasterName = 'CategoryType' )
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[CategoryType]
([CategoryType],
[Description])
VALUES (@Code,
@Description)
ELSE
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[CategoryType] WHERE RTRIM(CategoryType) = @Code)
UPDATE
[dbo].[CategoryType]
SET [CategoryType] = @NewCodeVal,
[Description] = @Description
WHERE Rtrim(CategoryType) = @Code
END
ELSE IF (@MasterName='NationCodes')
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[NationCodes]
([Nation],
[Desc])
VALUES (@Code,
@Description)
ELSE
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[NationCodes] WHERE RTRIM([Nation]) = @Code)
UPDATE
[dbo].[NationCodes]
SET
[Nation] = @NewCodeVal,
[Desc] = @Description
WHERE Rtrim([Nation]) = @Code
END
ELSE IF (@MasterName='DepositType')
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO [dbo].[DepositType]
([Code],
[Description]
)
VALUES (@Code,
@Description)
ELSE
UPDATE
[dbo].[DepositType]
SET
[Code] = @NewCodeVal,
[Description] = @Description
WHERE [Code] = @Code
END
ELSE IF (@MasterName='OutlayCode')
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[OutlayCode]
([Code],
[Description])
VALUES (@Code,
@Description)
ELSE
UPDATE
[dbo].[OutlayCode]
SET
[Code] = @NewCodeVal,
[Description] = @Description
WHERE [Code] = @Code
END
ELSE IF (@MasterName='Narratives')
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[Narratives]
([Code],
[Narrative])
VALUES (@Code,
@Description)
ELSE
UPDATE
[dbo].[Narratives]
SET [Code] = @NewCodeVal,
[Narrative] = @Description
WHERE [Code] = @Code
END
ELSE IF (@MasterName='ServiceCodes')
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[ServiceCodes]
([Code],
[Description])
VALUES (@Code,
@Description)
ELSE
UPDATE
[dbo].[ServiceCodes]
SET [Code] = @NewCodeVal,
[Description] = @Description
WHERE [Code] = @Code
END
ELSE IF (@MasterName='Branch')
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[Branch]
([BranchCode],
[Description],
[Retired])
VALUES (@Code,
@Description,
CASE @Retired WHEN 'Y' THEN 1 ELSE 0 END)
ELSE
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[Branch] WHERE RTRIM([BranchCode]) = @Code)
UPDATE
[dbo].[Branch]
SET [BranchCode] = @NewCodeVal,
[Description] = @Description,
[Retired] = CASE @Retired WHEN 'Y' THEN 1 ELSE 0 END
WHERE [BranchCode] = @Code
END
ELSE IF (@MasterName='UndertakingStatus')
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[UndertakingStatus]
([StatusDesc],
[Retired])
VALUES (@NewCodeVal,
@Retired)
ELSE
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[UndertakingStatus] WHERE RTRIM([RecordID]) = @Code)
UPDATE
[dbo].[UndertakingStatus]
SET
[StatusDesc] = @NewCodeVal,
[Retired] = @Retired
WHERE [RecordID] = @Code
END
ELSE IF (@MasterName='FeeEarners')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[FeeEarnerCodes] WHERE RTRIM([Code])=@Code )
BEGIN
UPDATE
[dbo].[FeeEarnerCodes]
SET
[Name] = @Description,
[Retired] = @Retired
WHERE RTRIM([Code]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[FeeEarnerCodes]
([Code],
[Name],
[Retired] )
VALUES (@Code,
@Description,
@Retired)
END
END
ELSE IF (@MasterName='FileColours')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[FileColours] WHERE RTRIM(ISNULL([ColourCode],''))=@Code )
BEGIN
UPDATE
[dbo].[FileColours]
SET
[ColourCode] = @Code,
[ColourDesc] = @Description,
[RGBColour] = ISNULL(@RGBColour, -1),
[BackGroundColour] = UPPER(@BackGroundColour),
[ForegroundColour] = UPPER(@BackGroundColour),
[Retired] = @Retired
WHERE
RTRIM(ISNULL([ColourCode],'')) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[FileColours]
([ColourCode],
[ColourDesc],
[RGBColour],
[Retired],
[BackgroundColour],
[ForegroundColour])
VALUES
(@Code,
@Description,
ISNULL(@RGBColour, -1),
@Retired,
UPPER(@BackGroundColour),
UPPER(@BackGroundColour))
END
END
ELSE IF (@MasterName='Maritals')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM dbo.[MiscCodes] WHERE RTRIM([CdeCode])=@Code AND [CdeType]='MRS')
BEGIN
UPDATE
[dbo].[MiscCodes]
SET
[CdeDesc] = @Description,
[Retired] = @Retired
WHERE
RTRIM([CdeCode]) = @Code AND [CdeType] = 'MRS'
END
ELSE
BEGIN
INSERT INTO
[dbo].[MiscCodes]
([CdeType],
[CdeCode],
[CdeDesc],
[Retired])
VALUES
('MRS',
@Code,
@Description,
@Retired)
END
END
ELSE IF (@MasterName='TaxType')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[TaxType] WHERE RTRIM([TaxType])=@Code)
BEGIN
UPDATE
[dbo].[TaxType]
SET
[TaxDesc] = @Description
WHERE
RTRIM([TaxType]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[TaxType]
([TaxType],
[TaxDesc])
VALUES
(@Code,
@Description)
END
END
ELSE IF (@MasterName='DesktopNarr')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[DesktopNarr] WHERE RTRIM([Code])=@Code)
BEGIN
UPDATE
[dbo].[DesktopNarr]
SET
[Code] = @Code,
[Narrative] = @Description,
[Retired] = @Retired
WHERE
RTRIM([Code]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[DesktopNarr]
([Code],
[Narrative],
[Retired])
VALUES
(@Code,
@Description,
@Retired)
END
END
ELSE IF (@MasterName='TimeAdminCodes')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[TimeAdminCodes] WHERE RTRIM([NCCode]) = @Code)
BEGIN
UPDATE
[dbo].[TimeAdminCodes]
SET
[Description] = @Description,
[Retired] = @Retired
WHERE
RTRIM([NCCode]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[TimeAdminCodes]
([NCCode],
[Description],
[Retired])
VALUES
(@Code,
@Description,
@Retired)
END
END
ELSE IF (@MasterName='DocumentClasses')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[DocumentClasses] WHERE RTRIM([CLASSCODE]) = @Code)
BEGIN
UPDATE
[dbo].[DocumentClasses]
SET
[CLASSDESCRIPTION] = @Description,
[Retired] = @Retired
WHERE
RTRIM([CLASSCODE]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[DocumentClasses]
([CLASSCODE],
[CLASSDESCRIPTION],
[Retired])
VALUES
(@Code,
@Description,
@Retired)
END
END
ELSE IF (@MasterName='filetypes')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[filetypes] WHERE RTRIM([Type]) = @Code)
BEGIN
UPDATE
[dbo].[filetypes]
SET
[Description] = @Description
--[FilePath] = @FilePath
WHERE
RTRIM([Type]) = @Code
END
ELSE
BEGIN
INSERT
INTO [dbo].[filetypes]
([Type],
[Description]
--[FilePath]
)
VALUES (@Code,
@Description
--@FilePath
)
END
END
ELSE IF (@MasterName='BillDescriptions')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[BillDescriptions] WHERE RTRIM(ISNULL([Number],'')) = @Code)
BEGIN
UPDATE [dbo].[BillDescriptions]
SET
[BillDescriptions] = @Description,
[Retired] = @Retired
WHERE
[Number] = @Code
END
ELSE
BEGIN
INSERT INTO [dbo].[BillDescriptions]
([SearchField],
[BillDescriptions],
[Retired])
VALUES
(@Code,
@Description,
@Retired)
END
END
ELSE IF (@MasterName='Undertaking')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[UndertakingStatus] WHERE [RecordID] = @Code)
BEGIN
UPDATE [dbo].[UndertakingStatus]
SET
[StatusDesc] = @Description,
[Retired] = @Retired
WHERE
[RecordID] = @Code
END
ELSE
BEGIN
INSERT INTO [dbo].[UndertakingStatus]
([StatusDesc],
[Retired])
VALUES
(@Description,
@Retired)
END
END
ELSE IF (@MasterName='Branch')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[Branch] WHERE RTRIM([BranchCode])=@Code)
BEGIN
UPDATE [dbo].[Branch]
SET
[Description] = @Description
WHERE
RTRIM([BranchCode]) = @Code
END
ELSE
BEGIN
INSERT INTO [dbo].[Branch]
([BranchCode],
[Description])
VALUES
(@Code,
@Description)
END
END
ELSE IF (@MasterName='TaxHead')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[TaxHead] WHERE RTRIM([TaxHead])=@Code)
BEGIN
UPDATE [dbo].TaxHead
SET
[Description] = @Description
WHERE
RTRIM([TaxHead])=@Code
END
ELSE
BEGIN
INSERT INTO [dbo].[TaxHead]
([TaxHead],
[Description])
VALUES
(@Code,
@Description)
END
END
ELSE IF (@MasterName='SalutationCodes')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM SalutationCodes WHERE RTRIM(Code)=@Code)
BEGIN
UPDATE [dbo].[SalutationCodes]
SET
[Description] = @Description
WHERE
RTRIM([Code])=@Code
END
ELSE
BEGIN
INSERT INTO [dbo].[SalutationCodes]
([Code],
[Description])
VALUES
(@Code,
@Description)
END
END
ELSE IF (@MasterName='Charge Type')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[ChargeType] WHERE RTRIM([ChargeType])=@Code AND RTRIM([TaxHead])=@NewCodeVal)
BEGIN
UPDATE [dbo].[ChargeType]
SET
[ChargeType] = @Code,
[Description] = @Description
WHERE
RTRIM([ChargeType]) = @Code
AND RTRIM([TaxHead]) = @NewCodeVal
END
ELSE
BEGIN
INSERT INTO [dbo].[ChargeType]
([ChargeType],
[Description],
[TaxHead])
VALUES
(@Code,
@Description,
@NewCodeVal)
END
END
ELSE IF (@MasterName='Item Types')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[ItemTypes] WHERE RTRIM([TypeCode])=@Code)
BEGIN
UPDATE [dbo].[ItemTypes]
SET
[TypeDescription] = @Description,
[DeedType] = CASE WHEN @Childcare = 'D' THEN 1 ELSE 0 END,
[WillType] = CASE WHEN @Childcare = 'W' THEN 1 ELSE 0 END
WHERE
RTRIM([TypeCode]) = @Code
END
ELSE
BEGIN
INSERT INTO [dbo].[ItemTypes]
([TypeCode],
[TypeDescription],
[DeedType],
[WillType])
VALUES
(@Code,
@Description,
CASE WHEN @Childcare = 'D' THEN 1 ELSE 0 END,
CASE WHEN @Childcare = 'W' THEN 1 ELSE 0 END)
END
END
ELSE IF (@MasterName='Location')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[ItemLocations] WHERE RTRIM([Code])=@Code)
BEGIN
UPDATE [dbo].[ItemLocations]
SET
[Description] = @Description,
[Fullyn] = @childcare,
[Retired] = @Retired
WHERE
RTRIM([Code]) = @Code
END
ELSE
BEGIN
INSERT INTO [dbo].[ItemLocations]
([Code],
[Description],
[Fullyn],
[Retired])
VALUES
(@Code,
@Description,
@childcare,
@Retired )
END
END
ELSE IF (@MasterName='GroupModule')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[ModuleGroup] WHERE RTRIM([GroupName])=@Code)
BEGIN
UPDATE [dbo].[ModuleGroup]
SET
[Description] = @Description,
[IsActive] = @Retired
WHERE
RTRIM([GroupName]) = @Code
END
ELSE
BEGIN
INSERT INTO [dbo].[ModuleGroup]
([GroupName],
[Description],
[IsActive])
VALUES
(@Code,
@Description,
@Retired)
END
END
ELSE IF (@MasterName='Occupation')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[MiscCodes] WHERE RTRIM([CdeCode]) = RTRIM(@Code) AND RTRIM([CdeType]) = 'OCC')
BEGIN
UPDATE
[dbo].[MiscCodes]
SET
[CdeDesc] = @Description
WHERE
RTRIM([CdeCode]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[MiscCodes]
([CdeType],
[CdeCode],
[CdeDesc],
[CdeTeam] )
VALUES
('OCC',
@Code,
@Description,
'')
END
END
ELSE IF (@MasterName='Contact Type')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[MiscCodes] WHERE RTRIM([CdeCode]) = RTRIM(@Code) AND RTRIM([CdeType]) = 'CCL')
BEGIN
UPDATE
[dbo].[MiscCodes]
SET
[CdeDesc] = @Description
WHERE
RTRIM([CdeCode]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[MiscCodes]
([CdeType], [CdeCode], [CdeDesc], [CdeTeam] )
VALUES
('CCL',
@Code,
@Description,
'')
END
END
ELSE IF (@MasterName='ClientGroup')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[ClientGroup] WHERE RTRIM([GroupCode]) = RTRIM(@Code))
BEGIN
UPDATE
[dbo].[ClientGroup]
SET
[GroupName] = @Description
WHERE
RTRIM([GroupCode]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[ClientGroup]
([GroupCode],
[GroupName] )
VALUES
(@Code,
@Description)
END
END
ELSE IF (@MasterName='HandlerChargeGroup')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[HandlerChargeGroups] WHERE RTRIM(ISNULL([Code],'')) = RTRIM(@Code))
BEGIN
SET @HandleRate=(Select [Defaultrate] from [dbo].[HandlerChargeGroups] where RTRIM(ISNULL([Code],'')) = @Code)
IF @HandleRate <> @DefaultRate
BEGIN
SET @EventDesc='Updated Default Rate from ( ' + CONVERT(varchar(10),@HandleRate)+ ' ) to ( ' + CONVERT(varchar(10),@DefaultRate) + ' )'
INSERT INTO
[dbo].RateChangesLog
([User],
[Event],
[FromWhere],
[UpdatedDate],
[AffectedTo])
VALUES
(@User,
@EventDesc,
'Maintain Handler Charge Group',
GETDATE(),
@Code)
END
UPDATE
[dbo].[HandlerChargeGroups]
SET
[Name] = @Description,
[DefaultRate] = @DefaultRate
WHERE
RTRIM(ISNULL([Code],'')) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[HandlerChargeGroups]
([Code],
[Name],
[DefaultRate])
VALUES
(@Code,
@Description,
@DefaultRate)
END
END
ELSE IF (@MasterName='StatusCodes')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[StatusCodes] WHERE RTRIM([Code]) = RTRIM(@Code))
BEGIN
UPDATE
[dbo].[StatusCodes]
SET
[Description] = @Description,
[Retired] = @Retired
WHERE
RTRIM([Code]) = @Code
UPDATE [SM]
SET
[SM].[MatterStatusDescription] = RTRIM(ISNULL(@Description, ''))
FROM [dbo].[SearchMatters] [SM]
WHERE [SM].[MatterStatus] = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[StatusCodes]
([Code],
[Description],
[Retired])
VALUES
(@Code,
@Description,
@Retired)
END
END
ELSE IF (@MasterName='UDFCategory')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM UDFCategory WHERE id=@Code)
BEGIN
UPDATE
[dbo].[UDFCategory]
SET
[UDFCategory] = @Description
WHERE
[ID] = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[UDFCategory]
([UDFCategory] )
VALUES
(@Description)
END
END
ELSE IF (@MasterName='FeeTypes')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM FeeTypes WHERE id=@Code)
BEGIN
UPDATE
[dbo].[FeeTypes]
SET
[Description] = @Description,
[Retired] = CASE
WHEN @Retired = 'Y' THEN 1
ELSE 0
END
WHERE
[ID] = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[FeeTypes]
([Description],[Retired] )
VALUES
(@Description,
CASE
WHEN @Retired = 'Y' THEN 1
ELSE 0
END)
END
END
ELSE IF (@MasterName='SDLTForm')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[SDLTForm] WHERE [FormID] = @RGBColour)
BEGIN
UPDATE
[dbo].[SDLTForm]
SET
[FormName] = @Code ,
[Description] = @Description
WHERE
[FormID] = @RGBColour
END
ELSE
BEGIN
INSERT INTO
[dbo].[SDLTForm]
([FormName],
[Description])
VALUES
(@Code,
@Description)
END
END
ELSE IF (@MasterName='UndertakingsCategory')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[UndertakingsCategory] WHERE RTRIM([Code])= RTRIM(@Code))
BEGIN
UPDATE
[dbo].[UndertakingsCategory]
SET
[Description] = @Description
WHERE
RTRIM([Code]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[UndertakingsCategory]
([Code],
[Description])
VALUES
(@Code,
@Description)
END
END
ELSE IF (@MasterName='KYCType')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[KYCType] WHERE RTRIM([PK_Type])= RTRIM(@Code))
BEGIN
UPDATE
[dbo].[KYCType]
SET
[Description] = @Description
WHERE
RTRIM([PK_Type]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[KYCType]
([Description])
VALUES
(@Description)
END
END
ELSE IF (@MasterName='IntroBy')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[IntroductionBy] WHERE RTRIM([Pk_Intro])= RTRIM(@Code))
BEGIN
UPDATE
[dbo].[IntroductionBy]
SET
[Description] = @Description
WHERE
RTRIM([Pk_Intro]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[IntroductionBy]
([Description])
VALUES
(@Description)
END
END
ELSE IF (@MasterName='ClientType')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[ClientType] WHERE RTRIM([PK_ClientType])= RTRIM(@Code))
BEGIN
UPDATE
[dbo].[ClientType]
SET
[Description] = @Description
WHERE
RTRIM([PK_ClientType]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[ClientType]
([Description])
VALUES
(@Description)
END
END
ELSE IF (@MasterName='ID Code')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[IDCodes] WHERE RTRIM(IdCode)= RTRIM(@Code))
BEGIN
UPDATE
[dbo].[IDCodes]
SET
[Description] = @Description,
[Category] = @Retired
WHERE
RTRIM([IdCode]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[IdCodes]
([IdCode],
[Description],
[Category])
VALUES
(@Code,
@Description,
@Retired)
END
END
ELSE IF (@MasterName='Outlay Code')
BEGIN
IF [dbo].[ISSAM4]() = 0
BEGIN
SET @Command = ' IF EXISTS(SELECT TOP 1 1 FROM [dbo].[OutlayCode] WHERE RTRIM([Code])= RTRIM(''' + Replace(@Code, '''', '''''') + '''))
BEGIN
UPDATE
OutlayCode
SET
[Description] = ''' + Replace(@Description, '''', '''''') + '''
WHERE
RTRIM(Code) = ''' + Replace(@Code, '''', '''''') + '''
END
ELSE
BEGIN
INSERT INTO
OutlayCode(Code,[Description])
VALUES
(''' + Replace(@Code, '''', '''''') + ''',''' + Replace(@Description, '''', '''''') + ''')
END'
EXEC (@Command)
END
ELSE
BEGIN
SET @Command = ' IF EXISTS(SELECT TOP 1 1 FROM OutlayCode WHERE RTRIM([OutlayCode])= RTRIM(''' + Replace(@Code, '''', '''''') + '''))
BEGIN
UPDATE
OutlayCode
SET
[Description] = ''' + Replace(@Description, '''', '''''') + '''
WHERE
RTRIM([OutlayCode]) = ''' + Replace(@Code, '''', '''''') + '''
END
ELSE
BEGIN
INSERT INTO
OutlayCode([OutlayCode],[Description])
VALUES
(''' + Replace(@Code, '''', '''''') + ''',''' + Replace(@Description, '''', '''''') + ''')
END'
EXEC (@Command)
END
END
ELSE IF (@MasterName='Interest')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[MiscCodes] WHERE RTRIM([CdeCode])=@Code AND [CdeType]='IRT')
BEGIN
UPDATE
[dbo].[MiscCodes]
SET
[CdeCode] = @Code,
[CdeDesc] = @Description,
[Retired] = @Retired
WHERE
RTRIM([CdeCode])=@Code AND [CdeType] ='IRT'
END
ELSE
BEGIN
INSERT INTO
[dbo].[MiscCodes]
([CdeType],
[CdeCode],
[CdeDesc],
[Retired])
VALUES
('IRT',
@Code,
@Description,
@Retired)
END
END
ELSE IF (@MasterName='CourtFees')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[CourtFees] WHERE RTRIM([Code])=@Code)
BEGIN
UPDATE
[dbo].[CourtFees]
SET
[Code] = @Code,
[Description] = @Description,
[ChargeClient] = @clientCharge,
[Value] = @value,
[ClientValue] = @ClientValue
WHERE
[Code] = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[CourtFees]
([Code],
[Description],
[ChargeClient],
[Value],
[ClientValue])
VALUES
(@Code,
@Description,
@clientCharge,
@value,
@ClientValue)
END
END
ELSE IF (@MasterName='SMSTemplates')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[SMSMessageTemplates] WHERE RTRIM([Code])=@Code)
BEGIN
UPDATE
[dbo].[SMSMessageTemplates]
SET
[Code] = @Code,
[Message] = @Description,
[Retired] = CASE WHEN @Retired = 'Y' THEN 1 ELSE 0 END
WHERE
[Code] = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[SMSMessageTemplates]
([Code],
[Message],
[Retired])
VALUES
(@Code,
@Description,
CASE WHEN @Retired = 'Y' THEN 1 ELSE 0 END)
END
END
SET @Result=1
END
END
GO
IF OBJECT_ID(N'KAAS_MatterOpenClosed',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_MatterOpenClosed]
GO
CREATE PROCEDURE
[dbo].[KAAS_MatterOpenClosed]
(@Matter VARCHAR(20),
@Closed CHAR(1))
AS
/************************************************************************************
* Process to reopen closed matter records from archive enquiry *
* *
* Stored Procedure Name : [dbo].[KAAS_MatterOpenClosed]
* Copied From : [dbo].[ky_NETToggleMatterOpenClosed]
* *
* Modification History: *
* 2022-05-31 Ghayathri.S.V Created *
************************************************************************************/
BEGIN
DECLARE @XML NVARCHAR(MAX)
DECLARE @Return INT
SET @XML = CONVERT(NVARCHAR(MAX),
(SELECT *
FROM (SELECT @Matter AS [Matter],
@Closed AS [Closed],
0 AS [KeepOriginalCloseDate]) [Data]
FOR XML AUTO))
EXEC [dbo].[KAAS_MatterOpenClosedXML] @XML
END
GO
IF OBJECT_ID(N'KAAS_MatterOpenClosedXML',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_MatterOpenClosedXML]
GO
CREATE PROCEDURE
[dbo].[KAAS_MatterOpenClosedXML]
(@XML NVARCHAR(MAX))
AS
/************************************************************************************
* Stored Procedure Name : [dbo].[KAAS_MatterOpenClosedXML]
* Copied From : [dbo].[ky_NETToggleMatterOpenClosedXML]
*
* Re-open/close a matter
*
* Modification History: *
* 2022-05-31 Ghayathri.S.V Created
************************************************************************************/
BEGIN
DECLARE @MATTER VARCHAR(20)
DECLARE @Closed VARCHAR(1)
DECLARE @KEEPORIGINALCLOSEDATE BIT
DECLARE @iSL INT
BEGIN TRY
EXEC sp_xml_preparedocument @iSL OUTPUT, @XML
END TRY
BEGIN CATCH
EXEC sp_xml_preparedocument @iSL OUTPUT, N''
END CATCH
SELECT @MATTER = [XML].[Matter],
@Closed = [XML].[Closed],
@KEEPORIGINALCLOSEDATE = ISNULL([XML].[KeepOriginalCloseDate], 0)
FROM OPENXML(@iSL, N'Data')
WITH ([Matter] VARCHAR(20) '@Matter',
[Closed] VARCHAR(1) '@Closed',
[KeepOriginalCloseDate] BIT '@KeepOriginalCloseDate') AS [XML]
BEGIN TRY
EXEC sp_xml_removedocument @iSL
END TRY
BEGIN CATCH
END CATCH
-- Don't execute if parameters are invalid
IF ISNULL(@MATTER, '') = '' OR ISNULL(@Closed, '') = ''
BEGIN
RETURN
END
-- Original procedure code from here down
DECLARE @AlreadyClosed INT
DECLARE @HasOutstandingBal INT
DECLARE @HasOutstandingTimeBal INT
DECLARE @HasOutstandingChargeBal INT
DECLARE @HasOutstandingRec INT
DECLARE @HasOutstandingDiary INT
DECLARE @HasOutstandingUndertakings INT
DECLARE @HasUnallocatedReceipts INT
DECLARE @HasDraftBills INT
DECLARE @ClientCode VARCHAR(10)
DECLARE @Closables TABLE
([AlreadyClosed] INT,
[HasOutstandingBal] INT,
[HasOutstandingTimeBal] INT,
[HasOutstandingChargeBal] INT,
[HasOutstandingRec] INT,
[HasOutstandingDiary] INT,
[HasOutstandingUndertakings] INT,
[HasUnallocatedReceipts] INT,
[HasDraftBills] INT)
INSERT
INTO @Closables
([AlreadyClosed],
[HasOutstandingBal],
[HasOutstandingTimeBal],
[HasOutstandingChargeBal],
[HasOutstandingRec],
[HasOutstandingDiary],
[HasOutstandingUndertakings],
[HasUnallocatedReceipts],
[HasDraftBills])
EXEC [dbo].[KAAS_ReopenMatterClosable] @MATTER
SELECT @AlreadyClosed = [MATS].[AlreadyClosed],
@HasOutstandingBal = [MATS].[HasOutstandingBal],
@HasOutstandingTimeBal = [MATS].[HasOutstandingTimeBal],
@HasOutstandingChargeBal = [MATS].[HasOutstandingChargeBal],
@HasOutstandingRec = [MATS].[HasOutstandingRec],
@HasOutstandingDiary = [MATS].[HasOutstandingDiary],
@HasOutstandingUndertakings = [MATS].[HasOutstandingUndertakings],
@HasUnallocatedReceipts = [MATS].[HasUnallocatedReceipts],
@HasDraftBills = [MATS].[HasDraftBills]
FROM @Closables MATS
IF NOT (@AlreadyClosed IS NULL)
BEGIN
IF (@AlreadyClosed = 1)
BEGIN
IF (@Closed = 'N')
BEGIN
UPDATE MAT
SET MAT.[OrgClosedDate] = CASE WHEN @KEEPORIGINALCLOSEDATE = 1
THEN [MAT].[OrgClosedDate]
ELSE MAT.[CloseDate] END,
MAT.[CloseDate] = NULL,
--MAT.[DestroyDate] = NULL,
MAT.[ReOpenedDate] = GetDate(),
MAT.[Closed] = 'N'
FROM [dbo].[matters] MAT
WHERE MAT.[Code] = @MATTER
END
END
ELSE
BEGIN
IF (@Closed = 'Y') AND (@HasOutstandingBal = 0) AND (@HasOutstandingDiary = 0) AND (@HasOutstandingUndertakings = 0) AND (@HasUnallocatedReceipts = 0)
BEGIN
UPDATE MAT
SET MAT.[CloseDate] = GetDate(),
MAT.[ReOpenedDate] = NULL,
MAT.[Closed] = 'Y'
FROM [dbo].[matters] MAT
WHERE MAT.[Code] = @MATTER
DELETE RML
FROM [dbo].[RecentMatterList] RML
WHERE RML.[MATTER] = @MATTER
END
END
END
SELECT @ClientCode = MAT.[ClientCode]
FROM [dbo].[matters] MAT
WHERE MAT.[Code] = @MATTER
IF RTRIM(ISNULL(@ClientCode, '')) <> ''
BEGIN
/* Update our contact's LastMatter and OpenMatters */
EXEC [dbo].[KAAS_UpdateContactLastMatter] @ClientCode
END
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_OffSetGetClosedMatters'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_OffSetGetClosedMatters]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_OffSetGetClosedMatters]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'Code',
@SortOrder VARCHAR(100) = 'ASC'
)
AS
/************************************************************************************
* Fetching Closed Matter Details *
* Stored Procedure Name : [dbo].[KAAS_OffSetGetClosedMatters] *
* Modification History: *
* 2021-06-29 Ghayathri S.V Created to Fetch the Closed Matter details for SAM
* 2021-07-05 Ghayathri S.V Modified to implement dynamic sql query to fetch sort
and search datas
* 2022-08-10 Ghayathri.S.V Modified - To add FeCode column
for server side pagination search
************************************************************************************/
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql = 'SELECT A.[Code] AS [Code],
A.[FECODE] AS [FECode],
B.[Name] AS [Name],
A.[Description] AS [Description],
A.[OldRef] AS [OldRef],
A.[FileNum] AS [FileNum],
A.[Dept] AS [Dept],
A.[WTYPE] AS [WorkType],
A.[User1] AS [Ref1],
A.[User2] AS [Ref2],
A.[User3] AS [Ref3],
A.[CloseDate] AS [CloseDate],
A.[OrgClosedDate] AS [OriginalClosedDate],
A.[ReOpenedDate] AS [ReopenedDate],
B.[Address] AS [Address],
A.[Comment] AS [Comment]
FROM [dbo].[Matters] A
LEFT JOIN [dbo].[contacts] B
ON A.[CLIENTCODE]= B.[CODE]
WHERE [Closed] = ''Y''' +
'AND (
A.[Matter] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
A.[Description] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
A.[Code] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
A.[FECODE] LIKE ' + '''%' + @SearchString + '%' + '''' +'
)
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
SELECT COUNT(*) 'TotalRecord'
FROM [dbo].[Matters] A
WHERE [Closed] = 'Y'
AND (
A.[Matter] LIKE '%' + @SearchString + '%'
OR
A.[Description] LIKE '%' + @SearchString + '%'
OR
A.[Code] LIKE '%' + @SearchString + '%'
OR
A.[FECODE] LIKE '%' + @SearchString + '%'
)
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_OffsetGetOpenMatterDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_OffsetGetOpenMatterDetails]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_OffsetGetOpenMatterDetails]
(
@Search NVARCHAR(MAX),
@PageNumber INT,
@PageSize INT,
@ColumnNames VARCHAR(50) = '',
@FilterValues VARCHAR(50) = '',
@orderby NVARCHAR(50)= '',
@order NVARCHAR(4) = '',
@Mode VARCHAR(10) = 'Grid'
)
AS
/************************************************************************************ *
* Fetching Open Matter Details *
* Stored Procedure Name : [dbo].[KAAS_OffsetGetOpenMatterDetails] *
* Copied from : [dbo].[KAAS_XMLMatterSearch] *
* Modification History: *
* 2022-07-05 Ghayathri S.V Created to Fetch the Browse Matter details for SAM *
using dynamic query and offset functionality *
* 2022-09-01 Ghayathri S.V Implemented logic to fetch recent matter list for *
Browse open matters table in SAM *
*
* 2023-09-25 Revathy.D Included a column for OpenInvoice details *
* 2023-10-31 Revathy.D Modified - Included a column for comments and branch *
* 2024-01-19 Balamurugan.C Modified - Added Dashboard condition for final select *
* 2024-02-08 Balamurugan.C Modified - Added Contact Name and Matter Description *
* 2024-03-14 Vignesh M Modified - As per Client suggestion
Handler privileges has been hidden *
* 2024-06-13 Revathy.D Modified - Included a column for comp matter and billing *
* 2024-10-01 Balamurugan.C Modified - Included a column for Branch Code *
* 2024-11-07 Ghayathri.S.V Modified - To fetch telephone and mobile number *
* 2024-11-19 Balamurugan.C Modified - Added presicions for numerice columns *
************************************************************************************/
BEGIN
DECLARE @closed NCHAR(1)
DECLARE @howmany INT
DECLARE @handler NVARCHAR(10)
DECLARE @which INT
DECLARE @BitWiseID BIGINT
DECLARE @searchtext VARCHAR(MAX)
DECLARE @searchonlycode VARCHAR(3)
DECLARE @departmentdesc VARCHAR(50)
DECLARE @department VARCHAR(5)
DECLARE @worktypedesc VARCHAR(50)
DECLARE @worktype VARCHAR(5)
DECLARE @filecolourdesc VARCHAR(20)
DECLARE @filecolour VARCHAR(3)
DECLARE @feecode VARCHAR(10)
DECLARE @includename BIT
DECLARE @includedescription BIT
DECLARE @includeaddress BIT
DECLARE @includeemail BIT
DECLARE @includecode BIT
DECLARE @includeoldref BIT
DECLARE @includeuser1 BIT
DECLARE @andorname VARCHAR(3)
DECLARE @andornamevalue VARCHAR(200)
DECLARE @andordescription VARCHAR(3)
DECLARE @andordescriptionvalue VARCHAR(200)
DECLARE @andoraddress VARCHAR(3)
DECLARE @andoraddressvalue VARCHAR(200)
DECLARE @andorcode VARCHAR(3)
DECLARE @andorcodevalue VARCHAR(200)
DECLARE @andorfeecode VARCHAR(3)
DECLARE @andorfeecodevalue VARCHAR(200)
DECLARE @andoroldref VARCHAR(3)
DECLARE @andoroldrefvalue VARCHAR(200)
DECLARE @andordept VARCHAR(3)
DECLARE @andordeptvalue VARCHAR(200)
DECLARE @andoruser1 VARCHAR(3)
DECLARE @andoruser1value VARCHAR(200)
DECLARE @andoruser2 VARCHAR(3)
DECLARE @andoruser2value VARCHAR(200)
DECLARE @andoruser3 VARCHAR(3)
DECLARE @andoruser3value VARCHAR(200)
DECLARE @andoryourref VARCHAR(3)
DECLARE @andoryourrefvalue VARCHAR(200)
DECLARE @andorwtype VARCHAR(3)
DECLARE @andorwtypevalue VARCHAR(200)
DECLARE @iSL INT
DECLARE @StartRow INT;
DECLARE @EndRow INT;
--FOR DEFAULT DATE; USE OF PARAMETERIZATION
DECLARE @DefaultDate VARCHAR(8) = '18000101';
DECLARE @DefaultDaybookDate VARCHAR(8) = '19000101';
SET NOCOUNT ON
SET @PageNumber = ISNULL(@PageNumber, 0) - 1; -- 0 BASED INDEX
IF(@PageNumber > -1)
BEGIN
SET @StartRow = ((@PageNumber) * @PageSize) + 1;
SET @EndRow = (@StartRow + @PageSize) - 1;
END
BEGIN TRY
EXEC sp_xml_preparedocument @iSL OUTPUT, @Search
END TRY
BEGIN CATCH
EXEC sp_xml_preparedocument @iSL OUTPUT, N''
END CATCH
SELECT @closed = CASE ISNULL(SRC.[closed], N'A')
WHEN N'Y' THEN N'Y'
WHEN N'B' THEN N'B'
WHEN N'N' THEN N'N'
WHEN N'A' THEN N'A'
END,
@orderby = ISNULL(SRC.[orderby], N''),
@order = CASE ISNULL(SRC.[order], N'DESC')
WHEN N'DESC'
THEN N'DESC'
ELSE N'ASC' END,
@howmany = ISNULL(SRC.[howmany], 500),
@handler = ISNULL(SRC.[handler], N''),
@which = CASE ISNULL(SRC.[which], 0)
WHEN 1 THEN 1 --My Matters
WHEN 2 THEN 2 --Recent Matters
ELSE 0 END, --All Matters
@searchtext = ISNULL(SRC.[search], ''),
@searchonlycode = ISNULL(SRC.[searchonlycode], ''),
@departmentdesc = ISNULL(SRC.[dept], ''),
@worktypedesc = ISNULL(SRC.[wtype], ''),
@filecolourdesc = ISNULL(SRC.[colour], ''),
@feecode = ISNULL(SRC.[feecodefilter], ''),
@includeaddress = ISNULL(SRC.[includeaddress], 0),
@includeemail = ISNULL(SRC.[includeemail], 0),
@includecode = ISNULL(SRC.[includecode], 0),
@includedescription = ISNULL(SRC.[includedescription], 0),
@includename = ISNULL(SRC.[includename], 0),
@includeoldref = ISNULL(SRC.[includeoldref], 0),
@includeuser1 = ISNULL(SRC.[includeuser1], 0),
@andorname = ISNULL(SRC.[andorname], ''),
@andornamevalue = ISNULL(SRC.[andornamevalue], ''),
@andordescription = ISNULL(SRC.[andordescription], ''),
@andordescriptionvalue = ISNULL(SRC.[andordescriptionvalue], ''),
@andoraddress = ISNULL(SRC.[andoraddress], ''),
@andoraddressvalue = ISNULL(SRC.[andoraddressvalue], ''),
@andorcode = ISNULL(SRC.[andorcode], ''),
@andorcodevalue = ISNULL(SRC.[andorcodevalue], ''),
@andorfeecode = ISNULL(SRC.[andorfeecode], ''),
@andorfeecodevalue = ISNULL(SRC.[andorfeecodevalue], ''),
@andoroldref = ISNULL(SRC.[andoroldref], ''),
@andoroldrefvalue = ISNULL(SRC.[andoroldrefvalue], ''),
@andordept = ISNULL(SRC.[andordept], ''),
@andordeptvalue = ISNULL(SRC.[andordeptvalue], ''),
@andoruser1 = ISNULL(SRC.[andoruser1], ''),
@andoruser1value = ISNULL(SRC.[andoruser1value], ''),
@andoruser2 = ISNULL(SRC.[andoruser2], ''),
@andoruser2value = ISNULL(SRC.[andoruser2value], ''),
@andoruser3 = ISNULL(SRC.[andoruser3], ''),
@andoruser3value = ISNULL(SRC.[andoruser3value], ''),
@andoryourref = ISNULL(SRC.[andoryourref], ''),
@andoryourrefvalue = ISNULL(SRC.[andoryourrefvalue], ''),
@andorwtype = ISNULL(SRC.[andorwtype], ''),
@andorwtypevalue = ISNULL(SRC.[andorwtypevalue], '')
FROM OPENXML(@iSL, N'search')
WITH ([closed] NCHAR(1) '@closed',
[orderby] NVARCHAR(50) '@orderby',
[order] NVARCHAR(4) '@order',
[howmany] INT '@howmany',
[handler] NVARCHAR(10) '@handler',
[which] INT '@which',
[search] VARCHAR(MAX) '@search',
[searchonlycode] VARCHAR(3) '@searchonlycode',
[dept] VARCHAR(50) '@departmentfilter',
[wtype] VARCHAR(50) '@worktypefilter',
[colour] VARCHAR(20) '@filecolourfilter',
[feecodefilter] VARCHAR(10) '@feecodefilter',
[includeaddress] BIT 'include/includefield[@name="address"]',
[includecode] BIT 'include/includefield[@name="code"]',
[includedescription] BIT 'include/includefield[@name="description"]',
[includename] BIT 'include/includefield[@name="name"]',
[includeoldref] BIT 'include/includefield[@name="oldref"]',
[includeuser1] BIT 'include/includefield[@name="user1"]',
[includeemail] BIT 'include/includefield[@name="email"]',
[andorname] VARCHAR(3) 'andor/andorfield[@name="name"]/@andor',
[andornamevalue] VARCHAR(100) 'andor/andorfield[@name="name"]/@search',
[andordescription] VARCHAR(3) 'andor/andorfield[@name="description"]/@andor',
[andordescriptionvalue] VARCHAR(100) 'andor/andorfield[@name="description"]/@search',
[andoraddress] VARCHAR(3) 'andor/andorfield[@name="address"]/@andor',
[andoraddressvalue] VARCHAR(100) 'andor/andorfield[@name="address"]/@search',
[andorcode] VARCHAR(3) 'andor/andorfield[@name="code"]/@andor',
[andorcodevalue] VARCHAR(100) 'andor/andorfield[@name="code"]/@search',
[andorfeecode] VARCHAR(3) 'andor/andorfield[@name="feecode"]/@andor',
[andorfeecodevalue] VARCHAR(100) 'andor/andorfield[@name="feecode"]/@search',
[andoroldref] VARCHAR(3) 'andor/andorfield[@name="oldref"]/@andor',
[andoroldrefvalue] VARCHAR(100) 'andor/andorfield[@name="oldref"]/@search',
[andordept] VARCHAR(3) 'andor/andorfield[@name="dept"]/@andor',
[andordeptvalue] VARCHAR(100) 'andor/andorfield[@name="dept"]/@search',
[andoruser1] VARCHAR(3) 'andor/andorfield[@name="user1"]/@andor',
[andoruser1value] VARCHAR(100) 'andor/andorfield[@name="user1"]/@search',
[andoruser2] VARCHAR(3) 'andor/andorfield[@name="user2"]/@andor',
[andoruser2value] VARCHAR(100) 'andor/andorfield[@name="user2"]/@search',
[andoruser3] VARCHAR(3) 'andor/andorfield[@name="user3"]/@andor',
[andoruser3value] VARCHAR(100) 'andor/andorfield[@name="user3"]/@search',
[andoryourref] VARCHAR(3) 'andor/andorfield[@name="yourref"]/@andor',
[andoryourrefvalue] VARCHAR(100) 'andor/andorfield[@name="yourref"]/@search',
[andorwtype] VARCHAR(3) 'andor/andorfield[@name="wtype"]/@andor',
[andorwtypevalue] VARCHAR(100) 'andor/andorfield[@name="wtype"]/@search') SRC
IF @filecolourdesc <> ''
BEGIN
SELECT @filecolour = FC.[COLOURCODE]
FROM [dbo].[FileColours] FC WITH (NOLOCK)
WHERE FC.[COLOURDESC] = @filecolourdesc
END
SET @filecolour = ISNULL(@filecolour, '')
IF @departmentdesc <> ''
BEGIN
SELECT @department = DP.[CODE]
FROM [dbo].[Departments] DP WITH (NOLOCK)
WHERE DP.[DESCRIPTION] = @departmentdesc
END
SET @department = ISNULL(@department, '')
IF @worktypedesc <> ''
BEGIN
IF @worktypedesc LIKE 'Unknown Worktype: %'
BEGIN
SELECT @worktype = WT.[CODE]
FROM [dbo].[WorkTypes] WT WITH (NOLOCK)
WHERE 'Unknown Worktype: ' + WT.[CODE] = @worktypedesc
OR WT.[DESC] = @worktypedesc
END
ELSE
BEGIN
SELECT @worktype = WT.[CODE]
FROM [dbo].[WorkTypes] WT WITH (NOLOCK)
WHERE WT.[DESC] = @worktypedesc
END
END
SET @worktype = ISNULL(@worktype, '')
SET @feecode = ISNULL(@feecode, '')
EXEC sp_xml_removedocument @iSL
DECLARE @NCOMMAND NVARCHAR(MAX)
DECLARE @HasWhere BIT
SET @HasWhere = 0
SET @handler = CASE WHEN RTRIM(ISNULL(@handler, '')) = '' THEN 'ADM' ELSE RTRIM(@handler) END
SELECT @BitWiseID = HNG.[BitWiseID]
FROM HandlerNETGroupMembership HNG WITH (NOLOCK)
WHERE HNG.[HANDLER] = CONVERT(VARCHAR(10), @handler)
SET @BitWiseID = ISNULL(@BitWiseID, [dbo].[KAAS_FN_GetOldPermissions](RTRIM(ISNULL(@handler, ''))))
IF (@handler = 'ADM')
BEGIN
SET @BitWiseID = CONVERT(BIGINT, -1)
END
-- Custom Filter Start
SET @NCOMMAND = N'
DECLARE @StatusCount INT = 0;
IF @ColumnNames <> ''''
BEGIN
DECLARE @CustomFilter TABLE
([Status] VARCHAR(20))
SELECT columnName,rownumber INTO #columntbl FROM
(SELECT
LTRIM(RTRIM(m.n.value(''.[1]'',''varchar(8000)''))) AS columnName, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS rownumber
FROM
(
SELECT CAST('''' + REPLACE(@ColumnNames,'','','''') + '''' AS XML) AS x
)t
CROSS APPLY x.nodes(''/XMLRoot/RowData'')m(n)) ColumnTbl
SELECT FilterValue,rownumber INTO #FILTERVALUETBL FROM
(SELECT
LTRIM(RTRIM(m.n.value(''.[1]'',''varchar(8000)''))) AS FilterValue, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS rownumber
FROM
(
SELECT CAST('''' + REPLACE(@FilterValues,''|'','''') + '''' AS XML) AS x
)t
CROSS APPLY x.nodes(''/XMLRoot/RowData'')m(n)) FILTERVALUETBL
DECLARE @count INT
DECLARE @lptcnt INT=1
DECLARE @ColumnName VARCHAR(50)
DECLARE @FilterValue VARCHAR(2000)
SELECT @count = count(1) FROM #columntbl;
WHILE @lptcnt <= @count
BEGIN
SET @FilterValue =''''
SELECT @ColumnName = columnName FROM #columntbl WHERE rownumber = @lptcnt
SELECT @FilterValue = FilterValue FROM #FILTERVALUETBL WHERE rownumber = @lptcnt
IF(@ColumnName = ''Closed'')
INSERT INTO @CustomFilter ([Status]) VALUES (@FilterValue)
SET @lptcnt = @lptcnt + 1;
END
SET @StatusCount = (SELECT COUNT(1) FROM @CustomFilter WHERE [Status] IS NOT NULL AND [Status] <>'''')
END '
-- Custom Filter End
SET @NCOMMAND = @NCOMMAND + N'
--SELECT ''How Many: '' + CONVERT(VARCHAR(10), @HowMany)
--SELECT ''Handler: '' + @Handler
--SELECT ''BitWise ID: '' + CONVERT(VARCHAR(10), @BitWiseID)
DECLARE @Result TABLE
([id] INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
[Time] VARCHAR(5) NOT NULL,
[Code] VARCHAR(20) NOT NULL,
[FileColour] VARCHAR(20) NOT NULL,
[FileColour_Fld] VARCHAR(20) NOT NULL,
[BackgroundColour] VARCHAR(30) NOT NULL,
[TextColour] VARCHAR(30) NOT NULL,
[Name] VARCHAR(256) NOT NULL,
[Description] VARCHAR(200) NOT NULL,
[Fe] VARCHAR(30) NOT NULL,
[FECode] VARCHAR(10) NOT NULL,
[FeeEarner] VARCHAR(30) NOT NULL,
[User1] VARCHAR(100) NOT NULL,
[User2] VARCHAR(100) NOT NULL,
[User3] VARCHAR(100) NOT NULL,
[Started] DATETIME NOT NULL,
[Dept] VARCHAR(50) NOT NULL,
[WorkType] VARCHAR(50) NOT NULL,
[Privileges] BIGINT NOT NULL,
[OldRef] VARCHAR(12) NOT NULL,
[Address] VARCHAR(500) NOT NULL,
[Email] VARCHAR(50) NOT NULL,
[Closed] CHAR(1) NOT NULL,
[OrgCloseDate] DATETIME NULL,
[CloseDate] DATETIME NULL,
[FileRGBColour] INT NOT NULL,
[LastAccessed] DATETIME NULL,
[PhoneNumber] VARCHAR(50) NOT NULL,
[FileNum] INT NOT NULL,
[ClientCode] VARCHAR(10) NOT NULL,
[DepartmentCode] VARCHAR(5) NOT NULL,
[FeeEarnerTeam] VARCHAR(10) NOT NULL,
[TeamName] VARCHAR(30) NOT NULL,
[YourRef] VARCHAR(100) NOT NULL,
[CaseStatusCode] VARCHAR(6) NOT NULL,
[CaseStatusDesc] VARCHAR(50) NOT NULL,
[OutlayBal] DECIMAL(18,2) NULL,
[ClientCurBal] DECIMAL(18,2) NULL,
[ClientDepBal] DECIMAL(18,2) NULL,
[Comment] VARCHAR(3000) NOT NULL,
[Branch] VARCHAR(3) NULL,
[BranchCode] VARCHAR(3) NULL,
[OpenInvoiceNo] INT NOT NULL,
[ContactName] VARCHAR(256) NULL,
[MatterDesc] VARCHAR(200) NULL,
[CompBillingMatter] VARCHAR(20) NULL,
[CompMatter] VARCHAR(20) NULL,
[Telephone] VARCHAR(50) NULL,
[MobileNumber] VARCHAR(50) NULL
)
INSERT
INTO @Result
([Time],
[Code],
[FileColour],
[FileColour_Fld],
[BackgroundColour],
[TextColour],
[Name],
[Description],
[Fe],
[FECode],
[FeeEarner],
[User1],
[User2],
[User3],
[Started],
[Dept],
[WorkType],
[Privileges],
[OldRef],
[Address],
[Email],
[Closed],
[OrgCloseDate],
[CloseDate],
[FileRGBColour],
[LastAccessed],
[PhoneNumber],
[FileNum],
[ClientCode],
[DepartmentCode],
[FeeEarnerTeam],
[TeamName],
[YourRef],
[CaseStatusCode],
[CaseStatusDesc],
[OutlayBal],
[ClientCurBal],
[ClientDepBal],
[Comment],
[Branch],
[BranchCode],
[OpenInvoiceNo],
[ContactName],
[MatterDesc],
[CompBillingMatter],
[CompMatter],
[Telephone],
[MobileNumber]
)
SELECT
CASE WHEN TTT.[TOTALTIME] = ''00:00'' THEN ''''
ELSE TTT.[TOTALTIME] END AS [Time],
SM.[Code] AS [Code],
SM.[FileColourDescription] AS [FileColour],
SM.[FileColourDescription] AS [FileColour_Fld],
SM.[FileBackgroundColour] AS [BackgroundColour],
SM.[TextColour] AS [TextColour],
SM.[Name] AS [Name],
RTRIM(ISNULL(SM.[Description],'''')) AS [Description],
SM.[HandlerName] AS [Fe],
RTRIM(ISNULL(A.[FECode],'''')) AS [FECode],
SM.[HandlerName] AS [FeeEarner],
RTRIM(ISNULL(A.[User1],'''')) AS [User1],
RTRIM(ISNULL(A.[User2],'''')) AS [User2],
RTRIM(ISNULL(A.[User3],'''')) AS [User3],
SM.[Started] AS [Started],
RTRIM(ISNULL(A.[Dept],'''')) AS [Dept],
RTRIM(ISNULL(A.[WType],'''')) AS [WorkType],
SM.[Privileges] AS [Privileges],
RTRIM(ISNULL(A.[OldRef],'''')) AS [OldRef],
SM.[Address] AS [Address],
SM.[Email] AS [Email],
CASE WHEN SM.[Closed] = 0 THEN ''N'' ELSE ''Y'' END AS [Closed],
SM.[OrgClosedDate] AS [OriginalClosedDate],
SM.[CloseDate] AS [CloseDate],
SM.[FileRGBColour] AS [FileRGBColour],
CASE WHEN YEAR(ISNULL(RML.[DateField], CONVERT(DATETIME, @DefaultDate))) < 1901
THEN NULL
ELSE ISNULL(RML.[DateField], CONVERT(DATETIME, @DefaultDate)) END AS [LastAccessed],
SM.[PhoneNumber] AS [PhoneNumber],
SM.[FileNum] AS [FileNum],
SM.[ClientCode] AS [ClientCode],
RTRIM(ISNULL(A.[Dept],'''')) AS [DepartmentCode],
SM.[Team] AS [FeeEarnerTeam],
SM.[TeamName] AS [TeamName],
RTRIM(ISNULL(A.[YourRef],'''')) AS [YourRef],
SM.[MatterStatus] AS [CaseStatusCode],
SM.[MatterStatusDescription] AS [CaseStatusDesc],
A.[OutlayBal] AS [OutlayBal],
A.[ClientCurBal] AS [ClientCurBal],
A.[ClientDepBal] AS [ClientDepBal],
RTRIM(ISNULL(A.[Comment], '''')) AS [Comment],
RTRIM(ISNULL(A.[Branch], '''')) AS [Branch],
RTRIM(ISNULL(A.[Branch], '''')) AS [BranchCode],
(SELECT COUNT(1) FROM [dbo].[BillHeader] [BH]
WHERE ISNULL([BH].[OPENINVOICE], '''') = ''Y''
AND ISNULL([BH].[BILLNO], 0) = 0
AND [BH].[MATTER] = SM.[Code]) AS [OpenInvoiceNo],
B.[Name] AS [ContactName],
RTRIM(ISNULL(A.[Description],'''')) AS [MatterDesc] ,
A.[CompBillingMatter] AS [CompBillingMatter],
B.[CompMatter] AS [CompMatter],
C.[CLTEL] AS [Telephone],
C.[CLMOBNO] AS [MobileNumber]
FROM [dbo].[SearchMatters] SM WITH (NOLOCK)
LEFT JOIN [dbo].[Matters] A ON A.[CODE] = SM.[Code]
LEFT OUTER JOIN [dbo].[contacts] B ON A.[CLIENTCODE]= B.[CODE]
LEFT OUTER JOIN [dbo].[client] C ON A.[CLIENTCODE]= C.[CLCODE]
CROSS APPLY (SELECT SUBSTRING(CONVERT(VARCHAR, DATEADD(minute, ISNULL(SUM(ISNULL(TDB.[time], 0)), 0), @DefaultDaybookDate), 108), 1, 5) AS [TOTALTIME]
FROM [dbo].[TimeDayBook] TDB WITH (NOLOCK)
WHERE TDB.[FeeEarn] = @handler
AND TDB.[matter] = SM.[code]
) TTT'
SET @NCOMMAND = @NCOMMAND + N'
LEFT OUTER JOIN [dbo].[RecentMatterList] RML WITH (NOLOCK)
ON RML.[FEE] = @handler
AND RML.[MATTER] = SM.[Code]
WHERE (@StatusCount = 0 OR (SM.[Closed] IN (SELECT FilterValue FROM
(SELECT LTRIM(RTRIM(m.n.value(''.[1]'',''varchar(8000)''))) AS FilterValue , ROW_NUMBER() OVER (ORDER BY (SELECT 1)) as rownumber
FROM(
SELECT CAST('''' + REPLACE((SELECT DISTINCT [Status] FROM @CustomFilter WHERE [Status] IS NOT NULL and [Status] <>''''),'','','''') + '''' AS XML) AS x
)t
CROSS APPLY x.nodes(''/XMLRoot/RowData'')m(n)) FILTERVALUETBLFnl)) or SM.Closed=1)
AND A.[Closed] <> ''Y'''
/*
--Handler Privileges
IF (@BitWiseID = 0)
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND ( SM.[Privileges] = 0
OR SM.[Privileges] = -1)'
END
ELSE IF (@BitWiseID = -1)
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND 1 = 1'
END
ELSE
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[Privileges] & @BitWiseID <> 0'
END
*/
IF (@which = 1)
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[FECode] = @handler'
END
IF (@closed = 'N')
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[Closed] = 0'
END
IF (@closed = 'Y')
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[Closed] = 1'
END
IF (@closed = N'A')
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND (SM.[Closed] = 0 OR SM.[Closed] = 1)'
END
IF (@worktype <> '')
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[WType] = @WorkType'
END
IF (@department <> '')
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[Dept] = @department'
END
IF (@filecolour <> '')
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[FileColour] = @filecolour'
END
IF (@feecode <> '')
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[FECode] = @feecode'
END
DECLARE @SearchIncludes NVARCHAR(MAX)
SET @SearchIncludes = N''
IF (@searchtext <> '')
BEGIN
IF SUBSTRING(@searchtext, 1, 1) <> '%'
BEGIN
SET @searchtext = '%' + @searchtext
END
IF SUBSTRING(@searchtext, LEN(@searchtext), 1) <> '%'
BEGIN
SET @searchtext = @searchtext + '%'
END
SET @searchtext = @searchtext COLLATE SQL_Latin1_General_Cp1251_CS_AS
IF (@includeaddress = 0)
AND (@includecode = 0)
AND (@includedescription = 0)
AND (@includename = 0)
AND (@includeoldref = 0)
AND (@includeuser1 = 0)
AND (@includeemail = 0)
BEGIN
-- This is the standard call - not from Advanced Matter Search, so we search in everything
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
IF @searchonlycode <> 'yes'
BEGIN
SET @SearchIncludes = @SearchIncludes + N'SM.[NCDescription] LIKE @searchtext
OR SM.[Code] LIKE @searchtext
OR SM.[User1] LIKE @searchtext
OR SM.[User2] LIKE @searchtext
OR SM.[User3] LIKE @searchtext
OR SM.[OldRef] LIKE @searchtext
OR SM.[YourRef] LIKE @searchtext
OR SM.[NCName] LIKE @searchtext
OR SM.[NCAddress] LIKE @searchtext
OR SM.[Email] LIKE @searchtext
OR SM.[NCHandlerName] LIKE @searchtext
OR SM.[NCPartnerName] LIKE @searchtext
OR SM.[DeptDescription] LIKE @searchtext
OR SM.[WTypeDescription] LIKE @searchtext
OR SM.[FileColourDescription] LIKE @searchtext
OR SM.[MatterStatusDescription] LIKE @searchtext'
END
ELSE
BEGIN
SET @SearchIncludes = @SearchIncludes + N'SM.[Code] LIKE @searchtext'
END
END
ELSE
BEGIN
IF (@includeaddress = 1)
BEGIN
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[NCAddress] LIKE @searchtext'
END
IF (@includecode = 1)
BEGIN
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[Code] LIKE @searchtext'
END
IF (@includedescription = 1)
BEGIN
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[NCDescription] LIKE @searchtext'
END
IF (@includename = 1)
BEGIN
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[NCName] LIKE @searchtext'
END
IF (@includeoldref = 1)
BEGIN
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[OldRef] LIKE @searchtext'
END
IF (@includeuser1 = 1)
BEGIN
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[User1] LIKE @searchtext'
END
IF (@includeemail = 1)
BEGIN
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[Email] LIKE @searchtext'
END
END
END
IF @andoraddress = 'OR'
BEGIN
IF SUBSTRING(@andoraddressvalue, 1, 1) <> '%'
BEGIN
SET @andoraddressvalue = '%' + @andoraddressvalue
END
IF SUBSTRING(@andoraddressvalue, LEN(@andoraddressvalue), 1) <> '%'
BEGIN
SET @andoraddressvalue = @andoraddressvalue + '%'
END
SET @andoraddressvalue = @andoraddressvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[NCAddress] LIKE @andoraddressvalue'
END
IF @andorcode = 'OR'
BEGIN
IF CHARINDEX('%', @andorcodevalue, 1) = 0
BEGIN
IF SUBSTRING(@andorcodevalue, 1, 1) <> '%'
BEGIN
SET @andorcodevalue = '%' + @andorcodevalue
END
IF SUBSTRING(@andorcodevalue, LEN(@andorcodevalue), 1) <> '%'
BEGIN
SET @andorcodevalue = @andorcodevalue + '%'
END
END
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[Code] LIKE @andorcodevalue'
END
IF @andordept = 'OR'
BEGIN
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[Dept]= @andordeptvalue'
END
IF @andordescription = 'OR'
BEGIN
IF SUBSTRING(@andordescriptionvalue, 1, 1) <> '%'
BEGIN
SET @andordescriptionvalue = '%' + @andordescriptionvalue
END
IF SUBSTRING(@andordescriptionvalue, LEN(@andordescriptionvalue), 1) <> '%'
BEGIN
SET @andordescriptionvalue = @andordescriptionvalue + '%'
END
SET @andordescriptionvalue = @andordescriptionvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[NCDescription] LIKE @andordescriptionvalue'
END
IF @andorfeecode = 'OR'
BEGIN
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[FECode] = @andorfeecodevalue'
END
IF @andorname = 'OR'
BEGIN
IF SUBSTRING(@andornamevalue, 1, 1) <> '%'
BEGIN
SET @andornamevalue = '%' + @andornamevalue
END
IF SUBSTRING(@andornamevalue, LEN(@andornamevalue), 1) <> '%'
BEGIN
SET @andornamevalue = @andornamevalue + '%'
END
SET @andornamevalue = @andornamevalue COLLATE SQL_Latin1_General_Cp1251_CS_AS
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[NCName] LIKE @andornamevalue'
END
IF @andoroldref = 'OR'
BEGIN
IF SUBSTRING(@andoroldrefvalue, 1, 1) <> '%'
BEGIN
SET @andoroldrefvalue = '%' + @andoroldrefvalue
END
IF SUBSTRING(@andoroldrefvalue, LEN(@andoroldrefvalue), 1) <> '%'
BEGIN
SET @andoroldrefvalue = @andoroldrefvalue + '%'
END
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[OldRef] LIKE @andoroldrefvalue'
END
IF @andoruser1 = 'OR'
BEGIN
IF SUBSTRING(@andoruser1value, 1, 1) <> '%'
BEGIN
SET @andoruser1value = '%' + @andoruser1value
END
IF SUBSTRING(@andoruser1value, LEN(@andoruser1value), 1) <> '%'
BEGIN
SET @andoruser1value = @andoruser1value + '%'
END
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[User1] LIKE @andoruser1value'
END
IF @andoruser2 = 'OR'
BEGIN
IF SUBSTRING(@andoruser2value, 1, 1) <> '%'
BEGIN
SET @andoruser2value = '%' + @andoruser2value
END
IF SUBSTRING(@andoruser2value, LEN(@andoruser2value), 1) <> '%'
BEGIN
SET @andoruser2value = @andoruser2value + '%'
END
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[User2] LIKE @andoruser2value'
END
IF @andoruser3 = 'OR'
BEGIN
IF SUBSTRING(@andoruser3value, 1, 1) <> '%'
BEGIN
SET @andoruser3value = '%' + @andoruser3value
END
IF SUBSTRING(@andoruser3value, LEN(@andoruser3value), 1) <> '%'
BEGIN
SET @andoruser3value = @andoruser3value + '%'
END
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[User3] LIKE @andoruser3value'
END
IF @andorwtype = 'OR'
BEGIN
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[WType] = @andorwtypevalue'
END
IF @andoryourref = 'OR'
BEGIN
IF SUBSTRING(@andoryourrefvalue, 1, 1) <> '%'
BEGIN
SET @andoryourrefvalue = '%' + @andoryourrefvalue
END
IF SUBSTRING(@andoryourrefvalue, LEN(@andoryourrefvalue), 1) <> '%'
BEGIN
SET @andoryourrefvalue = @andoryourrefvalue + '%'
END
IF @SearchIncludes <> N''
BEGIN
SET @SearchIncludes = @SearchIncludes + N'
OR '
END
SET @SearchIncludes = @SearchIncludes + N'SM.[YourRef] LIKE @andoryourrefvalue'
END
--SELECT @SearchIncludes
IF @SearchIncludes <> ''
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND ( ' + @SearchIncludes + N')'
END
IF @andoraddress = 'AND'
BEGIN
IF SUBSTRING(@andoraddressvalue, 1, 1) <> '%'
BEGIN
SET @andoraddressvalue = '%' + @andoraddressvalue
END
IF SUBSTRING(@andoraddressvalue, LEN(@andoraddressvalue), 1) <> '%'
BEGIN
SET @andoraddressvalue = @andoraddressvalue + '%'
END
SET @andoraddressvalue = @andoraddressvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[NCAddress] LIKE @andoraddressvalue'
END
IF @andorcode = 'AND'
BEGIN
IF SUBSTRING(@andorcodevalue, 1, 1) <> '%'
BEGIN
SET @andorcodevalue = '%' + @andorcodevalue
END
IF SUBSTRING(@andorcodevalue, LEN(@andorcodevalue), 1) <> '%'
BEGIN
SET @andorcodevalue = @andorcodevalue + '%'
END
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[Code] LIKE @andorcodevalue'
END
IF @andordept = 'AND'
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[Dept] = @andordeptvalue'
END
IF @andordescription = 'AND'
BEGIN
IF SUBSTRING(@andordescriptionvalue, 1, 1) <> '%'
BEGIN
SET @andordescriptionvalue = '%' + @andordescriptionvalue
END
IF SUBSTRING(@andordescriptionvalue, LEN(@andordescriptionvalue), 1) <> '%'
BEGIN
SET @andordescriptionvalue = @andordescriptionvalue + '%'
END
SET @andordescriptionvalue = @andordescriptionvalue COLLATE SQL_Latin1_General_Cp1251_CS_AS
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[NCDescription] LIKE @andordescriptionvalue'
END
IF @andorfeecode = 'AND'
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[FECode] = @andorfeecodevalue'
END
IF @andorname = 'AND'
BEGIN
IF SUBSTRING(@andornamevalue, 1, 1) <> '%'
BEGIN
SET @andornamevalue = '%' + @andornamevalue
END
IF SUBSTRING(@andornamevalue, LEN(@andornamevalue), 1) <> '%'
BEGIN
SET @andornamevalue = @andornamevalue + '%'
END
SET @andornamevalue = @andornamevalue COLLATE SQL_Latin1_General_Cp1251_CS_AS
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[NCName] LIKE @andornamevalue'
END
IF @andoroldref = 'AND'
BEGIN
IF SUBSTRING(@andoroldrefvalue, 1, 1) <> '%'
BEGIN
SET @andoroldrefvalue = '%' + @andoroldrefvalue
END
IF SUBSTRING(@andoroldrefvalue, LEN(@andoroldrefvalue), 1) <> '%'
BEGIN
SET @andoroldrefvalue = @andoroldrefvalue + '%'
END
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[OldRef] LIKE @andoroldrefvalue'
END
IF @andoruser1 = 'AND'
BEGIN
IF SUBSTRING(@andoruser1value, 1, 1) <> '%'
BEGIN
SET @andoruser1value = '%' + @andoruser1value
END
IF SUBSTRING(@andoruser1value, LEN(@andoruser1value), 1) <> '%'
BEGIN
SET @andoruser1value = @andoruser1value + '%'
END
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[User1] LIKE @andoruser1value'
END
IF @andoruser2 = 'AND'
BEGIN
IF SUBSTRING(@andoruser2value, 1, 1) <> '%'
BEGIN
SET @andoruser2value = '%' + @andoruser2value
END
IF SUBSTRING(@andoruser2value, LEN(@andoruser2value), 1) <> '%'
BEGIN
SET @andoruser2value = @andoruser2value + '%'
END
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[User2] LIKE @andoruser2value'
END
IF @andoruser3 = 'AND'
BEGIN
IF SUBSTRING(@andoruser3value, 1, 1) <> '%'
BEGIN
SET @andoruser3value = '%' + @andoruser3value
END
IF SUBSTRING(@andoruser3value, LEN(@andoruser3value), 1) <> '%'
BEGIN
SET @andoruser3value = @andoruser3value + '%'
END
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[User3] LIKE @andoruser3value'
END
IF @andorwtype = 'AND'
BEGIN
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[WType] = @andorwtypevalue'
END
IF @andoryourref = 'AND'
BEGIN
IF SUBSTRING(@andoryourrefvalue, 1, 1) <> '%'
BEGIN
SET @andoryourrefvalue = '%' + @andoryourrefvalue
END
IF SUBSTRING(@andoryourrefvalue, LEN(@andoryourrefvalue), 1) <> '%'
BEGIN
SET @andoryourrefvalue = @andoryourrefvalue + '%'
END
SET @NCOMMAND = @NCOMMAND + N'
AND SM.[YourRef] LIKE @andoryourrefvalue'
END
SET @NCOMMAND = @NCOMMAND + N'
ORDER BY ' + CASE @orderby
WHEN N'description'
THEN N'CASE WHEN SM.[Description] = ''''
THEN 1
ELSE 0 END,
SM.[Description] ' + @order + N',
SM.[Code] ' + @order
WHEN N'Code'
THEN N'CASE WHEN SM.[Code] = ''''
THEN 1
ELSE 0 END,
SM.[Code] ' + @order
WHEN N'Name'
THEN N'CASE WHEN SM.[Name] = ''''
THEN 1
ELSE 0 END,
SM.[Name] ' + @order + N',
SM.[Code] ' + @order
WHEN N'Address'
THEN N'CASE WHEN SM.[Address] = ''''
THEN 1
ELSE 0 END,
SM.[Address] ' + @order + N',
SM.[Code] ' + @order
WHEN N'Email'
THEN N'CASE WHEN SM.[Email] = ''''
THEN 1
ELSE 0 END,
SM.[Email] ' + @order + N',
SM.[Code] ' + @order
WHEN N'PhoneNumber'
THEN N'CASE WHEN SM.[PhoneNumber] = ''''
THEN 1
ELSE 0 END,
SM.[PhoneNumber] ' + @order + N',
SM.[Code] ' + @order
WHEN N'user1'
THEN N'CASE WHEN SM.[User1] = ''''
THEN 1
ELSE 0 END,
SM.[User1] ' + @order + N',
SM.[Code] ' + @order
WHEN N'user2'
THEN N'CASE WHEN SM.[User2] = ''''
THEN 1
ELSE 0 END,
SM.[User2] ' + @order + N',
SM.[Code] ' + @order
WHEN N'user3'
THEN N'CASE WHEN SM.[User3] = ''''
THEN 1
ELSE 0 END,
SM.[User3] ' + @order + N',
SM.[Code] ' + @order
WHEN N'yourref'
THEN N'CASE WHEN SM.[YourRef] = ''''
THEN 1
ELSE 0 END,
SM.[YourRef] ' + @order + N',
SM.[Code] ' + @order
WHEN N'OldRef'
THEN N'CASE WHEN SM.[OldRef] = ''''
THEN 1
ELSE 0 END,
SM.[OldRef] ' + @order + N',
SM.[Code] ' + @order
WHEN N'FileNum'
THEN N'CASE WHEN SM.[FileNum] = 0
THEN 1
ELSE 0 END,
SM.[FileNum] ' + @order + N',
SM.[Code] ' + @order
WHEN N'department'
THEN N'CASE WHEN SM.[DeptDescription] = ''''
THEN 1
ELSE 0 END,
SM.[DeptDescription] ' + @order + N',
SM.[Code] ' + @order
WHEN N'Dept'
THEN N'CASE WHEN SM.[DeptDescription] = ''''
THEN 1
ELSE 0 END,
SM.[DeptDescription] ' + @order + N',
SM.[Code] ' + @order
WHEN N'worktype'
THEN N'CASE WHEN SM.[WTypeDescription] = ''''
THEN 1
ELSE 0 END,
SM.[WTypeDescription] ' + @order + N',
SM.[Code] ' + @order
WHEN N'FeeCode'
THEN N'CASE WHEN SM.[FECode] = ''''
THEN 2
WHEN SM.[FECode] = ''ADM''
THEN 1
ELSE 0 END,
SM.[FECode] ' + @order + N',
SM.[Code] ' + @order
WHEN N'FeeEarner'
THEN N'CASE WHEN SM.[HandlerName] = '''' AND SM.[FECode] = ''''
THEN 3
WHEN SM.[HandlerName] = ''''
THEN 2
WHEN SM.[HandlerName] = ''Admin''
THEN 1
ELSE 0 END,
SM.[HandlerName] ' + @order + N',
SM.[Code] ' + @order
WHEN N'FileColour_Fld'
THEN N'CASE WHEN SM.[FileColourDescription] = ''''
THEN 1
ELSE 0 END,
SM.[FileColourDescription] ' + @order + N',
SM.[Code] ' + @order
WHEN N'FileColour'
THEN N'CASE WHEN SM.[FileColourDescription] = ''''
THEN 1
ELSE 0 END,
SM.[FileColourDescription] ' + @order + N',
SM.[Code] ' + @order
WHEN N'started'
THEN N'SM.[Started] ' + @order + N',
SM.[Code] ' + @order
WHEN N'LastAccessed'
THEN N'CASE WHEN RML.[DateField] IS NULL
THEN 1
ELSE 0 END,
RML.[DateField] ' + @order + N',
SM.[Code] ' + @order
WHEN N'closedate'
THEN N'CASE WHEN SM.[CloseDate] IS NULL
THEN 1
ELSE 0 END,
SM.[CloseDate] ' + @order + N',
SM.[Code] ' + @order
WHEN N'orgcloseddate'
THEN N'CASE WHEN SM.[orgcloseddate] IS NULL
THEN 1
ELSE 0 END,
SM.[orgcloseddate] ' + @order + N',
SM.[Code] ' + @order
WHEN N'casestatusdesc'
THEN N'CASE WHEN SM.[MatterStatusDescription] IS NULL
THEN 1
ELSE 0 END,
SM.[MatterStatusDescription] ' + @order + N',
SM.[Code] ' + @order
ELSE CASE WHEN @Which <> 2
THEN N'SM.[Code] ' + @order
ELSE N'CASE WHEN RML.[DateField] IS NULL
THEN 1
ELSE 0 END,
RML.[DateField] DESC,
SM.[Code] ' + @order END END
SET @NCOMMAND = @NCOMMAND + N'
IF(@Mode <>''Dashboard'')
BEGIN
SELECT ROW_NUMBER() OVER(ORDER BY [Res].[id]) AS [RowNumber],
[RES].[id],
[RES].[Time],
[RES].[Code],
[RES].[FileColour],
[RES].[FileColour_Fld],
[RES].[BackgroundColour],
[RES].[TextColour],
[RES].[Name],
[RES].[Description],
[RES].[Fe],
[RES].[FECode],
[RES].[FeeEarner],
[RES].[User1],
[RES].[User2],
[RES].[User3],
[RES].[Started],
[RES].[Dept],
[RES].[WorkType],
[RES].[Privileges],
[RES].[OldRef],
[RES].[Address],
[RES].[Email],
[RES].[Closed],
[RES].[OrgCloseDate],
[RES].[CloseDate],
[RES].[FileRGBColour],
[RES].[LastAccessed],
[RES].[PhoneNumber],
[RES].[FileNum],
[RES].[ClientCode],
[RES].[DepartmentCode],
[RES].[FeeEarnerTeam],
[RES].[TeamName],
[RES].[YourRef],
[RES].[CaseStatusCode],
[RES].[CaseStatusDesc] ,
[RES].[OutlayBal],
[RES].[ClientCurBal],
[RES].[ClientDepBal],
[RES].[Comment],
[RES].[Branch],
[RES].[BranchCode],
[RES].[OpenInvoiceNo],
[RES].[ContactName],
[RES].[MatterDesc],
[RES].[CompBillingMatter],
[RES].[CompMatter],
[RES].[Telephone],
[RES].[MobileNumber]
FROM @Result [RES]
WHERE [RES].[id] BETWEEN @StartRow AND @EndRow
ORDER BY [RES].[id] ASC
SELECT
COUNT(1) AS [TotalRecord]
FROM
@Result [RES]
SELECT
USERPROMPT1 AS [UserPrompt1],
USERPROMPT2 AS [UserPrompt2],
USERPROMPT3 AS [UserPrompt3],
YourRef AS [YourRef]
FROM
[Control]
END
ELSE
BEGIN
SELECT
[RES].[ClientCode],
[RES].[Code],
[RES].[Name],
[RES].[Description],
[RES].[FECode],
[RES].[FeeEarner],
[RES].[DepartmentCode] AS [Dept],
[RES].[CompBillingMatter],
[RES].[CompMatter],
[RES].[Telephone],
[RES].[MobileNumber]
FROM @Result [RES]
WHERE [RES].[id] BETWEEN @StartRow AND @EndRow
ORDER BY [RES].[id] ASC
END
'
EXECUTE sp_executesql @NCOMMAND,
N'@HowMany INT,
@BitWiseID BIGINT,
@Handler VARCHAR(10),
@WorkType VARCHAR(5),
@department VARCHAR(5),
@filecolour VARCHAR(3),
@feecode VARCHAR(10),
@searchtext VARCHAR(MAX),
@andoraddressvalue VARCHAR(200),
@andorcodevalue VARCHAR(200),
@andordeptvalue VARCHAR(200),
@andordescriptionvalue VARCHAR(200),
@andorfeecodevalue VARCHAR(200),
@andornamevalue VARCHAR(200),
@andoroldrefvalue VARCHAR(200),
@andoruser1value VARCHAR(200),
@andoruser2value VARCHAR(200),
@andoruser3value VARCHAR(200),
@andorwtypevalue VARCHAR(200),
@andoryourrefvalue VARCHAR(200),
@StartRow INT,
@EndRow INT,
@ColumnNames VARCHAR(50),
@FilterValues VARCHAR(50),
@DefaultDate VARCHAR(8),
@DefaultDaybookDate VARCHAR(8),
@Mode VARCHAR(10)
',
@Howmany,
@BitWiseID,
@handler,
@worktype,
@department,
@filecolour,
@feecode,
@searchtext,
@andoraddressvalue,
@andorcodevalue,
@andordeptvalue,
@andordescriptionvalue,
@andorfeecodevalue,
@andornamevalue,
@andoroldrefvalue,
@andoruser1value,
@andoruser2value,
@andoruser3value,
@andorwtypevalue,
@andoryourrefvalue,
@StartRow,
@EndRow,
@ColumnNames,
@FilterValues,
@DefaultDate,
@DefaultDaybookDate,
@Mode
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_PostSAMUpdateChangeAssociateDetails',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_PostSAMUpdateChangeAssociateDetails]
GO
CREATE PROCEDURE [dbo].[KAAS_PostSAMUpdateChangeAssociateDetails]
(
@Code VARCHAR(20) = NULL,
@Name VARCHAR(20) = NULL,
@Email VARCHAR(90) = NULL,
@BankType CHAR(1) = NULL,
@BankName VARCHAR(60) = NULL,
@BankAddress VARCHAR(150)= NULL,
@BankSortCode VARCHAR(20) = NULL,
@BankAccNo VARCHAR(20) = NULL,
@IBAN VARCHAR(50) = NULL,
@BIC VARCHAR(20) = NULL,
@EFTAddress VARCHAR(90) = NULL,
@HandlerCode VARCHAR(10) = NULL
)
AS
/*******************************************************************************************************
* Stored Procedure Name : [dbo].[KAAS_PostSAMUpdateChangeAssociateDetails] *
* *
* Description: Update details of Change associates party based on Code *
* *
* Modification History: *
* 2021-09-02 Vinodhkumar M Created *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRANSACTION
DECLARE @CASEASSOCIATES TABLE
( [Email] VARCHAR(90),
[BankType] CHAR(1),
[BankName] VARCHAR(60),
[BankAddress] VARCHAR(150),
[BankSortCode] VARCHAR(20),
[BankAccNo] VARCHAR(20),
[IBAN] VARCHAR(50),
[BIC] VARCHAR(20),
[EFTEmailAddress] VARCHAR(90))
INSERT
INTO @CASEASSOCIATES
SELECT [Email],
[BankType],
[BankName],
[BankAddress],
[BankSortCode],
[BankAccNo],
[IBAN],
[BIC],
[EFTEmailAddress]
FROM [dbo].[CaseAssociatesNames]
WHERE [CODE]=@Code
UPDATE [dbo].[CaseAssociatesNames]
SET [Code] = @Code,
[Name] = @Name,
[Email] = @Email,
[BankType] = @BankType,
[BankName] = @BankName,
[BankAddress] = @BankAddress,
[BankSortCode] = @BankSortCode,
[BankAccNo] = @BankAccNo,
[IBAN] = @IBAN,
[BIC] = @BIC,
[EFTEmailAddress] = @EFTAddress
WHERE [CODE]=@Code
--Insert the Changes into Logs
IF(@Email != (SELECT Email FROM @CASEASSOCIATES))
BEGIN
INSERT INTO dbo.EFTTableChangeLog (LOGON,TABLENAME,CODE,DESCRIPTION,DATE)
VALUES (@HandlerCode,'CaseAssociatesNames',@Code,'Changed Email from ' + (SELECT Email FROM @CASEASSOCIATES) + ' to '+@Email, GETUTCDATE())
END
IF(@BankName != (SELECT BankName FROM @CASEASSOCIATES))
BEGIN
INSERT INTO dbo.EFTTableChangeLog (LOGON,TABLENAME,CODE,DESCRIPTION,DATE)
VALUES (@HandlerCode,'CaseAssociatesNames',@Code,'Changed Bank Name from '+(SELECT BankName FROM @CASEASSOCIATES)+' to '+@BankName, GETUTCDATE())
END
IF(@BankAddress != (SELECT BankAddress FROM @CASEASSOCIATES))
BEGIN
INSERT INTO dbo.EFTTableChangeLog (LOGON,TABLENAME,CODE,DESCRIPTION,DATE)
VALUES (@HandlerCode,'CaseAssociatesNames',@Code,'Changed Bank Address from '+(SELECT BankAddress FROM @CASEASSOCIATES)+' to '+@BankAddress, GETUTCDATE())
END
IF(@BankSortCode != (SELECT BankSortCode FROM @CASEASSOCIATES))
BEGIN
INSERT INTO dbo.EFTTableChangeLog (LOGON,TABLENAME,CODE,DESCRIPTION,DATE)
VALUES (@HandlerCode,'CaseAssociatesNames',@Code,'Changed Bank Sort Code from '+ (SELECT BankSortCode FROM @CASEASSOCIATES) +' to '+@BankSortCode, GETUTCDATE())
END
IF(@BankAccNo != (SELECT BankAccNo FROM @CASEASSOCIATES))
BEGIN
INSERT INTO dbo.EFTTableChangeLog (LOGON,TABLENAME,CODE,DESCRIPTION,DATE)
VALUES (@HandlerCode,'CaseAssociatesNames',@Code,'Changed Bank Account Number Code from '+(SELECT BankAccNo FROM @CASEASSOCIATES)+' to '+@BankAccNo, GETUTCDATE())
END
IF(@IBAN != (SELECT IBAN FROM @CASEASSOCIATES))
BEGIN
INSERT INTO dbo.EFTTableChangeLog (LOGON,TABLENAME,CODE,DESCRIPTION,DATE)
VALUES (@HandlerCode,'CaseAssociatesNames',@Code,'Changed IBAN from '+(SELECT IBAN FROM @CASEASSOCIATES)+' to '+@IBAN, GETUTCDATE())
END
IF(@BIC != (SELECT BIC FROM @CASEASSOCIATES))
BEGIN
INSERT INTO dbo.EFTTableChangeLog (LOGON,TABLENAME,CODE,DESCRIPTION,DATE)
VALUES (@HandlerCode,'CaseAssociatesNames',@Code,'Changed BIC from'+ (SELECT BIC FROM @CASEASSOCIATES) +' to '+@BIC, GETUTCDATE())
END
IF(@EFTAddress != (SELECT EFTEmailAddress FROM @CASEASSOCIATES))
BEGIN
INSERT INTO dbo.EFTTableChangeLog (LOGON,TABLENAME,CODE,DESCRIPTION,DATE)
VALUES (@HandlerCode,'CaseAssociatesNames',@Code,'Changed EFT Email address from '+(SELECT EFTEmailAddress FROM @CASEASSOCIATES)+' to '+@EFTAddress, GETUTCDATE())
END
IF(@BankType != (SELECT BankType FROM @CASEASSOCIATES))
BEGIN
INSERT INTO dbo.EFTTableChangeLog (LOGON,TABLENAME,CODE,DESCRIPTION,DATE)
VALUES (@HandlerCode,'CaseAssociatesNames',@Code,'Changed Bank Type from '+(SELECT BankType FROM @CASEASSOCIATES)+' to '+@BankType, GETUTCDATE())
END
COMMIT TRANSACTION
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_ProcessBankReconciliationTransaction'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_ProcessBankReconciliationTransaction]
END
GO
CREATE PROCEDURE [dbo].[KAAS_ProcessBankReconciliationTransaction]
(
@BankAc VARCHAR(10) = '',
@ReconDate DATE = NULL,
@RecordId INT = 0,
@Mode VARCHAR(20) = '',
@BankBal DECIMAL(17,2) = 0
)
AS
/*******************************************************************************************************
* Ticked Procees of Bank Reconciliation *
* *
* Stored Procedure Name : [dbo].[KAAS_CreateBankReconciliationTransaction] *
* *
* Modification History: *
* 2022-01-27 Balamurugan C Created *
* 2022-01-31 Balamurugan C Modified - Formula changed for Difference field *
* 2022-02-02 Balamurugan C Modified - Handled Lodgement,Cheque Balance using OsReqNo *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
/*UPDATE TICKED STAUS FOR Bank Rec Transaction*/
DECLARE @ReconValue DECIMAL(17,2) = 0,
@SumOfLodgementValue DECIMAL(17,2) = 0,
@SumOfChequeValue DECIMAL(17,2) = 0,
@SumOfOutstandingLodgementValue DECIMAL(17,2) = 0,
@SumOfOutstandingChequeValue DECIMAL(17,2) = 0;
IF(@Mode = 'TICKED' OR @Mode = 'UNTICKED')
BEGIN
IF(@Mode = 'TICKED')
BEGIN
UPDATE [dbo].[BankRecTransactions]
SET [Ticked] = 'R'
WHERE [BankAc] = @BankAc
AND [RecordId] = @RecordId
SELECT @ReconValue = [Value]
FROM [dbo].[BankRecTransactions]
WHERE [BankAc] = @BankAc
AND [RecordId] = @RecordId
END
/*UPDATE Revert TICKED STAUS FOR Bank Rec Transaction*/
IF(@Mode = 'UNTICKED')
BEGIN
UPDATE [dbo].[BankRecTransactions]
SET [Ticked] = ''
WHERE [BankAc] = @BankAc
AND [RecordId] = @RecordId
SELECT @ReconValue = [Value]
FROM [dbo].[BankRecTransactions]
WHERE [BankAc] = @BankAc
AND [RecordId] = @RecordId
END
/* Update Bank Ren History table for lodgement value */
SELECT @SumOfOutstandingLodgementValue = SUM([BRT].[VALUE])
FROM [dbo].[BankRecTransactions] [BRT]
JOIN [BankRecHistory] [BRH]
ON [BRH].[BankAc] = [BRT].[BankAc]
AND [BRT].[RecNo] = [BRH].[RecNo]
AND [BRH].[DateComplete] IS NULL
WHERE [BRT].[BankAc] = @BankAc
AND [BRT].[Type] = 'R'
AND ISNULL([BRT].[Ticked],'') <> 'R'
SELECT @SumOfOutstandingChequeValue = SUM([BRT].[VALUE])
FROM [dbo].[BankRecTransactions] [BRT]
JOIN [BankRecHistory] [BRH]
ON [BRH].[BankAc] = [BRT].[BankAc]
AND [BRT].[RecNo] = [BRH].[RecNo]
AND [BRH].[DateComplete] IS NULL
WHERE [BRT].[BankAc] = @BankAc
AND [BRT].[Type] = 'P'
AND ISNULL([BRT].[Ticked],'') <> 'R'
SELECT @SumOfLodgementValue = SUM([BRT].[VALUE])
FROM [dbo].[BankRecTransactions] [BRT]
JOIN [BankRecHistory] [BRH]
ON [BRH].[BankAc] = [BRT].[BankAc]
AND [BRH].[DateComplete] IS NULL
AND [BRT].[RecNo] = [BRH].[RecNo]
WHERE [BRT].[BankAc] = @BankAc
AND [BRT].[Type] = 'R'
AND [BRT].[OsRecNo] = 0
SELECT @SumOfChequeValue = SUM([BRT].[VALUE])
FROM [dbo].[BankRecTransactions] [BRT]
JOIN [BankRecHistory] [BRH]
ON [BRH].[BankAc] = [BRT].[BankAc]
AND [BRH].[DateComplete] IS NULL
AND [BRT].[RecNo] = [BRH].[RecNo]
WHERE [BRT].[BankAc] = @BankAc
AND [BRT].[Type] = 'P'
AND [BRT].[OsRecNo] = 0
UPDATE [BRH]
SET [BRH].[OsLodgements] = ISNULL(@SumOfOutstandingLodgementValue,0),
[BRH].[OsCheques] = ISNULL(@SumOfOutstandingChequeValue,0),
[BRH].[Lodgements] = ISNULL(@SumOfLodgementValue,0),
[BRH].[Cheques] = ISNULL(@SumOfChequeValue,0)
FROM [dbo].[BankRecHistory] [BRH]
WHERE [BRH].[BankAc] = @BankAc
AND [DateComplete] IS NULL
UPDATE [BRH]
SET [BRH].[Diff] = [BRH].[OpeningBalance] + [BRH].[Lodgements] - ISNULL([BRH].[OsLodgements],0) - [BRH].[Cheques] + ISNULL([BRH].[OsCheques],0) - ISNULL([BRH].[BankBal],0)
FROM [dbo].[BankRecHistory] [BRH]
WHERE [BRH].[BankAc] = @BankAc
AND [DateComplete] IS NULL
END
IF(@Mode = 'BANKBAL')
BEGIN
UPDATE [BRH]
SET [BRH].[Diff] = [BRH].[OpeningBalance] + [BRH].[Lodgements] - ISNULL([BRH].[OsLodgements],0) - [BRH].[Cheques] + ISNULL([BRH].[OsCheques],0) - ISNULL(@BankBal,0),
[BRH].[BankBal] = ISNULL(@BankBal,0)
FROM [dbo].[BankRecHistory] [BRH]
WHERE [BRH].[BankAc] = @BankAc
AND [DateComplete] IS NULL
END
SELECT [RecNo],
RTRIM([BankAc]) AS [BankAc],
[RecDate],
[DateComplete],
[LastRec],
RTRIM([Currency]) AS [Currency],
[OpeningBalance],
[Lodgements],
[Cheques],
[OsLodgements],
[OsCheques],
[BankBal],
[ClosingBal],
[Diff]
FROM [dbo].[BankRecHistory]
WHERE [BankAc] = @BankAc
AND [DateComplete] IS NULL
IF(@Mode <>'BANKBAL')
BEGIN
SELECT RTRIM([BRT].[BankAc]) AS [BankAc],
RTRIM([BRT].[Type]) AS [Type],
[BRT].[Date],
RTRIM([BRT].[Ref]) AS [Ref],
[BRT].[Batch],
[BRT].[Pref],
RTRIM([BRT].[Narr]) AS [Narr],
[BRT].[Value],
[BRT].[OsRecNo],
[BRT].[RecNo],
RTRIM([BRT].[Ticked]) AS [Ticked],
[RecordId],
[BRT].[NomTransId]
FROM [dbo].[BankRecTransactions] [BRT]
JOIN [dbo].[BankRecHistory] [BRH]
ON [BRH].[RecNo] = [BRT].[RecNo]
WHERE [BRT].[BankAc] = @BankAc
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_RebuildBalances'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_RebuildBalances]
END
GO
CREATE PROCEDURE [dbo].[KAAS_RebuildBalances] (
@XML NVARCHAR(MAX) = '')
AS
/*******************************************************************
* [KAAS_RebuildBalances]
*
* Rebuild all balances in SAM: Matter, nominal, supplier
* This code is based on the original clarion code in find.app
*
* The following will rebuild all matters:
*
*
*
*
* The following will rebuild only specific records:
*
*
*
*
*
*
*
*
*
*
*
*
*
*
* Modification History:
* 2022-02-17 John Ginnane Created
* 2022-02-18 John Ginnane Fixed forward balance for suppliers
* 2022-02-25 John Ginnane Copied into new KAAS procedure
* 2022-03-31 John Ginnane Added optional parameter to specify
* which items to rebuild
* 2023-08-16 John Ginnane Use distinct for codes to avoid duplication
*
*******************************************************************/
BEGIN
SET NOCOUNT ON;
IF [dbo].[ISSAM4]() = 1
BEGIN
RETURN
END
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = N'
DECLARE @YEAR INT
DECLARE @PER INT
DECLARE @IECONVERT DECIMAL(19, 6)
SELECT @YEAR = [CON].[YEAR],
@PER = [CON].[CURPER],
@IECONVERT = [CON].[IECONVERT]
FROM [dbo].[control] AS [CON]
DECLARE @MATTERS TABLE ([Code] VARCHAR(20) PRIMARY KEY)
DECLARE @CLIENTS TABLE ([Code] VARCHAR(20) PRIMARY KEY)
DECLARE @NOMINALS TABLE ([Code] VARCHAR(10) PRIMARY KEY)
DECLARE @SUPPLIERS TABLE ([Code] VARCHAR(10) PRIMARY KEY)
/* Parse the input and put them records into their own tables */
/* If there was no input then rebuild all balances */
IF ISNULL(@XML, '''') = ''''
BEGIN
INSERT INTO @MATTERS ([Code])
SELECT [MAT].[Code] FROM [dbo].[matters] AS [MAT]
INSERT INTO @CLIENTS ([Code])
SELECT [CNT].[Code] FROM [dbo].[Contacts] AS [CNT]
INSERT INTO @NOMINALS ([Code])
SELECT [NOM].[CODE] FROM [dbo].[Nominal] AS [NOM]
INSERT INTO @SUPPLIERS ([Code])
SELECT [SUP].[CODE] FROM [dbo].[Suppliers] AS [SUP]
END
ELSE
BEGIN
DECLARE @iSL INT
BEGIN TRY
EXEC sp_xml_preparedocument @iSL OUTPUT, @XML
END TRY
BEGIN CATCH
EXEC sp_xml_preparedocument @iSL OUTPUT, N''''
END CATCH
DECLARE @TABLES TABLE (
[name] VARCHAR(100),
[target] VARCHAR(1))
INSERT INTO @TABLES (
[name],
[target])
SELECT [XML].[name],
ISNULL([XML].[target], '''')
FROM OPENXML(@iSL, N''data/*'')
WITH([name] VARCHAR(20) ''@mp:localname'',
[target] VARCHAR(10) ''@target'') AS [XML]
IF EXISTS (SELECT TOP 1 1
FROM @TABLES
WHERE [name] = ''matters''
AND [target] = ''*'')
BEGIN
INSERT INTO @MATTERS ([Code])
SELECT DISTINCT [MAT].[Code] FROM [dbo].[matters] AS [MAT]
INSERT INTO @CLIENTS ([Code])
SELECT DISTINCT [CNT].[Code] FROM [dbo].[Contacts] AS [CNT]
END
ELSE
BEGIN
INSERT INTO @MATTERS ([Code])
SELECT DISTINCT [XML].[code]
FROM OPENXML(@iSL, N''data/matters/*'')
WITH([code] VARCHAR(20) ''@code'') AS [XML]
INSERT INTO @CLIENTS ([Code])
SELECT DISTINCT [CNT].[Code]
FROM [dbo].[Contacts] AS [CNT]
INNER JOIN [dbo].[matters] AS [MAT]
ON [CNT].[Code] = [MAT].[ClientCode]
INNER JOIN @MATTERS AS [TMP]
ON [TMP].[Code] = [MAT].[Code]
END
IF EXISTS (SELECT TOP 1 1
FROM @TABLES
WHERE [name] = ''contacts''
AND [target] = ''*'')
BEGIN
INSERT INTO @CLIENTS ([Code])
SELECT DISTINCT [CNT].[Code]
FROM [dbo].[Contacts] AS [CNT]
LEFT OUTER JOIN @CLIENTS AS [TMP]
ON [TMP].[Code] = [CNT].[Code]
WHERE [TMP].[Code] IS NULL
END
ELSE
BEGIN
INSERT INTO @CLIENTS ([Code])
SELECT DISTINCT [XML].[code]
FROM OPENXML(@iSL, N''data/clients/*'')
WITH([code] VARCHAR(20) ''@code'') AS [XML]
END
IF EXISTS (SELECT TOP 1 1
FROM @TABLES
WHERE [name] = ''nominals''
AND [target] = ''*'')
BEGIN
INSERT INTO @NOMINALS ([Code])
SELECT DISTINCT [NOM].[CODE] FROM [dbo].[Nominal] AS [NOM]
END
ELSE
BEGIN
INSERT INTO @NOMINALS ([Code])
SELECT DISTINCT [XML].[code]
FROM OPENXML(@iSL, N''data/nominals/*'')
WITH([code] VARCHAR(20) ''@code'') AS [XML]
END
IF EXISTS (SELECT TOP 1 1
FROM @TABLES
WHERE [name] = ''suppliers''
AND [target] = ''*'')
BEGIN
INSERT INTO @SUPPLIERS ([Code])
SELECT DISTINCT [SUP].[CODE] FROM [dbo].[Suppliers] AS [SUP]
END
ELSE
BEGIN
INSERT INTO @SUPPLIERS ([Code])
SELECT DISTINCT [XML].[code]
FROM OPENXML(@iSL, N''data/suppliers/*'')
WITH([code] VARCHAR(20) ''@code'') AS [XML]
END
END
/* Matter Balances */
;WITH [MTL] ([Matter],
[DebtBal],
[DebtBalFwd],
[OutlayBal],
[OutlayBalFwd],
[ClientBal],
[ClientBalFwd],
[ClientCurBal],
[ClientCurBalFwd],
[ClientDepBal],
[ClientDepBalFwd]) AS (
SELECT [MTL2].[MATTER],
SUM([MTL2].[VALUED]),
SUM(CASE WHEN [MTL2].[YEAR] = @YEAR
AND [MTL2].[PER] = @PER + 1
THEN [MTL2].[VALUED]
ELSE 0 END),
SUM([MTL2].[VALUEO]),
SUM(CASE WHEN [MTL2].[YEAR] = @YEAR
AND [MTL2].[PER] = @PER + 1
THEN [MTL2].[VALUEo]
ELSE 0 END),
SUM([MTL2].[VALUEC]),
SUM(CASE WHEN [MTL2].[YEAR] = @YEAR
AND [MTL2].[PER] = @PER + 1
THEN [MTL2].[VALUEC]
ELSE 0 END),
SUM([MTL2].[VALUECC]),
SUM(CASE WHEN [MTL2].[YEAR] = @YEAR
AND [MTL2].[PER] = @PER + 1
THEN [MTL2].[VALUECC]
ELSE 0 END),
SUM([MTL2].[VALUECD]),
SUM(CASE WHEN [MTL2].[YEAR] = @YEAR
AND [MTL2].[PER] = @PER + 1
THEN [MTL2].[VALUECD]
ELSE 0 END)
FROM [dbo].[MatterLedger] AS [MTL2]
INNER JOIN @MATTERS AS [MAT]
ON [MAT].[Code] = [MTL2].[MATTER]
GROUP BY [MTL2].[MATTER]),
[MTLCUR] ([Matter],
[CurDebtBal],
[CurOutlayBal],
[CurClientBal],
[CurClientCBal],
[CurClientDBal],
[CurDebtBalFwd],
[CurOutlayBalFwd],
[CurClientBalFwd],
[CurClientCBalFwd],
[CurClientDBalFwd]) AS (
SELECT [MTL].[Matter],
[MTL].[DebtBal] * @IECONVERT,
[MTL].[OutlayBal] * @IECONVERT,
[MTL].[ClientBal] * @IECONVERT,
[MTL].[ClientCurBal] * @IECONVERT,
[MTL].[ClientDepBal] * @IECONVERT,
[MTL].[DebtBalFwd] * @IECONVERT,
[MTL].[OutlayBalFwd] * @IECONVERT,
[MTL].[ClientBalFwd] * @IECONVERT,
[MTL].[ClientCurBalFwd] * @IECONVERT,
[MTL].[ClientDepBalFwd] * @IECONVERT
FROM [MTL]),
[TIE] ([Matter],
[TimeBal],
[ChargeBal]) AS (
SELECT [TIE2].[Matter],
SUM(CASE WHEN [TIE2].[Charge] <> 0
THEN [TIE2].[TIME] * (1 - ([TIE2].[BilledAmount] / [TIE2].[Charge]))
WHEN [TIE2].[InvoiceNo] <> 0
THEN 0
ELSE [TIE2].[TIME] END),
SUM([TIE2].[Charge] - ISNULL([TIE2].[BilledAmount], 0))
FROM [dbo].[TimeEntry] AS [TIE2]
INNER JOIN @MATTERS AS [MAT]
ON [MAT].[Code] = [TIE2].[Matter]
WHERE [TIE2].[Rec_Irr] <> ''N''
AND [TIE2].[TimeOrCharge] <> ''B''
AND [TIE2].[IncludeInBill] <> 2
GROUP BY [TIE2].[Matter])
UPDATE [MAT]
SET [MAT].[DebtBal] = ISNULL([MTL].[DebtBal], 0),
[MAT].[DebtBalFwd] = ISNULL([MTL].[DebtBalFwd], 0),
[MAT].[ClientBal] = ISNULL([MTL].[ClientBal], 0),
[MAT].[ClientBalFwd] = ISNULL([MTL].[ClientBalFwd], 0),
[MAT].[OutlayBal] = ISNULL([MTL].[OutlayBal], 0),
[MAT].[OutlayBalFwd] = ISNULL([MTL].[OutlayBalFwd], 0),
[MAT].[ClientCurBal] = ISNULL([MTL].[ClientCurBal], 0),
[MAT].[ClientCurBalFwd] = ISNULL([MTL].[ClientCurBalFwd], 0),
[MAT].[ClientDepBal] = ISNULL([MTL].[ClientDepBal], 0),
[MAT].[ClientDepBalFwd] = ISNULL([MTL].[ClientDepBalFwd], 0),
[MAT].[TimeBal] = ISNULL([TIE].[TimeBal], 0),
[MAT].[ChargeBal] = ISNULL([TIE].[ChargeBal], 0),
[MAT].[CurDebtBal] = ISNULL([MTLCUR].[CurDebtBal], 0),
[MAT].[CurOutlayBal] = ISNULL([MTLCUR].[CurOutlayBal], 0),
[MAT].[CurClientBal] = ISNULL([MTLCUR].[CurClientBal], 0),
[MAT].[CurClientCBal] = ISNULL([MTLCUR].[CurClientCBal], 0),
[MAT].[CurClientDBal] = ISNULL([MTLCUR].[CurClientDBal], 0),
[MAT].[CurDebtBalFwd] = ISNULL([MTLCUR].[CurDebtBalFwd], 0),
[MAT].[CurOutlayBalFwd] = ISNULL([MTLCUR].[CurOutlayBalFwd], 0),
[MAT].[CurClientBalFwd] = ISNULL([MTLCUR].[CurClientBalFwd], 0),
[MAT].[CurClientCBalFwd] = ISNULL([MTLCUR].[CurClientCBalFwd], 0),
[MAT].[CurClientDBalFwd] = ISNULL([MTLCUR].[CurClientDBalFwd], 0)
FROM [dbo].[matters] AS [MAT]
INNER JOIN @MATTERS AS [MAT2]
ON [MAT].[Code] = [MAT2].[Code]
LEFT OUTER JOIN [MTL]
ON [MAT].[Code] = [MTL].[Matter]
LEFT OUTER JOIN [MTLCUR]
ON [MAT].[Code] = [MTLCUR].[Matter]
LEFT OUTER JOIN [TIE]
ON [MAT].[Code] = [TIE].[Matter]
/* Client Balances */
;WITH [MAT] ([ClientCode],
[DebtBal],
[OutlayBal],
[ClientCurBal],
[ClientDepBal],
[CurDebtBal],
[CurOutlayBal],
[CurClientCBal],
[CurClientDBal]) AS (
SELECT [MAT].[ClientCode],
SUM([MAT].[DebtBal]),
SUM([MAT].[OutlayBal]),
SUM([MAT].[ClientCurBal]),
SUM([MAT].[ClientDepBal]),
SUM([MAT].[CurDebtBal]),
SUM([MAT].[CurOutlayBal]),
SUM([MAT].[CurClientCBal]),
SUM([MAT].[CurClientDBal])
FROM [dbo].[matters] AS [MAT]
INNER JOIN @MATTERS AS [MAT2]
ON [MAT].[Code] = [MAT2].[Code]
GROUP BY [MAT].[ClientCode])
UPDATE [CNT]
SET [CNT].[BillBal] = ISNULL([MAT].[DebtBal], 0),
[CNT].[OutlayBal] = ISNULL([MAT].[OutlayBal], 0),
[CNT].[ClientCur] = ISNULL([MAT].[ClientCurBal], 0),
[CNT].[ClientDep] = ISNULL([MAT].[ClientDepBal], 0),
[CNT].[CurBillBal] = ISNULL([MAT].[CurDebtBal], 0),
[CNT].[CurOutlayBal] = ISNULL([MAT].[CurOutlayBal], 0),
[CNT].[CurClientCBal] = ISNULL([MAT].[CurClientCBal], 0),
[CNT].[CurClientDBal] = ISNULL([MAT].[CurClientDBal], 0)
FROM [dbo].[Contacts] AS [CNT]
INNER JOIN @CLIENTS AS [CNT2]
ON [CNT].[Code] = [CNT2].[Code]
LEFT OUTER JOIN [MAT]
ON [CNT].[Code] = [MAT].[ClientCode]
/* Nominal Balances */
;WITH [NML] ([Code],
[Balance],
[CurrencyBal],
[BalanceFwd],
[CurrencyBalFwd],
[Month1],
[Month2],
[Month3],
[Month4],
[Month5],
[Month6],
[Month7],
[Month8],
[Month9],
[Month10],
[Month11],
[Month12]) AS (
SELECT [NML2].[CODE],
SUM([NML2].[VALUE]),
SUM([NML2].[VALUE]) * @IECONVERT,
SUM(CASE WHEN [NML2].[PER] = @PER + 1 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = @PER + 1 THEN [NML2].[VALUE] ELSE 0 END) * @IECONVERT,
SUM(CASE WHEN [NML2].[PER] = 1 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = 2 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = 3 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = 4 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = 5 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = 6 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = 7 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = 8 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = 9 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = 10 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = 11 THEN [NML2].[VALUE] ELSE 0 END),
SUM(CASE WHEN [NML2].[PER] = 12 THEN [NML2].[VALUE] ELSE 0 END)
FROM [dbo].[NominalLedger] AS [NML2]
INNER JOIN @NOMINALS AS [NOM]
ON [NML2].[CODE] = [NOM].[Code]
WHERE [NML2].[YEAR] = @YEAR
GROUP BY [NML2].[CODE])
UPDATE [NOM]
SET [NOM].[BALANCE] = ISNULL([NML].[Balance], 0),
[NOM].[CURRENCYBAL] = ISNULL([NML].[CurrencyBal], 0),
[NOM].[BALANCEFWD] = ISNULL([NML].[BalanceFwd], 0),
[NOM].[CURRENCYBALFWD] = ISNULL([NML].[CurrencyBalFwd], 0),
[NOM].[MONTH1] = ISNULL([NML].[Month1], 0),
[NOM].[MONTH2] = ISNULL([NML].[Month2], 0),
[NOM].[MONTH3] = ISNULL([NML].[Month3], 0),
[NOM].[MONTH4] = ISNULL([NML].[Month4], 0),
[NOM].[MONTH5] = ISNULL([NML].[Month5], 0),
[NOM].[MONTH6] = ISNULL([NML].[Month6], 0),
[NOM].[MONTH7] = ISNULL([NML].[Month7], 0),
[NOM].[MONTH8] = ISNULL([NML].[Month8], 0),
[NOM].[MONTH9] = ISNULL([NML].[Month9], 0),
[NOM].[MONTH10] = ISNULL([NML].[Month10], 0),
[NOM].[MONTH11] = ISNULL([NML].[Month11], 0),
[NOM].[MONTH12] = ISNULL([NML].[Month12], 0)
FROM [dbo].[Nominal] AS [NOM]
INNER JOIN @NOMINALS AS [NOM2]
ON [NOM2].[CODE] = [NOM].[Code]
LEFT OUTER JOIN [NML]
ON [NML].[Code] = [NOM].[CODE]
;WITH [SPL] ([Code],
[Balance],
[BalanceFwd]) AS (
SELECT [SPL2].[SUPP],
SUM([SPL2].[OSVALUE]),
SUM(CASE WHEN [SPL2].[YEAR] = @YEAR
AND [SPL2].[PER] = @PER + 1
THEN [SPL2].[OSVALUE]
ELSE 0 END)
FROM [dbo].[SupplierLedger] AS [SPL2]
INNER JOIN @SUPPLIERS AS [SUP]
ON [SUP].[Code] = [SPL2].[SUPP]
GROUP BY [SPL2].[SUPP]),
[BAH] ([Code],
[TPBal]) AS (
SELECT [BAH2].[SUPP],
SUM([BAH2].[VALUE])
FROM [dbo].[BatchH] AS [BAH2]
WHERE [BAH2].[POSTED] = ''Y''
AND [BAH2].[THIRDPARTY] = ''Y''
AND [BAH2].[YEAR] = @YEAR
GROUP BY [BAH2].[SUPP])
UPDATE [SUP]
SET [SUP].[BALANCE] = ISNULL([SPL].[Balance], 0),
[SUP].[BALANCEFWD] = ISNULL([SPL].[BalanceFwd], 0),
[SUP].[TPBAL] = ISNULL([BAH].[TPBal], 0)
FROM [dbo].[Suppliers] AS [SUP]
INNER JOIN @SUPPLIERS AS [SUP2]
ON [SUP].[Code] = [SUP2].[CODE]
LEFT OUTER JOIN [SPL]
ON [SUP].[CODE] = [SPL].[Code]
LEFT OUTER JOIN [BAH]
ON [SUP].[CODE] = [BAH].[Code]'
EXEC sp_executesql @SQL, N'@XML NVARCHAR(MAX)', @XML = @XML
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_RemoveBlockers'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_RemoveBlockers]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_RemoveBlockers]
AS
/******************************************************************************
*
* [dbo].[KAAS_RemoveBlockers]
* Kills transactions that have been asleep for over 10 minutes, and processes
* that have been blocking other processes for over 10 minutes.
*
* Copied from : [dbo].[ky_NETSPRemoveBlockers]
* Modification History :
* 2022-02-04 Vignesh.M Created
******************************************************************************/
BEGIN
DECLARE @blocker INT
DECLARE @COMMAND VARCHAR(100)
SET @blocker = 0
SELECT TOP 1 @blocker = SPS.[spid]
FROM [sys].[sysprocesses] SPS
WHERE SPS.[open_tran] = 1
and ( SPS.[status] = 'sleeping'
or SPS.[cmd] = 'AWAITING COMMAND')
and DATEDIFF(MI, last_batch, GetDate()) > 10
WHILE ISNULL(@blocker, 0) > 0
BEGIN
SET @COMMAND = 'KILL ' + CONVERT(VARCHAR(20), @blocker)
EXEC (@COMMAND)
SET @blocker = 0
SELECT TOP 1 @blocker = SPS.[spid]
FROM [sys].[sysprocesses] SPS
WHERE SPS.[open_tran] = 1
and ( SPS.[status] = 'sleeping'
or SPS.[cmd] = 'AWAITING COMMAND')
and DATEDIFF(MI, last_batch, GetDate()) > 10
END
SELECT TOP 1 @blocker = SPS.[blocked]
FROM [sys].[sysprocesses] SPS
WHERE SPS.[blocked] > 0
AND SPS.[waittime] > 600000
WHILE ISNULL(@blocker, 0) > 0
BEGIN
SET @COMMAND = 'KILL ' + CONVERT(VARCHAR(20), @blocker)
EXEC (@COMMAND)
SET @blocker = 0
SELECT TOP 1 @blocker = SPS.[blocked]
FROM [sys].[sysprocesses] SPS
WHERE SPS.[blocked] > 0
AND SPS.[waittime] > 60000
END
END
GO
IF OBJECT_ID(N'KAAS_ReopenMatterClosable',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_ReopenMatterClosable]
GO
CREATE PROCEDURE
[dbo].[KAAS_ReopenMatterClosable]
(@MATTER VARCHAR(20))
AS
/**************************************************************************************
* Process to reopen closed matter records from archive enquiry *
* *
* Stored Procedure Name : [dbo].[KAAS_ReopenMatterClosable]
* Copied From : [dbo].[ky_NETPMatterClosable]
* *
* Modification History: *
* 2022-05-31 Ghayathri.S.V Created
**************************************************************************************/
BEGIN
DECLARE @AlreadyClosed INT
DECLARE @HasOutstandingRec INT
DECLARE @HasOutstandingBal INT
DECLARE @HasOutstandingTimeBal INT
DECLARE @HasOutstandingChargeBal INT
DECLARE @HasOutstandingDiary INT
DECLARE @HasOutstandingUndertakings INT
DECLARE @HasUnallocatedReceipts BIT
DECLARE @CheckUnallocatedReceipts BIT
DECLARE @HasDraftBills BIT
DECLARE @CheckDraftBillsClosingMatter BIT
DECLARE @IsSAM4 bit
SELECT @CheckDraftBillsClosingMatter = CASE WHEN [SET].[KeyName] = 'CheckDraftBillsClosingMatter'
AND [SET].[KeyValue] = 'True'
THEN 1
ELSE ISNULL(@CheckDraftBillsClosingMatter, 0) END,
@CheckUnallocatedReceipts = CASE WHEN [SET].[KeyName] = 'CheckUnallocatedReceipts'
AND [SET].[KeyValue] = 'True'
THEN 1
ELSE ISNULL(@CheckUnallocatedReceipts, 0) END
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] IN ('CheckDraftBillsClosingMatter', 'CheckUnallocatedReceipts')
SET @IsSAM4 = [dbo].[ISSAM4]()
-- Please see also: ky_NETCaseSummaryPageLoad. If you change any of these calculations,
-- ensure the ones in there are changed as well.
-- ky_NETTLFetchTimeEntry. If you change any of these calculations,
-- ensure the ones in there are changed as well.
DECLARE @TimeBal INT
DECLARE @ChargeBal DECIMAL(19, 2)
DECLARE @TotalCharge Decimal(19, 2)
DECLARE @TotalTime INT
DECLARE @TimeEntryTotalCharge DECIMAL(19, 2)
DECLARE @TimeEntryTotalTime INT
SELECT @TimeEntryTotalCharge = ISNULL(SUM(ISNULL(TIE.[Charge], 0)), 0),
@TimeEntryTotalTime = ISNULL(SUM(ISNULL(TIE.[TIME], 0)), 0),
@TotalCharge = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N'
THEN 0
ELSE ISNULL(TIE.[Charge], 0) END), 0),
@ChargeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N'
THEN 0
WHEN [TIE].[IncludeInBill] = 2
THEN 0
WHEN @IsSAM4 = 1
AND ISNULL(TIE.[InvoiceNo], 0) <> 0
THEN 0
WHEN @IsSAM4 = 1
THEN ISNULL(TIE.[Charge], 0)
ELSE ISNULL(TIE.[Charge], 0) - ISNULL(TIE.[BilledAmount], 0) END), 0),
@TimeBal = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N'
THEN 0
WHEN [TIE].[IncludeInBill] = 2
THEN 0
WHEN @IsSAM4 = 1
AND ISNULL(TIE.[InvoiceNo], 0) <> 0
THEN 0
WHEN @IsSAM4 = 0
THEN CASE WHEN TIE.[Charge] = 0
THEN 0
ELSE CONVERT(INT,
FLOOR(CONVERT(DECIMAL(18, 2), TIE.[TIME])
* ( (TIE.[Charge] - TIE.[BilledAmount])
/
TIE.[Charge]))) END
ELSE ISNULL(TIE.[Time], 0) END), 0),
@TotalTime = ISNULL(SUM(CASE WHEN ISNULL(TIE.[Rec_Irr], '') = 'N'
THEN 0
ELSE ISNULL(TIE.[Time], 0) END), 0)
FROM [dbo].[TimeEntry] TIE
WHERE TIE.[Matter] = @MATTER
AND ( (TIE.[TimeOrCharge] = 'T')
OR (TIE.[TimeOrCharge] = 'C')) --**Changed fetch condition JIRA 1081 - arun
DECLARE @DebtBal DECIMAL(19, 2)
DECLARE @OutlayBal DECIMAL(19, 2)
DECLARE @DebtBalDate DATETIME
DECLARE @OutlayBalDate DATETIME
DECLARE @ClientCurrent DECIMAL(19, 2)
DECLARE @ClientDeposit DECIMAL(19, 2)
DECLARE @NCOMMAND NVARCHAR(MAX)
-- To ensure SAM3 will retrieve these from [dbo].[matters]
SET @DebtBal = 0
SET @OutlayBal = 0
SET @ClientCurrent = 0
SET @ClientDeposit = 0
IF @IsSAM4 = 1
BEGIN
SET @NCOMMAND = N'
SELECT @DebtBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[DebtorsValue], 0)), 0)),
@DebtBalDate = MAX(CASE WHEN ISNULL(TRN.[DebtorsValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END),
@OutlayBal = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[OutlayValue], 0)), 0)),
@OutlayBalDate = MAX(CASE WHEN ISNULL(TRN.[OutlayValue], 0) = 0 THEN NULL ELSE TRN.[TransDate] END),
@ClientCurrent = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientCurrent], 0)), 0)),
@ClientDeposit = CONVERT(DECIMAL(19, 2), ISNULL(SUM(ISNULL(TRN.[ClientDeposit], 0)), 0))
FROM [dbo].[Transactions] TRN
WHERE TRN.[MatterCode] = @MATTER
AND TRN.[Posted] = ''Y''
AND TRN.[RecType] <> ''V''
AND TRN.[CorrectionInd] = ''L'''
EXECUTE sp_executesql @NCOMMAND,
N'@MATTER VARCHAR(20),
@DebtBal DECIMAL(19, 2) OUTPUT,
@DebtBalDate DATETIME OUTPUT,
@OutlayBal DECIMAL(19, 2) OUTPUT,
@OutlayBalDate DATETIME OUTPUT,
@ClientCurrent DECIMAL(19, 2) OUTPUT,
@ClientDeposit DECIMAL(19, 2) OUTPUT',
@MATTER = @MATTER,
@DebtBal = @DebtBal OUTPUT,
@DebtBalDate = @DebtBalDate OUTPUT,
@OutlayBal = @OutlayBal OUTPUT,
@OutlayBalDate = @OutlayBalDate OUTPUT,
@ClientCurrent = @ClientCurrent OUTPUT,
@ClientDeposit = @ClientDeposit OUTPUT
END
SELECT @AlreadyClosed = CASE WHEN MAT.[Closed] = 'Y' THEN 1 ELSE 0 END,
@HasOutstandingBal = CASE WHEN @DebtBal <> 0
THEN 1
WHEN ISNULL(MAT.[DebtBal], 0) <> 0
THEN 1
WHEN @OutlayBal <> 0
THEN 1
WHEN ISNULL(MAT.[OutlayBal], 0) <> 0
THEN 1
WHEN ISNULL(MAT.[ClientBal], 0) <> 0 --No need to check @ClientCurBal + @ClientDepBal
THEN 1
WHEN @ClientCurrent <> 0
THEN 1
WHEN ISNULL(MAT.[ClientCurBal], 0) <> 0
THEN 1
WHEN @ClientDeposit <> 0
THEN 1
WHEN ISNULL(MAT.[ClientDepBal], 0) <> 0
THEN 1
ELSE 0 END,
@HasOutstandingTimeBal = CASE WHEN @TimeBal <> 0 THEN 1 ELSE 0 END,
@HasOutstandingChargeBal = CASE WHEN @ChargeBal <> 0 THEN 1 ELSE 0 END
FROM [dbo].[matters] MAT
WHERE MAT.[Code] = @MATTER
SET @AlreadyClosed = ISNULL(@AlreadyClosed, 0)
SET @HasOutstandingBal = ISNULL(@HasOutstandingBal, 0)
SET @HasOutstandingTimeBal = ISNULL(@HasOutstandingTimeBal, 0)
SET @HasOutstandingChargeBal = ISNULL(@HasOutstandingChargeBal, 0)
DECLARE @YEAR INT
IF @IsSAM4 = 0
BEGIN
SET @NCOMMAND = N'SELECT @YEAR = ISNULL(CTL.[YEAR], DATEPART(YEAR, GetDate()))
FROM [dbo].[Control] CTL
IF (@YEAR IS NULL)
BEGIN
SET @YEAR = DATEPART(YEAR, GetDate())
END'
END
ELSE
BEGIN
SET @NCOMMAND = N'SELECT @YEAR = ISNULL(CONVERT(INT, CTL.[NumValue]), DATEPART(YEAR, GetDate()))
FROM [dbo].[CtrlNum] CTL
WHERE CTL.[Code] = ''CurYear''
IF (@YEAR IS NULL)
BEGIN
SET @YEAR = DATEPART(YEAR, GetDate())
END'
END
EXEC sp_executesql @NCOMMAND, N'@YEAR INT OUTPUT', @YEAR OUTPUT
IF @IsSAM4 = 0
BEGIN
SET @NCOMMAND = N'SELECT @HasOutstandingRec = CASE COUNT(1) WHEN 0 THEN 0 ELSE 1 END
FROM [dbo].[MatterLedger] MAL
INNER JOIN [dbo].[BatchH] BH
INNER JOIN [dbo].[BankRecHistory] BHS
ON BHS.[BANKAC] = BH.[CODE]
ON BH.[BATCHNO] = MAL.[BATCHNO]
AND BH.[RECNO] <= 0
AND BH.[TYPE] IN (''P'', ''R'', ''T'')
WHERE MAL.[MATTER] = @MATTER
AND MAL.[YEAR] = @YEAR
AND MAL.[REF] <> ''EUROADJ''
SET @HasOutstandingRec = ISNULL(@HasOutstandingRec, 0)'
END
ELSE
BEGIN
SET @NCOMMAND = N'SELECT @HasOutstandingRec = CASE COUNT(1) WHEN 0 THEN 0 ELSE 1 END
FROM [dbo].[Transactions] TRN
WHERE TRN.[MatterCode] = @MATTER
AND TRN.[Posted] = ''Y''
AND TRN.[RecType] <> ''V''
AND ( TRN.[CorrectionInd] = ''L''
OR TRN.[CorrectionInd] = ''C'')
AND TRN.[PostingYear] = @YEAR
AND TRN.[Reconciliation] <= 0
SET @HasOutstandingRec = ISNULL(@HasOutstandingRec, 0)'
END
EXEC sp_executesql @NCOMMAND, N'@MATTER VARCHAR(20), @YEAR INT, @HasOutstandingRec INT OUTPUT', @MATTER, @YEAR, @HasOutstandingRec OUTPUT
IF @CheckUnallocatedReceipts = 1
BEGIN
IF @IsSAM4 = 0
BEGIN
SET @NCOMMAND = N'SELECT @HasUnallocatedReceipts =
CASE WHEN COUNT(1) = 0
THEN CONVERT(BIT, 0)
ELSE CONVERT(BIT, 1) END
FROM [dbo].[DebtorsLedger] [DL]
WHERE [DL].[MATTER] = @MATTER
AND [DL].[TYPE] = ''R''
AND [DL].[OSVALUE] <> 0'
END
ELSE
BEGIN
SET @NCOMMAND = N'SELECT @HasUnallocatedReceipts =
CASE WHEN COUNT(1) = 0
THEN CONVERT(BIT, 0)
ELSE CONVERT(BIT, 1) END
FROM [dbo].[DebtorsLedger] [DL]
WHERE [DL].[MatterCode] = @MATTER
AND [DL].[RecType] = ''R''
AND [DL].[OSValue] <> 0'
END
EXEC sp_executesql @NCOMMAND, N'@MATTER VARCHAR(20), @HasUnallocatedReceipts INT OUTPUT', @MATTER, @HasUnallocatedReceipts OUTPUT
END
ELSE
BEGIN
SET @HasUnallocatedReceipts = 0
END
IF @CheckDraftBillsClosingMatter = 1
BEGIN
IF @IsSAM4 = 0
BEGIN
SET @NCOMMAND = N'SELECT @HasDraftBills = CASE WHEN COUNT(1) > 0 THEN 1 ELSE 0 END
FROM [dbo].[BillHeader] AS [BH]
WHERE [BH].[MATTER] = @MATTER
AND [BH].[BILLNO] = 0'
END
ELSE
BEGIN
SET @NCOMMAND = N'SELECT @HasDraftBills = CASE WHEN COUNT(1) > 0 THEN 1 ELSE 0 END
FROM [dbo].[Billhead] AS [BH]
WHERE [BH].[MatterCode] = @MATTER
AND [BH].[InvoiceNo] = 0'
END
EXEC sp_executesql @NCOMMAND, N'@MATTER VARCHAR(20), @HasDraftBills BIT OUTPUT', @MATTER, @HasDraftBills OUTPUT
END
ELSE
BEGIN
SET @HasDraftBills = 0
END
SELECT @HasOutstandingDiary = CASE WHEN COUNT(1) = 0 THEN 0 ELSE 1 END
FROM [dbo].[diary] DIA
WHERE DIA.[CASECODE] = @MATTER
AND DIA.[STATUS] <> 1
SELECT @HasOutstandingUndertakings = CASE WHEN COUNT(1) = 0 THEN 0 ELSE 1 END
FROM [dbo].[Undertakings] UND
WHERE UND.[MATTER] = @MATTER
AND UND.[DISCHARGEDATE] IS NULL
SELECT @AlreadyClosed AS [AlreadyClosed],
@HasOutstandingBal AS [HasOutstandingBal],
@HasOutstandingTimeBal AS [HasOutstandingTimeBal],
@HasOutstandingChargeBal AS [HasOutstandingChargeBal],
@HasOutstandingRec AS [HasOutstandingRec],
@HasOutstandingDiary AS [HasOutstandingDiary],
@HasOutstandingUndertakings AS [HasOutstandingUndertakings],
@HasUnallocatedReceipts AS [HasUnallocatedReceipts],
@HasDraftBills AS [HasDraftBills]
END
GO
IF OBJECT_ID(N'KAAS_SAMApproveReturnChequeRequisition',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_SAMApproveReturnChequeRequisition]
GO
CREATE PROCEDURE [dbo].[KAAS_SAMApproveReturnChequeRequisition]
(
@ReqNo INT,
@Status CHAR
)
AS
/*******************************************************************************************************
* To return cheque requisitions *
* *
* Stored Procedure Name : [dbo].[KAAS_SAMReturnChequeRequisition] *
* *
* Modification History: *
* 2021-09-20 Revathy D Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
UPDATE [dbo].[ChequeRequisitionHeader]
SET [STATUS] = @Status
WHERE [REQNO] = @ReqNo
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_SAMApproveReturnDraftBills',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_SAMApproveReturnDraftBills]
GO
CREATE PROCEDURE [dbo].[KAAS_SAMApproveReturnDraftBills]
(
@BillNo INT,
@BatchNo INT = 0,
@Matter VARCHAR(20),
@DraftNo INT,
@Released CHAR,
@IsApprove CHAR
)
AS
/*******************************************************************************************************
* To approve/return draft bills *
* *
* Stored Procedure Name : [dbo].[KAAS_SAMApproveReturnDraftBills] *
* *
* Modification History: *
* 2021-09-21 Revathy D Created *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRANSACTION
IF(@IsApprove = 'Y')
BEGIN
UPDATE [dbo].[BillHeader]
SET [BILLNO] = @BillNo,
[BATCHNO] = @BatchNo
WHERE [MATTER] = @Matter
AND [DRAFTNO] = @DraftNo
AND [BILLNO] = 0
END
ELSE
BEGIN
UPDATE [dbo].[BillHeader]
SET [RELEASED] = @Released
WHERE [MATTER] = @Matter
AND [DRAFTNO] = @DraftNo
AND [BILLNO] = 0
END
COMMIT TRANSACTION
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamBGBillAllItems'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamBGBillAllItems]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamBGBillAllItems]
(
@GroupIDString VARCHAR(38) = '',
@Action INT = 0
)
AS
/*******************************************************************************************************
* Billing guide Bill All Items *
* *
* Stored Procedure Name : [dbo].[KAAS_SamBGBillAllItems] *
* *
* Modification History: *
* 2021-10-25 Vinodhkumar M Created *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
/* Actions:
1 - Don't bill
2 - Bill
3 - Exclude from all bills
*/
BEGIN TRY
BEGIN TRAN
UPDATE [BGD]
SET [BGD].[BillNow] = CASE WHEN @Action = 1
THEN [BGD].[CHARGE] - [BGD].[BilledAmount]
ELSE 0 END,
[BGD].[IncludeInBill] = CASE WHEN @Action = 3
THEN 2
ELSE 1 END
FROM [dbo].[BGGroups] [BGG]
INNER JOIN [dbo].[BGDetail] [BGD]
ON BGD.[BGGroupID] = [BGG].[ID]
WHERE [BGG].[ID] = CONVERT(uniqueidentifier, @GroupIDString)
UPDATE [BGD2]
SET [BGD2].[BillNow] = 0,
[BGD2].[IncludeInBill] = 0
FROM [dbo].[BGGroups] [BGG]
INNER JOIN [dbo].[BGDetail] [BGD]
ON [BGD].[BGGroupID] = [BGG].[ID]
INNER JOIN [dbo].[BGDetail] [BGD2]
ON [BGD2].[Type] = BGD.[Type]
AND [BGD2].[OriginalID] = [BGD].[OriginalID]
AND [BGD2].[BGControlID] <> [BGD].[BGControlID]
AND [BGD2].[InvoiceNo] = 0
WHERE [BGG].[ID] = CONVERT(uniqueidentifier, @GroupIDString)
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamBillingGuideAddToInvoice'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamBillingGuideAddToInvoice]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamBillingGuideAddToInvoice]
(@DraftNo INT = 0,
@DeleteExisting VARCHAR(10) = NULL)
AS
/*******************************************************************************************************
* add to invoice *
* *
* Stored Procedure Name : [dbo].[KAAS_SamBillingGuideAddToInvoice] *
* *
* Modification History: *
* 2021-10-22 vinodhkumar M Created *
* 2021-10-27 vinodhkumar M Modifed - added Delete Draft Bill Detail SP with Flag *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
SET NO_BROWSETABLE ON
IF(@DeleteExisting = 'CLEAR')
BEGIN
EXEC [dbo].[KAAS_DeleteDraftBillDetail] 0,@DraftNo
END
EXEC ky_BGAddToInvoice @DraftNo
INSERT
INTO [dbo].[BillFeeBreakdown]
([MATTER],
[DRAFTNO],
[BILLNO],
[FECODE],
[TYPE],
[PERCENT],
[CALCULATION],
[VALUE],
[VATCODE],
[VATAMT])
SELECT [NBFB].[MATTER],
[NBFB].[DRAFTNO],
[NBFB].[BILLNO],
[NBFB].[FECODE],
[NBFB].[TYPE],
[NBFB].[PERCENT],
[NBFB].[CALCULATION],
[NBFB].[VALUE],
[NBFB].[VATCODE],
[NBFB].[VATAMT]
FROM ky_BGNewBillFeeBreakdown(@DraftNo) [NBFB]
LEFT OUTER JOIN [dbo].[BillFeeBreakdown] [BFB]
ON [BFB].[DRAFTNO] = [NBFB].[DRAFTNO]
AND [BFB].[FECODE] = [NBFB].[FECODE]
WHERE [BFB].[RECORDID] IS NULL
UPDATE [BFB]
SET [BFB].[VALUE] = [BFB].[VALUE] + [NBFB].[VALUE],
[BFB].[VATAMT] = [BFB].[VATAMT] + [NBFB].[VATAMT]
FROM [dbo].[BillFeeBreakDown] [BFB]
INNER JOIN ky_BGNewBillFeeBreakdown(@DraftNo) [NBFB]
ON [NBFB].[FECODE] = [BFB].[FECODE]
WHERE [BFB].[DRAFTNO] = @DraftNo
SET NO_BROWSETABLE OFF
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamBillingGuideControl'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamBillingGuideControl]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamBillingGuideControl]
(@DraftNo INT = 0)
AS
/*******************************************************************************************************
* Get control details based on DraftNo *
* *
* Stored Procedure Name : [dbo].[KAAS_SamBillingGuideControl] *
* *
* Modification History: *
* 2021-10-20 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
SELECT
[ID] AS [Id],
[Date] AS [Date],
[TDate] AS [TDate],
[ODate] AS [ODate],
[Description] AS [Description],
[DRAFTNO] AS [DraftNo],
[BATCHNO] AS [BatchNo],
[ADDRESSEE] AS [Addressee],
[OURREF] AS [OurRef],
[YOURREF] AS [YourRef],
[MATTER] AS [Matter],
[IsAdhoc] AS [IsAdhoc],
[OAmount] AS [OAmount],
[TAmount] AS [TAmount]
FROM
[dbo].[BGControl]
WHERE
[DRAFTNO] = @DraftNo
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamBillingGuideDrillList'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamBillingGuideDrillList]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamBillingGuideDrillList]
(
@GroupId VARCHAR(38)
)
AS
/*******************************************************************************************************
* List for Billing Guide *
* *
* Stored Procedure Name : [dbo].[KAAS_SamBillingGuideDrillList] *
* *
* Modification History: *
* 2024-01-02 Ghayathri.S.V Created * *
*******************************************************************************************************/
BEGIN
SELECT [BGDE].[IncludeInBill] AS IncludeInBill,
[BGDE].[Type] AS Type,
[BGDE].[MATTER] AS Matter,
[BGDE].[FEEEARN] AS FE,
[BGDE].[OUTLAYCODE] AS OutlayCode,
[BGDE].[OUTLAYDESCRIPTION] AS OutlayDescription,
[BGDE].[HANDLERNAME] AS HandlerName,
[BGDE].[TEAMNAME] AS TeamName,
[BGDE].[DATE] AS Date,
[BGDE].[COMMENT] AS Comment,
[BGDE].[InvoiceNo] AS InvoiceNo,
[BGDE].[CHARGE] AS Charge,
[BGDE].[ORIGINALCHARGE] AS OriginalCharge,
[BGDE].[BilledAmount] AS BilledAmount,
[BGDE].[LeftToBill] AS LeftToBill,
[BGDE].[BillNow] AS BillNow,
BGD.[DATE] AS [UNFDate],
TIE.[task],
RTRIM(IsNull(TT.[DESC], '')) AS [TaskDescription]
FROM ky_BGListGroupDrillEntries(@GroupId) BGDE
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[ID] = BGDE.[ItemID]
LEFT OUTER JOIN [dbo].[TimeEntry] TIE
INNER JOIN [dbo].[TasksCodes] TT
ON TT.[CODE] = TIE.[TASK]
ON BGDE.[Type] = 'F'
AND TIE.[RECORDID] = BGD.[OriginalID]
ORDER BY BGDE.[SeqNo]
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamBillingGuideGroupConfig'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamBillingGuideGroupConfig]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamBillingGuideGroupConfig]
(@DraftNo INT = 0,
@GroupType VARCHAR(1) = NULL,
@GroupHandler VARCHAR(5) = NULL,
@GroupOutlay VARCHAR(10) = NULL,
@GroupMatter VARCHAR(17) = NULL,
@GroupNarr VARCHAR(255) = NULL,
@NewGroupNarr VARCHAR(255) = NULL,
@GroupingMode VARCHAR(17) = NULL,
@HandlerMode VARCHAR(17) = NULL)
AS
/*******************************************************************************************************
* Billing Guide Grouping Cofiguration *
* *
* Stored Procedure Name : [dbo].[KAAS_SamBillingGuideGroupConfig] *
* *
* Modification History: *
* 2021-10-21 Vinodhkumar M Created *
* 2024-01-02 Ghayathri.S.V Updated the code logic as per Framework Version *
*******************************************************************************************************/
BEGIN
DECLARE @ControlID INT = 0
SELECT @CONTROLID = [ID]
FROM [dbo].[BGControl]
WHERE [DRAFTNO] = @DraftNo
IF(@GroupingMode = 'SINGLE')
BEGIN
IF (@GroupType IS NOT NULL)
SET @GroupType = substring(@GroupType, 1, 1)
IF (@NEWGroupNarr IS NOT NULL)
Set @NEWGroupNarr = SUBSTRING(@NEWGroupNarr, 1, 255)
IF (@GroupNarr IS NOT NULL)
SET @GroupNarr = SUBSTRING(@GroupNarr, 1, 255)
IF (@GroupHandler IS NOT NULL)
Set @GroupHandler = SubString(@GroupHandler, 1, 5)
IF (@GroupOutlay IS NOT NULL)
Set @GroupOutlay = SUBSTRING(@GroupOutlay, 1, 10)
IF (@GroupMatter IS NOT NULL)
SET @GroupMatter = SUBSTRING(@GroupMatter, 1, 17)
EXEC [dbo].[ky_QuickGroupBG]
@ControlID,
@GroupType,
@GroupHandler,
@GroupOutlay,
@GroupMatter,
@GroupNarr,
@NEWGroupNarr
END
ELSE IF(@GroupingMode = 'GROUP')
BEGIN
DECLARE @column1 VARCHAR(10), @column2 VARCHAR(10), @column3 VARCHAR(200)
IF(@HandlerMode = 'OUTLAY')
BEGIN
DECLARE your_cursor CURSOR FOR
SELECT @GroupType, UF.[OUTLAYCODE],
Case WHEN RTRIM(IsNull(OLC.[DESCRIPTION], '')) = ''
THEN '(unspecified)'
ELSE RTrim(OLC.[Description]) END As [OutlayDescription]
FROM ( SELECT DISTINCT BGD.[OUTLAYCODE]
FROM [dbo].[BGDetail] BGD
WHERE BGD.[BGControlID] = @CONTROLID
AND BGD.[Type] = 'O') UF
LEFT OUTER JOIN [dbo].[OutlayCode] OLC
ON OLC.[CODE] = UF.[OUTLAYCODE]
END
ELSE IF(@HandlerMode = 'FEE')
BEGIN
DECLARE your_cursor CURSOR FOR
SELECT @GroupType, UF.[FEEEARN],
HAN.[Name] As [HandlerName]
FROM ( SELECT DISTINCT BGD.[FEEEARN]
FROM [dbo].[BGDetail] BGD
WHERE BGD.[BGControlID] = 572
AND BGD.[Type] = 'F') UF
INNER JOIN [dbo].[HANDLERS] HAN
ON HAN.[CODE] = UF.[FEEEARN]
END
OPEN your_cursor;
FETCH NEXT FROM your_cursor INTO @column1, @column2, @column3
WHILE @@FETCH_STATUS = 0
BEGIN
SET @GroupType = @column1
SET @GroupHandler = NULL
SET @GroupOutlay = @column2
SET @GroupMatter = NULL
SET @GroupNarr = NULL
SET @NEWGroupNarr = 'Total ' + @column3
IF (@GroupType IS NOT NULL)
SET @GroupType = substring(@GroupType, 1, 1)
IF (@NEWGroupNarr IS NOT NULL)
Set @NEWGroupNarr = SUBSTRING(@NEWGroupNarr, 1, 255)
IF (@GroupNarr IS NOT NULL)
SET @GroupNarr = SUBSTRING(@GroupNarr, 1, 255)
IF (@GroupHandler IS NOT NULL)
Set @GroupHandler = SubString(@GroupHandler, 1, 5)
IF (@GroupOutlay IS NOT NULL)
Set @GroupOutlay = SUBSTRING(@GroupOutlay, 1, 10)
IF (@GroupMatter IS NOT NULL)
SET @GroupMatter = SUBSTRING(@GroupMatter, 1, 17)
EXEC [dbo].[ky_QuickGroupBG]
@ControlID,
@GroupType,
@GroupHandler,
@GroupOutlay,
@GroupMatter,
@GroupNarr,
@NEWGroupNarr
FETCH NEXT FROM your_cursor INTO @column1,@column2, @column3
END
CLOSE your_cursor;
DEALLOCATE your_cursor;
END
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamBillingGuideIDConfig'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamBillingGuideIDConfig]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamBillingGuideIDConfig]
(@DraftNo INT = 0,
@TimrefDate DATETIME = NULL,
@OutlayRefDate DATETIME = NULL,
@TimeAmt DECIMAL(19,2) = 0,
@OutlayAmt DECIMAL(19,2) = 0)
AS
/*******************************************************************************************************
* Billing Guide ID incremental Cofiguration *
* *
* Stored Procedure Name : [dbo].[KAAS_SamBillingGuideIDConfig] *
* *
* Modification History: *
* 2021-10-20 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
DECLARE @CONTROLID int
DECLARE @TIMEREFAMOUNT money
DECLARE @OUTLAYAMOUNT money
SET @TIMEREFAMOUNT = Convert(MONEY, @TimeAmt)
SET @OUTLAYAMOUNT = Convert(MONEY, @OutlayAmt)
EXEC [dbo].[ky_InitialiseBG] @DraftNo, NULL, @TimrefDate, @OutlayRefDate, @TIMEREFAMOUNT, @OUTLAYAMOUNT
SELECT @CONTROLID = [ID]
FROM [dbo].[BGControl]
WHERE [DRAFTNO] = @DraftNo
EXEC [dbo].[ky_UngroupBG] @CONTROLID, 0
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamBillingGuideList'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamBillingGuideList]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamBillingGuideList]
(@Id INT = 0,
@DraftNo INT = 0)
AS
/*******************************************************************************************************
* List for Billing Guide *
* *
* Stored Procedure Name : [dbo].[KAAS_SamBillingGuideList] *
* *
* Modification History: *
* 2021-10-20 Vinodhkumar M Created *
* 2021-10-27 Vinodhkumar M Modified- new parameter is added *
*******************************************************************************************************/
BEGIN
SELECT
[BGE].[IncludeInBill] AS IncludeInBill,
[BGE].[Type] AS Type,
[BGE].[MATTER] AS Matter,
[BGE].[FEEEARN] AS FE,
[BGE].[OUTLAYCODE] AS OutlayCode,
[BGE].[OUTLAYDESCRIPTION] AS OutlayDescription,
[BGE].[HANDLERNAME] AS HandlerName,
[BGE].[TEAMNAME] AS TeamName,
[BGE].[DATE] AS Date,
[BGE].[COMMENT] AS Comment,
[BGE].[InvoiceNo] AS InvoiceNo,
[BGE].[CHARGE] AS Charge,
[BGE].[ORIGINALCHARGE] AS OriginalCharge,
[BGE].[BilledAmount] AS BilledAmount,
[BGE].[LeftToBill] AS LeftToBill,
[BGE].[BillNow] AS BillNow,
[BGE].[GroupNumber] AS GroupNumber,
[BGE].[NumberOfDetailItems] AS NumberOfDetailItems,
[BGE].[Grouped] AS Grouped,
[BGE].[GroupID] AS GroupId
FROM
[ky_BGListGroupedEntries](@Id) [BGE]
ORDER BY
CASE WHEN [BGE].[Type] = 'F'
THEN 0
ELSE 1 END,
[BGE].[GroupNumber]
SELECT [TotalFees] AS TotalFees,
[TotalOutlay] AS TotalOutlay,
[GrandTotal] AS GrandTotal
FROM ky_BGListTotals(@Id)
SELECT [DraftNo] AS DraftNo,
[Matter] AS Matter,
[Total] AS Total,
[FEES] AS Fees,
[OUTLAY] AS Outlay
FROM [dbo].[BillHeader]
WHERE [DRAFTNO] = @DraftNo
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMBillingGuideProcess'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMBillingGuideProcess]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMBillingGuideProcess]
(
@BatchNo INT
)
AS
/*******************************************************************************************************
* Update Posting Logic *
* *
* Stored Procedure Name : [dbo].[KAAS_SAMBillingGuideProcess] *
* Copied From : [dbo].[ky_BGProcess] *
* *
* Modification History: *
* 2021-11-25 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
DECLARE @ControlID int
DECLARE @DefaultBilldate datetime
DECLARE @AdHocBillingGuide int
DECLARE @DraftNo int
UPDATE BGC
SET @ControlID = [ID],
@DraftNo = IsNull(BIH.[DRAFTNO], BGC.[DraftNo]),
BGC.[DraftNo] = IsNull(BIH.[DRAFTNO], BGC.[DraftNo]),
BGC.[BatchNo] = IsNull(BIH.[BATCHNO], BGC.[BatchNo])
FROM [dbo].[BillHeader] BIH
INNER JOIN [dbo].[BGControl] BGC
ON BGC.[DraftNo] = BIH.[DraftNo]
WHERE BIH.[BATCHNO] = @BatchNo
SET @AdHocBillingGuide = 0
IF (@ControlID is NULL)
BEGIN
-- Create an ungrouped Billing Guide for the writedown date, then process it as normal.
-- This Billing Guide will be flagged as "ad hoc", as it was not generated and configured
-- by the user. If the billing is subsequently reversed, this ad hoc billing guide will
-- be deleted. Billing Guides that were generated and configured by the user will not be
-- deleted when billing is reversed, and they can be used again.
SET @AdHocBillingGuide = 1
SELECT @DefaultBillDate = convert(datetime, [WRITEDOWN])
FROM [dbo].[BatchH]
WHERE [BATCHNO] = @BatchNo
EXEC ky_InitialiseBG @DraftNo, @BatchNo, @DefaultBillDate, @DefaultBillDate, NULL, NULL
UPDATE BGC
SET IsAdHoc = 1,
@ControlID = [ID]
FROM [dbo].[BGControl] BGC
WHERE [BATCHNO] = @BatchNo
END
UPDATE TEN
SET TEN.[InvoiceNo] = Case When isnumeric(IsNull(BAH.[REF], '')) <> 1
Then 0
When convert(char(10), convert(decimal(10,0), IsNull(BAH.[REF], ''))) <> IsNull(BAH.[REF], '')
Then 0
ELSE convert(int, convert(decimal(10,0), IsNull(BAH.[REF], ''))) END,
TEN.[BILLINGDATE] = BAH.[DATE],
TEN.[BILLINGYEAR] = BAH.[YEAR],
TEN.[BILLINGPERIOD] = BAH.[PERNO],
TEN.[IncludeInBill] = CASE WHEN IsNull(BGD.[IncludeInBill], 1) <> 2
THEN 1
ELSE 2 END,
TEN.[BilledAmount] = IsNull(TEN.[BilledAmount], 0)
+ IsNull(BGD.[BillNow], 0)
FROM [dbo].[BGControl] BGC
INNER JOIN [dbo].[BGGroups] BGG
INNER JOIN [dbo].[BGDetail] BGD
INNER JOIN [dbo].[TimeEntry] TEN
ON TEN.[RECORDID] = BGD.[OriginalID]
ON BGD.[BGGroupID] = BGG.[ID]
AND BGD.[Type] = 'F'
ON BGG.[BGControlID] = BGC.[ID]
INNER JOIN [dbo].[BATCHH] BAH
ON BAH.[BatchNo] = BGC.[BatchNo]
WHERE BGC.[BatchNO] = @BatchNo
--AND IsNull(TEN.[INVOICENO], 0) <> 0
AND BGD.[BillNow] <> 0
AND IsNull(BGD.[IncludeInBill], 1) <> 2
UPDATE TEN
SET TEN.[IncludeInBill] = 2
FROM [dbo].[BGControl] BGC
INNER JOIN [dbo].[BGGroups] BGG
INNER JOIN [dbo].[BGDetail] BGD
INNER JOIN [dbo].[TimeEntry] TEN
ON TEN.[RECORDID] = BGD.[OriginalID]
ON BGD.[BGGroupID] = BGG.[ID]
AND BGD.[Type] = 'F'
ON BGG.[BGControlID] = BGC.[ID]
INNER JOIN [dbo].[BATCHH] BAH
ON BAH.[BatchNo] = BGC.[BatchNo]
WHERE BGC.[BatchNO] = @BatchNo
AND IsNull(BGD.[IncludeInBill], 1) = 2
UPDATE MAL
SET MAL.[InvoiceNo] = Case When isnumeric(IsNull(BAH.[REF], '')) <> 1
Then 0
When convert(char(10), convert(decimal(10,0), IsNull(BAH.[REF], ''))) <> IsNull(BAH.[REF], '')
Then 0
ELSE convert(int, convert(decimal(10,0), IsNull(BAH.[REF], ''))) END,
MAL.[BILLINGDATE] = BAH.[DATE],
MAL.[BILLINGYEAR] = BAH.[YEAR],
MAL.[BILLINGPERIOD] = BAH.[PERNO],
MAL.[IncludeInBill] = CASE WHEN IsNull(BGD.[IncludeInBill], 1) <> 2
THEN 1
ELSE 2 END,
MAL.[BilledOutlayValue] = IsNull(MAL.[BilledOutlayValue], 0)
+ IsNull(BGD.[BillNow], 0)
FROM [dbo].[BGControl] BGC
INNER JOIN [dbo].[BGGroups] BGG
INNER JOIN [dbo].[BGDetail] BGD
INNER JOIN [dbo].[MatterLedger] MAL
ON MAL.[LREF] = BGD.[OriginalID]
ON BGD.[BGGroupID] = BGG.[ID]
AND BGD.[Type] = 'O'
ON BGG.[BGControlID] = BGC.[ID]
INNER JOIN [dbo].[BATCHH] BAH
ON BAH.[BatchNo] = BGC.[BatchNo]
WHERE BGC.[BATCHNO] = @BatchNo
--AND IsNull(MAL.[INVOICENO], 0) <> 0
AND BGD.[BillNow] <> 0
AND IsNull(BGD.[IncludeInBill], 1) <> 2
UPDATE MAL
SET MAL.[IncludeInBill] = 2
FROM [dbo].[BGControl] BGC
INNER JOIN [dbo].[BGGroups] BGG
INNER JOIN [dbo].[BGDetail] BGD
INNER JOIN [dbo].[MatterLedger] MAL
ON MAL.[LREF] = BGD.[OriginalID]
ON BGD.[BGGroupID] = BGG.[ID]
AND BGD.[Type] = 'O'
ON BGG.[BGControlID] = BGC.[ID]
INNER JOIN [dbo].[BATCHH] BAH
ON BAH.[BatchNo] = BGC.[BatchNo]
WHERE BGC.[BATCHNO] = @BatchNo
AND IsNull(BGD.[IncludeInBill], 1) = 2
UPDATE MAT
SET MAT.[CHARGEBAL] = GTOT.[BALAMOUNT],
MAT.[TimeBal] = GTOT.[BALTIME]
FROM ( SELECT GMAT.[code],
IsNull(SUM( IsNull(TIE.[CHARGE], 0)
- IsNull(TIE.[BILLEDAMOUNT],
0)), 0) AS [BALAMOUNT],
IsNull(SUM(CASE WHEN IsNull(TIE.[CHARGE], 0) <> IsNull(TIE.[BILLEDAMOUNT], 0)
THEN IsNull(TIE.[Time], 0)
ELSE 0 END),
0) AS [BALTIME]
FROM [dbo].[BatchH] BAH
INNER JOIN [dbo].[Matters] GMAT
LEFT OUTER JOIN [dbo].[TimeEntry] TIE
ON TIE.[Matter] = GMAT.[code]
AND TIE.[Charge] <> TIE.[BilledAmount]
AND TIE.[Timeorcharge] IN ('T', 'C')
AND TIE.[REC_IRR] <> 'N'
AND IsNull(TIE.[IncludeInBill], 1) <> 2
ON GMAT.[code] = BAH.[MATTER]
OR GMAT.[CompBillingMatter] = BAH.[MATTER]
WHERE BAH.[BATCHNO] = @BatchNo
GROUP BY GMAT.[code]) GTOT
INNER JOIN [dbo].[Matters] MAT
ON MAT.[code] = GTOT.[code]
INSERT
INTO [dbo].[MatterLedger]
([MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill])
SELECT MLTOT.[MATTER],
0 AS BATCHNO,
0 AS PREF,
convert(datetime, convert(varchar, getDate(), 106)) AS [DATE],
LTrim(RTrim(IsNull(BAH.[REF], ''))),
Substring( 'Invoice No: '
+ LTrim(RTrim(IsNull(BAH.[REF], '')))
+ ' Fee: '
+ convert(varchar(20), MLTOT.[TOTALFEES])
+ ' Outlay: '
+ convert(varchar(20), MLTOT.[TOTALOUTLAY])
+ ' See Matter: '
+ LTrim(RTrim(MLTOT.[CompBillingMatter])),
1,
80) As [NARR],
0 As [VALUED],
0 As [VALUEO],
0 As [VALUEC],
'' AS [FEE],
0 As [PER],
0 As [YEAR],
convert(datetime, NULL) AS [ENTRYDATE],
MLTOT.[CLIENTCODE] AS [CLIENT],
0 As [VALUECC],
0 As [VALUECD],
'' AS [DEPOSITTYPE],
0 As [CURVALUED],
0 As [CURVALUEO],
0 As [CURVALUEC],
0 As [CURVALUECC],
0 As [CURVALUECD],
'' AS [BILLED],
NULL AS [BILLINGYEAR],
NULL AS [BILLINGPERIOD],
convert(datetime, NULL) AS [BILLINGDATE],
0 AS [BilledOutlayValue],
NULL AS [InvoiceNo],
2 AS [IncludeInBill]
FROM ( SELECT ML.[MATTER],
MAT.[ClientCode],
MAT.[CompBillingMatter],
IsNull(SUM(CASE WHEN BGD.[Type] = 'F'
THEN IsNull(BGD.[BillNow], 0)
ELSE 0 END), 0) As TOTALFEES,
IsNull(SUM(CASE WHEN BGD.[Type] = 'O'
THEN IsNull(BGD.[BillNow], 0)
ELSE 0 END), 0) As TOTALOutlay
FROM ( SELECT DISTINCT
BGDML.[MATTER],
BGCML.[ID]
FROM [dbo].[BGControl] BGCML
INNER JOIN [dbo].[BGGroups] BGGML
INNER JOIN [dbo].[BGDetail] BGDML
ON BGDML.[BGGroupID] = BGGML.[ID]
ON BGGML.[BGControlID] = BGCML.[ID]
WHERE BGCML.[BatchNO] = @BatchNo
AND BGDML.[BillNow] <> 0
AND IsNull(BGDML.[IncludeInBill], 1) <> 2
AND BGDML.[MATTER] <> BGCML.[MATTER]) ML
INNER JOIN [dbo].[BGGroups] BGG
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGG.[ID]
AND BGD.[BillNow] <> 0
AND IsNull(BGD.[IncludeInBill], 1) <> 2
ON BGG.[BGControlID] = ML.[ID]
AND BGD.[matter] = ML.[MATTER]
INNER JOIN [dbo].[MATTERS] MAT
ON MAT.[Code] = ML.[MATTER]
GROUP BY ML.[Matter],
MAT.[ClientCode],
MAT.[CompBillingMatter]) MLTOT
INNER JOIN [dbo].[BATCHH] BAH
ON BAH.[BATCHNO] = @BatchNo
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMBillingGuideReset'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMBillingGuideReset]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMBillingGuideReset]
(
@BatchNo INT
)
AS
/*******************************************************************************************************
* Reset Billing Guide *
* *
* Stored Procedure Name : [dbo].[KAAS_SAMBillingGuideReset] *
* Copied From : [dbo].[ky_BGReset] *
* *
* Modification History: *
* 2021-11-25 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
DECLARE @NCOMMAND NVARCHAR(MAX)
IF [dbo].[ISSAM4]() = 0
BEGIN
SET @NCOMMAND = N'
IF IsNull(@BatchNo, 0) <> 0
BEGIN
UPDATE TEN
SET TEN.[InvoiceNo] = ISNULL(BGD.[ORGInvoiceNo], 0),
TEN.[BILLINGDATE] = BGD.[ORGBILLINGDATE],
TEN.[BILLINGYEAR] = BGD.[ORGBILLINGYEAR],
TEN.[BILLINGPERIOD] = BGD.[ORGBILLINGPERIOD],
TEN.[IncludeInBill] = BGD.[ORGIncludeInBill],
TEN.[BilledAmount] = TEN.[BilledAmount] - BGD.[BillNow]
FROM [dbo].[BGControl] BGC
INNER JOIN [dbo].[BGGroups] BGG
INNER JOIN [dbo].[BGDetail] BGD
INNER JOIN [dbo].[TimeEntry] TEN
ON TEN.[RECORDID] = BGD.[OriginalID]
ON BGD.[BGGroupID] = BGG.[ID]
AND BGD.[Type] = ''F''
ON BGG.[BGControlID] = BGC.[ID]
WHERE BGC.[BatchNO] = @BatchNo
UPDATE MAL
SET MAL.[InvoiceNo] = ISNULL(BGD.[ORGInvoiceNo], 0),
MAL.[BILLINGDATE] = BGD.[ORGBILLINGDATE],
MAL.[BILLINGYEAR] = BGD.[ORGBILLINGYEAR],
MAL.[BILLINGPERIOD] = BGD.[ORGBILLINGPERIOD],
MAL.[IncludeInBill] = BGD.[ORGIncludeInBill],
MAL.[BilledOutlayValue] = MAL.[BilledOutlayValue] - BGD.[BillNow]
FROM [dbo].[BGControl] BGC
INNER JOIN [dbo].[BGGroups] BGG
INNER JOIN [dbo].[BGDetail] BGD
INNER JOIN [dbo].[MatterLedger] MAL
ON MAL.[LREF] = BGD.[OriginalID]
ON BGD.[BGGroupID] = BGG.[ID]
AND BGD.[Type] = ''O''
ON BGG.[BGControlID] = BGC.[ID]
WHERE BGC.[BATCHNO] = @BatchNo
-- If these items were billed without a billing guide, the Billing Guide that was
-- generated was an Ad Hoc billing guide that wasn''t configured by the user. In that
-- case, delete it now.
DELETE BGD
from [dbo].[BGControl] BGC
INNER JOIN [dbo].[BGGroups] BGG
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGG.[ID]
ON BGG.[BGControlID] = BGC.[Id]
WHERE BGC.[BatchNo] = @BatchNo
AND BGC.[IsAdhoc] = 1
DELETE BGG
from [dbo].[BGControl] BGC
INNER JOIN [dbo].[BGGroups] BGG
ON BGG.[BGControlID] = BGC.[Id]
WHERE BGC.[BatchNo] = @BatchNo
AND BGC.[IsAdhoc] = 1
DELETE BGC
from [dbo].[BGControl] BGC
WHERE BGC.[BatchNo] = @BatchNo
AND BGC.[IsAdhoc] = 1
UPDATE MAT
SET MAT.[CHARGEBAL] = GTOT.[BALAMOUNT],
MAT.[TimeBal] = GTOT.[BALTIME]
FROM ( SELECT GMAT.[code],
IsNull(SUM( IsNull(TIE.[CHARGE], 0)
- IsNull(TIE.[BILLEDAMOUNT],
0)), 0) AS [BALAMOUNT],
IsNull(SUM(CASE WHEN IsNull(TIE.[CHARGE], 0) <> IsNull(TIE.[BILLEDAMOUNT], 0)
THEN IsNull(TIE.[Time], 0)
ELSE 0 END),
0) AS [BALTIME]
FROM [dbo].[BatchH] BAH
INNER JOIN [dbo].[Matters] GMAT
LEFT OUTER JOIN [dbo].[TimeEntry] TIE
ON TIE.[Matter] = GMAT.[code]
AND TIE.[Charge] <> TIE.[BilledAmount]
AND TIE.[Timeorcharge] IN (''T'', ''C'')
AND TIE.[REC_IRR] <> ''N''
AND IsNull(TIE.[IncludeInBill], 1) <> 2
ON GMAT.[code] = BAH.[MATTER]
OR GMAT.[CompBillingMatter] = BAH.[MATTER]
WHERE BAH.[BATCHNO] = @BatchNo
GROUP BY GMAT.[code]) GTOT
INNER JOIN [dbo].[Matters] MAT
ON MAT.[code] = GTOT.[code]
EXEC [dbo].[ky_BGPaid] NULL, @BatchNo, 0, 0, 0
END'
EXECUTE sp_executesql @NCOMMAND, N'@BatchNo INT', @BatchNo
END
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMBillingGuideReverseTransfer'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMBillingGuideReverseTransfer]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMBillingGuideReverseTransfer]
(
@BatchNo INT
)
AS
/*******************************************************************************************************
* Billing Guide Reverse Transfer *
* *
* Stored Procedure Name : [dbo].[KAAS_SAMBillingGuideReverseTransfer] *
* Copied From : [dbo].[ky_BGReverseTransfer] *
* *
* Modification History: *
* 2021-11-25 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
DECLARE @CRBatchNo int
DECLARE @NewBatchNo int
DECLARE @LastBatchHPREF int
DECLARE @LastBatchDPREF int
DECLARE @OUTLAY char(10)
DECLARE @OVAT char(1)
DECLARE @BASECUR char(1)
DECLARE @IECONVERT decimal(9, 6)
DECLARE @DETVALUE decimal(17, 2)
DECLARE @DETMATTER char(11)
DECLARE @DETNo int
DECLARE @DETTotal int
DECLARE @INVOICENO int
DECLARE @DETs TABLE
([seqno] int identity(1, 1),
[DETVALUE] decimal(17, 2),
[DETMATTER] VARCHAR(20))
SELECT @CRBatchNo = BHC.[CreditInvoiceNo]
FROM [dbo].[BATCHH] BHC
WHERE BHC.[BATCHNO] = @BatchNo
SELECT @INVOICENO = CASE WHEN IsNumeric(BAH.[REF]) = 1
THEN convert(int, BAH.[REF])
ELSE 0 END
FROM [dbo].[BATCHH] BAH
WHERE BAH.[BATCHNO] = @BATCHNO
UPDATE CON
SET @NewBatchNo = IsNull(CON.[LASTBATCH], 0) + 1,
CON.[LASTBATCH] = IsNull(CON.[LASTBATCH], 0) + 1,
@LastBatchHPREF = IsNull(CON.[LASTPREF], 0) + 1,
CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1
FROM [dbo].[control] CON
INSERT
INTO [dbo].[BATCHH]
([BATCHNO],
[POSTFWD],
[TYPE],
[CODE],
[BRANCH],
[PREF],
[REF],
[DATE],
[FEE],
[MATTER],
[SUPP],
[NARR],
[VALUE],
[SUBTOT],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[OUTLAYTOT],
[VATTOT],
[FEETOT],
[INVCR],
[THIRDPARTY],
[USERCODE],
[HandlerCode],
[ENTRYDATE],
[CURRENCY],
[CURRENCYVALUE],
[CUROUTLAYTOT],
[CURVATTOT],
[CURFEETOT],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[WRITEDOWN],
[WRITEBACKHOURS],
[WRITEBACKVALUE],
[CORRECTCOPY])
select @NewBatchNo As [BATCHNO],
BAH.[POSTFWD] AS [POSTFWD],
convert(char(1), 'J') AS [TYPE],
convert(char(10), '') AS [CODE],
convert(varchar(3), '') AS [BRANCH],
@LastBatchHPREF AS [PREF],
convert(char(10), 'xCompBill') AS [REF],
BCN.[DATE] AS [DATE],
BAH.[FEE] AS [FEE],
BAH.[MATTER] AS [MATTER],
convert(char(10), '') AS [SUPP],
convert(char(150), 'Composite Bill Outlay Transfer') AS [NARR],
convert(decimal(17,2), 0) As [VALUE],
convert(decimal(17,2), 0) As [SUBTOT],
convert(char(1), 'Y') AS [POSTED],
convert(char(1), 'N') AS [CLIENTAC],
BAH.[PERNO] AS [PERNO],
BAH.[YEAR] AS [YEAR],
convert(char(60), '') AS [PAYEE],
convert(decimal(17,2), 0) AS [OUTLAYTOT],
convert(decimal(17,2), 0) AS [VATTOT],
convert(decimal(17,2), 0) AS [FEETOT],
convert(char(1), 'I') AS [INVCR],
convert(char(1), 'N') AS [THIRDPARTY],
BAH.[USERCODE] AS [USERCODE],
BAH.[HandlerCode] AS [HandlerCode],
convert(datetime, convert(varchar, getDate(), 106)) AS [ENTRYDATE],
BAH.[CURRENCY] AS [CURRENCY],
convert(decimal(17,2), 0) AS [CURRENCYVALUE],
convert(decimal(17,2), 0) AS [CUROUTLAYTOT],
convert(decimal(17,2), 0) AS [CURVATTOT],
convert(decimal(17,2), 0) AS [CURFEETOT],
convert(int, 0) AS [RECNO],
convert(char(1), '') AS [SINGLELINE],
convert(char(10), '') AS [TEMPLATE],
convert(int, 0) AS [CHEQUEREQNO],
convert(datetime, NULL) AS [WRITEDOWN],
convert(decimal(7,2), 0) AS [WRITEBACKHOURS],
convert(decimal(13,2), 0) AS [WRITEBACKVALUE],
convert(char(1), 0) AS [CORRECTCOPY]
FROM [dbo].[BatchH] BAH
INNER JOIN [dbo].[BatchH] BCN
ON BCN.[BATCHNO] = @CRBatchNo
WHERE BAH.[BATCHNO] = @BatchNo
INSERT
INTO @DETs
([DETMATTER],
[DETVALUE])
SELECT BGM.[MATTER],
-ISNULL(SUM(ISNULL(BGD.[BillNow], 0)), 0) AS [BILLNOW]
FROM [dbo].[ky_CompBillMatterByBatch](@CRBatchNo) BGM
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGM.[ID]
AND BGD.[Matter] = BGM.[Matter]
GROUP BY BGM.[Matter]
SELECT @DETTotal = COUNT(1) FROM @DETs
SET @DETNo = 1
WHILE @DETNo <= @DETTotal
BEGIN
SET @DETMATTER = ''
SET @DETVALUE = 0
SELECT @DETMATTER = DET.[DETMATTER],
@DETVALUE = DET.[DETVALUE]
FROM @DETs DET
WHERE DET.[seqno] = @DETNo
SET @DETVALUE = ISNULL(@DETVALUE, 0)
UPDATE CON
SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1,
@OUTLAY = CON.[OUTLAY],
@OVAT = CON.[VATEXCLUDE],
@BASECUR = CON.[BASECURRENCY],
@IECONVERT = CON.[IECONVERT]
FROM [dbo].[control] CON
INSERT
INTO [dbo].[BatchDetails]
([BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[SUPP],
[NARR],
[MATTER],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING])
SELECT @NewBatchNo As [BATCHNO],
convert(char(1), 'J') AS [TYPE],
@OUTLAY AS [CODE],
@LastBatchDPREF AS [PREF],
convert(char(10), 'xCompTFer') AS [REF],
BAH.[DATE] AS [DATE],
convert(char(3), '') AS FEE,
convert(varchar(3), '') AS BRANCH,
convert(char(10), '') AS [SUPP],
convert(char(150), 'COMP: CREDIT Outlay Transfer from ' + BAH.[MATTER]) AS [NARR],
convert(char(11), @DETMATTER) AS [MATTER],
-@DETVALUE As [VALUE],
@OVAT AS [VATCODE],
convert(decimal(17,2), 0) As [VATVAL],
convert(char(1), 'N') AS [CLIENTYN],
convert(char(1), 'O') AS [OUTLAY],
convert(char(1), '') AS [PENDING],
BAH.[YEAR] AS [YEAR],
BAH.[PERNO] AS [PERNO],
@BASECUR AS [ENTRYCURRENCY],
convert(decimal(17, 2), round((-@DETVALUE) * @IECONVERT, 2)) AS [CURRENCYVALUE],
convert(decimal(17,2), 0) As [CURRENCYVAT],
convert(char(4), '') AS [OUTLAYCODE],
convert(char(1), '') AS [THIRDPARTY],
convert(char(60), '') AS [PAYEE],
convert(int, 0) AS [HEADPREF],
convert(int, 0) AS [HEADBATCH],
convert(int, 0) AS [ALLOCBATCH],
convert(int, 0) AS [ALLOCPREF],
convert(char(10), '') AS [ALLOCREF],
convert(decimal(17, 2), 0) AS [ALLOCVALUE],
convert(char(1), '') AS [ALLOCWRITEOFF],
convert(char(10), '') AS [PSUPP],
convert(smallint, 0) AS [UNDETAKING]
FROM [dbo].[BATCHH] BAH
WHERE BAH.[PREF] = @LastBatchHPRef
--UPDATE CON
-- SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
-- CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1
-- FROM [dbo].[control] CON
INSERT
INTO [dbo].[MatterLedger]
([MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BILLEDOUTLAYVALUE],
[InvoiceNo],
[IncludeInBill])
SELECT convert(char(11), @DETMATTER) AS [MATTER],
@NewBatchNo As [BATCHNO],
@LastBatchDPREF AS [PREF],
BAH.[DATE] AS [DATE],
convert(char(10), 'xCompTFer') AS [REF],
convert(char(80), 'COMP: CREDIT Outlay Transfer from ' + BAH.[MATTER]) AS [NARR],
convert(decimal(17, 2), 0) AS [VALUED],
convert(decimal(17, 2), -@DETVALUE) AS [VALUEO],
convert(decimal(17, 2), 0) AS [VALUEC],
convert(char(3), '') AS FEE,
BAH.[PERNO] AS [PER],
BAH.[YEAR] AS [YEAR],
BAH.[DATE] AS [ENTRYDATE],
MAT.[CLIENTCODE] AS [CLIENT],
convert(decimal(17, 2), 0) AS [VALUECC],
convert(decimal(17, 2), 0) AS [VALUECD],
convert(char(4), '') AS [DEPOSITTYPE],
convert(decimal(17, 2), 0) AS [CURVALUED],
convert(decimal(17, 2), round((-@DETVALUE) * @IECONVERT, 2)) AS [CURVALUEO],
convert(decimal(17, 2), 0) AS [CURVALUED],
convert(decimal(17, 2), 0) AS [CURVALUECC],
convert(decimal(17, 2), 0) AS [CURVALUECD],
convert(char(1), '') AS [BILLED],
BAH.[YEAR] AS [BILLINGYEAR],
BAH.[PERNO] AS [BILLINGPERIOD],
BAH.[DATE] AS [BILLINGDATE],
convert(decimal(17, 2), -@DETVALUE) AS [BILLEDOUTLAYVALUE],
@INVOICENO AS [Invoiceno],
convert(int, 2) AS [IncludeInBill]
FROM [dbo].[BATCHH] BAH
INNER JOIN [dbo].[MATTERS] MAT
ON MAT.[CODE] = @DETMATTER
WHERE BAH.[PREF] = @LastBatchHPRef
--UPDATE CON
-- SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
-- CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1
-- FROM [dbo].[control] CON
INSERT
INTO [dbo].[NominalLedger]
([CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO])
SELECT @OUTLAY AS [CODE],
convert(varchar(3), '') AS [BRANCH],
@NewBatchNo As [BATCHNO],
@LastBatchDPREF AS [PREF],
BAH.[DATE] AS [DATE],
convert(char(10), 'xCompTFer') AS [REF],
convert(char(100), 'COMP: CREDIT Outlay Transfer from ' + BAH.[MATTER]) AS [NARR],
convert(char(11), @DETMATTER) AS [MATTER],
convert(char(10), '') AS [SUPP],
convert(char(3), '') AS FEE,
convert(decimal(17, 2), -@DETVALUE) AS [VALUE],
convert(decimal(17, 2), round((-@DETVALUE) * @IECONVERT, 2)) AS [CURRENCYVALUE],
BAH.[PERNO] AS [PER],
BAH.[YEAR] AS [YEAR],
BAH.[DATE] AS [ENTRYDATE],
convert(int, 0) AS [RECNO]
FROM [dbo].[BATCHH] BAH
INNER JOIN [dbo].[MATTERS] MAT
ON MAT.[CODE] = @DETMATTER
WHERE BAH.[PREF] = @LastBatchHPRef
UPDATE MAT
SET MAT.[OutlayBal] = MAT.[OutlayBal] - @DETVALUE,
MAT.[CurOutlayBal] = round((MAT.[OutlayBal] - @DETVALUE) * @IECONVERT, 2),
MAT.[OutlayBalFwd] = MAT.[OutlayBalFwd] - @DETVALUE,
MAT.[CurOutlayBalFwd] = round((MAT.[OutlayBalFwd] - @DETVALUE) * @IECONVERT, 2)
FROM [dbo].[matters] MAT
WHERE MAT.[CODE] = @DETMATTER
SET @DETNo = @DETNo + 1
END
UPDATE CON
SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1,
@OUTLAY = CON.[OUTLAY],
@OVAT = CON.[VATEXCLUDE],
@BASECUR = CON.[BASECURRENCY],
@IECONVERT = CON.[IECONVERT]
FROM [dbo].[control] CON
INSERT
INTO [dbo].[BatchDetails]
([BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[SUPP],
[NARR],
[MATTER],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING])
SELECT @NewBatchNo As [BATCHNO],
convert(char(1), 'J') AS [TYPE],
@OUTLAY AS [CODE],
@LastBatchDPREF AS [PREF],
convert(char(10), 'xCompTFer') AS [REF],
BAH.[DATE] AS [DATE],
convert(char(3), '') AS FEE,
convert(varchar(3), '') AS BRANCH,
convert(char(10), '') AS [SUPP],
convert(char(150), 'Composite Billing') AS [NARR],
BAH.[MATTER] AS [MATTER],
TOT.[BILLNOW] As [VALUE],
@OVAT AS [VATCODE],
convert(decimal(17,2), 0) As [VATVAL],
convert(char(1), 'N') AS [CLIENTYN],
convert(char(1), 'O') AS [OUTLAY],
convert(char(1), '') AS [PENDING],
BAH.[YEAR] AS [YEAR],
BAH.[PERNO] AS [PERNO],
@BASECUR AS [ENTRYCURRENCY],
convert(decimal(17, 2), round((TOT.[BILLNOW]) * @IECONVERT, 2)) AS [CURRENCYVALUE],
convert(decimal(17,2), 0) As [CURRENCYVAT],
convert(char(4), '') AS [OUTLAYCODE],
convert(char(1), '') AS [THIRDPARTY],
convert(char(60), '') AS [PAYEE],
convert(int, 0) AS [HEADPREF],
convert(int, 0) AS [HEADBATCH],
convert(int, 0) AS [ALLOCBATCH],
convert(int, 0) AS [ALLOCPREF],
convert(char(10), '') AS [ALLOCREF],
convert(decimal(17, 2), 0) AS [ALLOCVALUE],
convert(char(1), '') AS [ALLOCWRITEOFF],
convert(char(10), '') AS [PSUPP],
convert(smallint, 0) AS [UNDETAKING]
FROM [dbo].[BATCHH] BAH
CROSS JOIN( SELECT -ISNULL(SUM(ISNULL(BGD.[BillNow], 0)), 0) AS [BILLNOW]
FROM [dbo].[ky_CompBillMatterByBatch](@CRBatchNo) BGM
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGM.[ID]
AND BGD.[Matter] = BGM.[Matter]) TOT
WHERE BAH.[PREF] = @LastBatchHPRef
--UPDATE CON
-- SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
-- CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1
-- FROM [dbo].[control] CON
INSERT
INTO [dbo].[MatterLedger]
([MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BILLEDOUTLAYVALUE],
[InvoiceNo],
[IncludeInBill])
SELECT convert(char(11), BAH.[MATTER]) AS [MATTER],
@NewBatchNo As [BATCHNO],
@LastBatchDPREF AS [PREF],
BAH.[DATE] AS [DATE],
convert(char(10), 'xCompTFer') AS [REF],
convert(char(80), 'Composite Billing') AS [NARR],
convert(decimal(17, 2), 0) AS [VALUED],
convert(decimal(17, 2), ISNULL(TOT.[BILLNOW], 0)) AS [VALUEO],
convert(decimal(17, 2), 0) AS [VALUEC],
convert(char(3), '') AS FEE,
BAH.[PERNO] AS [PER],
BAH.[YEAR] AS [YEAR],
BAH.[DATE] AS [ENTRYDATE],
MAT.[CLIENTCODE] AS [CLIENT],
convert(decimal(17, 2), 0) AS [VALUECC],
convert(decimal(17, 2), 0) AS [VALUECD],
convert(char(4), '') AS [DEPOSITTYPE],
convert(decimal(17, 2), 0) AS [CURVALUED],
convert(decimal(17, 2), round((TOT.[BILLNOW]) * @IECONVERT, 2)) AS [CURVALUEO],
convert(decimal(17, 2), 0) AS [CURVALUED],
convert(decimal(17, 2), 0) AS [CURVALUECC],
convert(decimal(17, 2), 0) AS [CURVALUECD],
convert(char(1), '') AS [BILLED],
BAH.[YEAR] AS [BILLINGYEAR],
BAH.[PERNO] AS [BILLINGPERIOD],
BAH.[DATE] AS [BILLINGDATE],
convert(decimal(17, 2), TOT.[BILLNOW]) AS [BILLEDOUTLAYVALUE],
@INVOICENO AS [Invoiceno],
convert(int, 2) AS [IncludeInBill]
FROM [dbo].[BATCHH] BAH
INNER JOIN [dbo].[MATTERS] MAT
ON MAT.[CODE] = BAH.[MATTER]
CROSS JOIN( SELECT -ISNULL(SUM(ISNULL(BGD.[BillNow], 0)), 0) AS [BILLNOW]
FROM [dbo].[ky_CompBillMatterByBatch](@CRBatchNo) BGM
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGM.[ID]
AND BGD.[Matter] = BGM.[Matter]) TOT
WHERE BAH.[PREF] = @LastBatchHPRef
-- UPDATE CON
-- SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
-- CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1
-- FROM [dbo].[control] CON
INSERT
INTO [dbo].[NominalLedger]
([CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO])
SELECT @OUTLAY AS [CODE],
convert(varchar(3), '') AS [BRANCH],
@NewBatchNo As [BATCHNO],
@LastBatchDPREF AS [PREF],
BAH.[DATE] AS [DATE],
convert(char(10), 'xCompTFer') AS [REF],
convert(char(100), 'Composite Billing') AS [NARR],
convert(char(11), BAH.[MATTER]) AS [MATTER],
convert(char(10), '') AS [SUPP],
convert(char(3), '') AS FEE,
convert(decimal(17, 2), TOT.[BILLNOW]) AS [VALUE],
convert(decimal(17, 2), round((TOT.[BILLNOW]) * @IECONVERT, 2)) AS [CURRENCYVALUE],
BAH.[PERNO] AS [PER],
BAH.[YEAR] AS [YEAR],
BAH.[DATE] AS [ENTRYDATE],
convert(int, 0) AS [RECNO]
FROM [dbo].[BATCHH] BAH
INNER JOIN [dbo].[MATTERS] MAT
ON MAT.[CODE] = BAH.MATTER
CROSS JOIN( SELECT -ISNULL(SUM(ISNULL(BGD.[BillNow], 0)), 0) AS [BILLNOW]
FROM [dbo].[ky_CompBillMatterByBatch](@CRBatchNo) BGM
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGM.[ID]
AND BGD.[Matter] = BGM.[Matter]) TOT
WHERE BAH.[PREF] = @LastBatchHPRef
UPDATE MAT
SET MAT.[OutlayBal] = MAT.[OutlayBal] + ISNULL(TOT.[BILLNOW], 0),
MAT.[CurOutlayBal] = round((MAT.[OutlayBal] + TOT.[BILLNOW]) * @IECONVERT, 2),
MAT.[OutlayBalFwd] = MAT.[OutlayBalFwd] + TOT.[BILLNOW],
MAT.[CurOutlayBalFwd] = round((MAT.[OutlayBalFwd] + TOT.[BILLNOW]) * @IECONVERT, 2)
FROM [dbo].[BATCHH] BAH
INNER JOIN [dbo].[matters] MAT
ON MAT.[Code] = BAH.[MATTER]
CROSS JOIN( SELECT -ISNULL(SUM(ISNULL(BGD.[BillNow], 0)), 0) AS [BILLNOW]
FROM [dbo].[ky_CompBillMatterByBatch](@CRBatchNo) BGM
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGM.[ID]
AND BGD.[Matter] = BGM.[Matter]) TOT
WHERE BAH.[PREF] = @LastBatchHPRef
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMBillingGuideTransfer'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMBillingGuideTransfer]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMBillingGuideTransfer]
(
@BatchNo INT
)
AS
/*******************************************************************************************************
* Transfer Billing Guide *
* *
* Stored Procedure Name : [dbo].[KAAS_SAMBillingGuideTransfer] *
* Copied From : [dbo].[ky_BGTransfer] *
* *
* Modification History: *
* 2021-11-25 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
DECLARE @NewBatchNo int
DECLARE @LastBatchHPREF int
DECLARE @LastBatchDPREF int
DECLARE @OUTLAY char(10)
DECLARE @OVAT char(1)
DECLARE @BASECUR char(1)
DECLARE @IECONVERT decimal(9, 6)
DECLARE @DETVALUE decimal(17, 2)
DECLARE @DETMATTER VARCHAR(20)
DECLARE @DETNo int
DECLARE @DETTotal int
DECLARE @INVOICENO int
DECLARE @DETs TABLE
([seqno] int identity(1, 1),
[DETVALUE] decimal(17, 2),
[DETMATTER] VARCHAR(20))
SELECT @INVOICENO = CASE WHEN IsNumeric(BAH.[REF]) = 1
THEN convert(int, BAH.[REF])
ELSE 0 END
FROM [dbo].[BATCHH] BAH
WHERE BAH.[BATCHNO] = @BATCHNO
UPDATE CON
SET @NewBatchNo = IsNull(CON.[LASTBATCH], 0) + 1,
CON.[LASTBATCH] = IsNull(CON.[LASTBATCH], 0) + 1,
@LastBatchHPREF = IsNull(CON.[LASTPREF], 0) + 1,
CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1
FROM [dbo].[control] CON
INSERT
INTO [dbo].[BATCHH]
([BATCHNO],
[POSTFWD],
[TYPE],
[CODE],
[BRANCH],
[PREF],
[REF],
[DATE],
[FEE],
[MATTER],
[SUPP],
[NARR],
[VALUE],
[SUBTOT],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[OUTLAYTOT],
[VATTOT],
[FEETOT],
[INVCR],
[THIRDPARTY],
[USERCODE],
[HandlerCode],
[ENTRYDATE],
[CURRENCY],
[CURRENCYVALUE],
[CUROUTLAYTOT],
[CURVATTOT],
[CURFEETOT],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[WRITEDOWN],
[WRITEBACKHOURS],
[WRITEBACKVALUE],
[CORRECTCOPY])
select @NewBatchNo As [BATCHNO],
BAH.[POSTFWD] AS [POSTFWD],
convert(char(1), 'J') AS [TYPE],
convert(char(10), '') AS [CODE],
convert(varchar(3), '') AS [BRANCH],
@LastBatchHPREF AS [PREF],
convert(char(10), 'xCompBill') AS [REF],
BAH.[DATE] AS [DATE],
BAH.[FEE] AS [FEE],
BAH.[MATTER] AS [MATTER],
convert(char(10), '') AS [SUPP],
convert(char(150), 'Composite Bill Outlay Transfer') AS [NARR],
convert(decimal(17,2), 0) As [VALUE],
convert(decimal(17,2), 0) As [SUBTOT],
convert(char(1), 'Y') AS [POSTED],
convert(char(1), 'N') AS [CLIENTAC],
BAH.[PERNO] AS [PERNO],
BAH.[YEAR] AS [YEAR],
convert(char(60), '') AS [PAYEE],
convert(decimal(17,2), 0) AS [OUTLAYTOT],
convert(decimal(17,2), 0) AS [VATTOT],
convert(decimal(17,2), 0) AS [FEETOT],
convert(char(1), 'I') AS [INVCR],
convert(char(1), 'N') AS [THIRDPARTY],
BAH.[USERCODE] AS [USERCODE],
BAH.[HandlerCode] AS [HandlerCode],
convert(datetime, convert(varchar, getDate(), 106)) AS [ENTRYDATE],
BAH.[CURRENCY] AS [CURRENCY],
convert(decimal(17,2), 0) AS [CURRENCYVALUE],
convert(decimal(17,2), 0) AS [CUROUTLAYTOT],
convert(decimal(17,2), 0) AS [CURVATTOT],
convert(decimal(17,2), 0) AS [CURFEETOT],
convert(int, 0) AS [RECNO],
convert(char(1), '') AS [SINGLELINE],
convert(char(10), '') AS [TEMPLATE],
convert(int, 0) AS [CHEQUEREQNO],
convert(datetime, NULL) AS [WRITEDOWN],
convert(decimal(7,2), 0) AS [WRITEBACKHOURS],
convert(decimal(13,2), 0) AS [WRITEBACKVALUE],
convert(char(1), 0) AS [CORRECTCOPY]
FROM [dbo].[BatchH] BAH
WHERE [BATCHNO] = @BatchNo
INSERT
INTO @DETs
([DETMATTER],
[DETVALUE])
SELECT BGM.[MATTER],
ISNULL(SUM(ISNULL(BGD.[BillNow], 0)), 0) AS [BILLNOW]
FROM [dbo].[ky_CompBillMatterByBatch](@BatchNo) BGM
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGM.[ID]
AND BGD.[Matter] = BGM.[Matter]
GROUP BY BGM.[Matter]
SELECT @DETTotal = COUNT(1) FROM @DETs
SET @DETNo = 1
WHILE @DETNo <= @DETTotal
BEGIN
SET @DETMATTER = ''
SET @DETVALUE = 0
SELECT @DETMATTER = DET.[DETMATTER],
@DETVALUE = ISNULL(DET.[DETVALUE], 0)
FROM @DETs DET
WHERE DET.[seqno] = @DETNo
SET @DETVALUE = ISNULL(@DETVALUE, 0)
UPDATE CON
SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1,
@OUTLAY = CON.[OUTLAY],
@OVAT = CON.[VATEXCLUDE],
@BASECUR = CON.[BASECURRENCY],
@IECONVERT = CON.[IECONVERT]
FROM [dbo].[control] CON
INSERT
INTO [dbo].[BatchDetails]
([BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[SUPP],
[NARR],
[MATTER],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING])
SELECT @NewBatchNo As [BATCHNO],
convert(char(1), 'J') AS [TYPE],
@OUTLAY AS [CODE],
@LastBatchDPREF AS [PREF],
convert(char(10), 'xCompTFer') AS [REF],
BAH.[DATE] AS [DATE],
convert(char(3), '') AS FEE,
convert(varchar(3), '') AS BRANCH,
convert(char(10), '') AS [SUPP],
convert(char(150), 'COMP: Outlay Transfer to ' + BAH.[MATTER]) AS [NARR],
convert(char(11), @DETMATTER) AS [MATTER],
-@DETVALUE As [VALUE],
@OVAT AS [VATCODE],
convert(decimal(17,2), 0) As [VATVAL],
convert(char(1), 'N') AS [CLIENTYN],
convert(char(1), 'O') AS [OUTLAY],
convert(char(1), '') AS [PENDING],
BAH.[YEAR] AS [YEAR],
BAH.[PERNO] AS [PERNO],
@BASECUR AS [ENTRYCURRENCY],
convert(decimal(17, 2), round((-@DETVALUE) * @IECONVERT, 2)) AS [CURRENCYVALUE],
convert(decimal(17,2), 0) As [CURRENCYVAT],
convert(char(4), '') AS [OUTLAYCODE],
convert(char(1), '') AS [THIRDPARTY],
convert(char(60), '') AS [PAYEE],
convert(int, 0) AS [HEADPREF],
convert(int, 0) AS [HEADBATCH],
convert(int, 0) AS [ALLOCBATCH],
convert(int, 0) AS [ALLOCPREF],
convert(char(10), '') AS [ALLOCREF],
convert(decimal(17, 2), 0) AS [ALLOCVALUE],
convert(char(1), '') AS [ALLOCWRITEOFF],
convert(char(10), '') AS [PSUPP],
convert(smallint, 0) AS [UNDETAKING]
FROM [dbo].[BATCHH] BAH
WHERE BAH.[PREF] = @LastBatchHPRef
--UPDATE CON
-- SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
-- CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1
-- FROM [dbo].[control] CON
INSERT
INTO [dbo].[MatterLedger]
([MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BILLEDOUTLAYVALUE],
[InvoiceNo],
[IncludeInBill])
SELECT convert(char(11), @DETMATTER) AS [MATTER],
@NewBatchNo As [BATCHNO],
@LastBatchDPREF AS [PREF],
BAH.[DATE] AS [DATE],
convert(char(10), 'xCompTFer') AS [REF],
convert(char(80), 'COMP: Outlay Transfer to ' + BAH.[MATTER]) AS [NARR],
convert(decimal(17, 2), 0) AS [VALUED],
convert(decimal(17, 2), -@DETVALUE) AS [VALUEO],
convert(decimal(17, 2), 0) AS [VALUEC],
convert(char(3), '') AS FEE,
BAH.[PERNO] AS [PER],
BAH.[YEAR] AS [YEAR],
BAH.[DATE] AS [ENTRYDATE],
MAT.[CLIENTCODE] AS [CLIENT],
convert(decimal(17, 2), 0) AS [VALUECC],
convert(decimal(17, 2), 0) AS [VALUECD],
convert(char(4), '') AS [DEPOSITTYPE],
convert(decimal(17, 2), 0) AS [CURVALUED],
convert(decimal(17, 2), round((-@DETVALUE) * @IECONVERT, 2)) AS [CURVALUEO],
convert(decimal(17, 2), 0) AS [CURVALUED],
convert(decimal(17, 2), 0) AS [CURVALUECC],
convert(decimal(17, 2), 0) AS [CURVALUECD],
convert(char(1), '') AS [BILLED],
BAH.[YEAR] AS [BILLINGYEAR],
BAH.[PERNO] AS [BILLINGPERIOD],
BAH.[DATE] AS [BILLINGDATE],
convert(decimal(17, 2), -@DETVALUE) AS [BILLEDOUTLAYVALUE],
@INVOICENO AS [Invoiceno],
convert(int, 2) AS [IncludeInBill]
FROM [dbo].[BATCHH] BAH
INNER JOIN [dbo].[MATTERS] MAT
ON MAT.[CODE] = @DETMATTER
WHERE BAH.[PREF] = @LastBatchHPRef
--UPDATE CON
-- SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
-- CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1
-- FROM [dbo].[control] CON
INSERT
INTO [dbo].[NominalLedger]
([CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO])
SELECT @OUTLAY AS [CODE],
convert(varchar(3), '') AS [BRANCH],
@NewBatchNo As [BATCHNO],
@LastBatchDPREF AS [PREF],
BAH.[DATE] AS [DATE],
convert(char(10), 'xCompTFer') AS [REF],
convert(char(100), 'COMP: Outlay Transfer to ' + BAH.[MATTER]) AS [NARR],
convert(char(11), @DETMATTER) AS [MATTER],
convert(char(10), '') AS [SUPP],
convert(char(3), '') AS FEE,
convert(decimal(17, 2), -@DETVALUE) AS [VALUE],
convert(decimal(17, 2), round((-@DETVALUE) * @IECONVERT, 2)) AS [CURRENCYVALUE],
BAH.[PERNO] AS [PER],
BAH.[YEAR] AS [YEAR],
BAH.[DATE] AS [ENTRYDATE],
convert(int, 0) AS [RECNO]
FROM [dbo].[BATCHH] BAH
INNER JOIN [dbo].[MATTERS] MAT
ON MAT.[CODE] = @DETMATTER
WHERE BAH.[PREF] = @LastBatchHPRef
UPDATE MAT
SET MAT.[OutlayBal] = MAT.[OutlayBal] - @DETVALUE,
MAT.[CurOutlayBal] = round((MAT.[OutlayBal] - @DETVALUE) * @IECONVERT, 2),
MAT.[OutlayBalFwd] = MAT.[OutlayBalFwd] - @DETVALUE,
MAT.[CurOutlayBalFwd] = round((MAT.[OutlayBalFwd] - @DETVALUE) * @IECONVERT, 2)
FROM [dbo].[matters] MAT
WHERE MAT.[CODE] = @DETMATTER
SET @DETNo = @DETNo + 1
END
UPDATE CON
SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1,
@OUTLAY = CON.[OUTLAY],
@OVAT = CON.[VATEXCLUDE],
@BASECUR = CON.[BASECURRENCY],
@IECONVERT = CON.[IECONVERT]
FROM [dbo].[control] CON
INSERT
INTO [dbo].[BatchDetails]
([BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[SUPP],
[NARR],
[MATTER],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING])
SELECT @NewBatchNo As [BATCHNO],
convert(char(1), 'J') AS [TYPE],
@OUTLAY AS [CODE],
@LastBatchDPREF AS [PREF],
convert(char(10), 'xCompTFer') AS [REF],
BAH.[DATE] AS [DATE],
convert(char(3), '') AS FEE,
convert(varchar(3), '') AS BRANCH,
convert(char(10), '') AS [SUPP],
convert(char(150), 'Composite Billing') AS [NARR],
BAH.[MATTER] AS [MATTER],
TOT.[BILLNOW] As [VALUE],
@OVAT AS [VATCODE],
convert(decimal(17,2), 0) As [VATVAL],
convert(char(1), 'N') AS [CLIENTYN],
convert(char(1), 'O') AS [OUTLAY],
convert(char(1), '') AS [PENDING],
BAH.[YEAR] AS [YEAR],
BAH.[PERNO] AS [PERNO],
@BASECUR AS [ENTRYCURRENCY],
convert(decimal(17, 2), round((TOT.[BILLNOW]) * @IECONVERT, 2)) AS [CURRENCYVALUE],
convert(decimal(17,2), 0) As [CURRENCYVAT],
convert(char(4), '') AS [OUTLAYCODE],
convert(char(1), '') AS [THIRDPARTY],
convert(char(60), '') AS [PAYEE],
convert(int, 0) AS [HEADPREF],
convert(int, 0) AS [HEADBATCH],
convert(int, 0) AS [ALLOCBATCH],
convert(int, 0) AS [ALLOCPREF],
convert(char(10), '') AS [ALLOCREF],
convert(decimal(17, 2), 0) AS [ALLOCVALUE],
convert(char(1), '') AS [ALLOCWRITEOFF],
convert(char(10), '') AS [PSUPP],
convert(smallint, 0) AS [UNDETAKING]
FROM [dbo].[BATCHH] BAH
CROSS JOIN( SELECT ISNULL(SUM(ISNULL(BGD.[BillNow], 0)), 0) AS [BILLNOW]
FROM [dbo].[ky_CompBillMatterByBatch](@BatchNo) BGM
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGM.[ID]
AND BGD.[Matter] = BGM.[Matter]) TOT
WHERE BAH.[PREF] = @LastBatchHPRef
--UPDATE CON
-- SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
-- CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1
-- FROM [dbo].[control] CON
INSERT
INTO [dbo].[MatterLedger]
([MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BILLEDOUTLAYVALUE],
[InvoiceNo],
[IncludeInBill])
SELECT convert(char(11), BAH.[MATTER]) AS [MATTER],
@NewBatchNo As [BATCHNO],
@LastBatchDPREF AS [PREF],
BAH.[DATE] AS [DATE],
convert(char(10), 'xCompTFer') AS [REF],
convert(char(80), 'Composite Billing') AS [NARR],
convert(decimal(17, 2), 0) AS [VALUED],
convert(decimal(17, 2), TOT.[BILLNOW]) AS [VALUEO],
convert(decimal(17, 2), 0) AS [VALUEC],
convert(char(3), '') AS FEE,
BAH.[PERNO] AS [PER],
BAH.[YEAR] AS [YEAR],
BAH.[DATE] AS [ENTRYDATE],
MAT.[CLIENTCODE] AS [CLIENT],
convert(decimal(17, 2), 0) AS [VALUECC],
convert(decimal(17, 2), 0) AS [VALUECD],
convert(char(4), '') AS [DEPOSITTYPE],
convert(decimal(17, 2), 0) AS [CURVALUED],
convert(decimal(17, 2), round((TOT.[BILLNOW]) * @IECONVERT, 2)) AS [CURVALUEO],
convert(decimal(17, 2), 0) AS [CURVALUED],
convert(decimal(17, 2), 0) AS [CURVALUECC],
convert(decimal(17, 2), 0) AS [CURVALUECD],
convert(char(1), '') AS [BILLED],
BAH.[YEAR] AS [BILLINGYEAR],
BAH.[PERNO] AS [BILLINGPERIOD],
BAH.[DATE] AS [BILLINGDATE],
convert(decimal(17, 2), TOT.[BILLNOW]) AS [BILLEDOUTLAYVALUE],
@INVOICENO AS [Invoiceno],
convert(int, 2) AS [IncludeInBill]
FROM [dbo].[BATCHH] BAH
INNER JOIN [dbo].[MATTERS] MAT
ON MAT.[CODE] = BAH.[MATTER]
CROSS JOIN( SELECT ISNULL(SUM(ISNULL(BGD.[BillNow], 0)), 0) AS [BILLNOW]
FROM [dbo].[ky_CompBillMatterByBatch](@BatchNo) BGM
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGM.[ID]
AND BGD.[Matter] = BGM.[Matter]) TOT
WHERE BAH.[PREF] = @LastBatchHPRef
-- UPDATE CON
-- SET @LastBatchDPREF = IsNull(CON.[LASTPREF], 0) + 1,
-- CON.[LASTPREF] = IsNull(CON.[LASTPREF], 0) + 1
-- FROM [dbo].[control] CON
INSERT
INTO [dbo].[NominalLedger]
([CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO])
SELECT @OUTLAY AS [CODE],
convert(varchar(3), '') AS [BRANCH],
@NewBatchNo As [BATCHNO],
@LastBatchDPREF AS [PREF],
BAH.[DATE] AS [DATE],
convert(char(10), 'xCompTFer') AS [REF],
convert(char(100), 'Composite Billing') AS [NARR],
convert(char(11), BAH.[MATTER]) AS [MATTER],
convert(char(10), '') AS [SUPP],
convert(char(3), '') AS FEE,
convert(decimal(17, 2), TOT.[BILLNOW]) AS [VALUE],
convert(decimal(17, 2), round((TOT.[BILLNOW]) * @IECONVERT, 2)) AS [CURRENCYVALUE],
BAH.[PERNO] AS [PER],
BAH.[YEAR] AS [YEAR],
BAH.[DATE] AS [ENTRYDATE],
convert(int, 0) AS [RECNO]
FROM [dbo].[BATCHH] BAH
INNER JOIN [dbo].[MATTERS] MAT
ON MAT.[CODE] = BAH.MATTER
CROSS JOIN( SELECT ISNULL(SUM(ISNULL(BGD.[BillNow], 0)), 0) AS [BILLNOW]
FROM [dbo].[ky_CompBillMatterByBatch](@BatchNo) BGM
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGM.[ID]
AND BGD.[Matter] = BGM.[Matter]) TOT
WHERE BAH.[PREF] = @LastBatchHPRef
UPDATE MAT
SET MAT.[OutlayBal] = MAT.[OutlayBal] + ISNULL(TOT.[BILLNOW], 0),
MAT.[CurOutlayBal] = round((MAT.[OutlayBal] + TOT.[BILLNOW]) * @IECONVERT, 2),
MAT.[OutlayBalFwd] = MAT.[OutlayBalFwd] + TOT.[BILLNOW],
MAT.[CurOutlayBalFwd] = round((MAT.[OutlayBalFwd] + TOT.[BILLNOW]) * @IECONVERT, 2)
FROM [dbo].[BATCHH] BAH
INNER JOIN [dbo].[matters] MAT
ON MAT.[Code] = BAH.[MATTER]
CROSS JOIN( SELECT ISNULL(SUM(ISNULL(BGD.[BillNow], 0)), 0) AS [BILLNOW]
FROM [dbo].[ky_CompBillMatterByBatch](@BatchNo) BGM
INNER JOIN [dbo].[BGDetail] BGD
ON BGD.[BGGroupID] = BGM.[ID]
AND BGD.[Matter] = BGM.[Matter]) TOT
WHERE BAH.[PREF] = @LastBatchHPRef
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMClearDownNominalLedger'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMClearDownNominalLedger]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMClearDownNominalLedger]
(
@BANKACC VARCHAR(50),
@UPTODATE DATETIME,
@USER VARCHAR(20)
)
AS
/*************************************************************************************************************
* *
* [dbo].[KAAS_SAMClearDownNominalLedger] *
* *
* Description: This procedure is used to get new transactions and put them into a bank rec in progress *
* Copied From: [dbo].[ky_NETClearDownNominalLedger] *
* *
* Modification history: *
* 2022-02-15 Balamurugan Created *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
*************************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
SET @BANKACC = LTRIM(RTRIM(@BANKACC))
DECLARE @TRANS TABLE
(
[Code] VARCHAR(20),
[BatchNo] INT
)
INSERT INTO @TRANS (
[Code],
[BatchNo])
SELECT [NML].[CODE],
[NML].[BATCHNO]
FROM [dbo].[NominalLedger] AS [NML]
WHERE [NML].[CODE] = @BANKACC
AND [NML].[DATE] <= @UPTODATE
AND [NML].[RECNO] = 0
UPDATE [NML]
SET [NML].[RECNO] = 1
FROM [dbo].[NominalLedger] AS [NML]
INNER JOIN @TRANS AS [TMP]
ON [NML].[CODE] = [TMP].[Code]
AND [NML].[BATCHNO] = [TMP].[BatchNo]
/* Update BatchH so you can't correct/copy it */
UPDATE [BAH]
SET [BAH].[RECNO] = 1
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN @TRANS AS [TMP]
ON [BAH].[BATCHNO] = [TMP].[BatchNo]
INSERT INTO [dbo].[Log] (
[DATE],
[USER],
[EVENT])
VALUES (DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0),
@USER,
'Clear Down: ' + @BANKACC + ' for date: ' + CONVERT(VARCHAR(10), @UPTODATE, 103))
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_SamConvertDateToClarion',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_SamConvertDateToClarion]
GO
CREATE PROCEDURE [dbo].[KAAS_SamConvertDateToClarion]
(@Date VARCHAR(20) = '',
@Result INT OUTPUT)
AS
/*******************************************************************************************************
* This SP is used to get the Clarion Number from Date *
* *
* Stored Procedure Name : [dbo].[KAAS_SamConvertDateToClarion] *
* *
* Modification History: *
* 2021-11-18 Vinodhkumar.M Created *
*******************************************************************************************************/
BEGIN
SELECT @Result = dbo.KAAS_FN_ConvertDateToClarion(@Date)
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamCostTransferGathering'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamCostTransferGathering]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamCostTransferGathering]
(
@REF CHAR(10),
@DATE DATETIME,
@MATTER VARCHAR(20),
@VALUE DECIMAL(17,2),
@ENTERCURRENCY CHAR(1) = '',
@CURRENCYVALUE DECIMAL(17,2) = 0.00,
@CURRENCYVAT DECIMAL(17,2) = 0.00,
@HEADPREF INT = 0,
@HEADBATCH INT = 0,
@ALLOCBATCH INT,
@ALLOCPREF INT,
@ALLOCREF CHAR(10) = '',
@ALLOCVALUE DECIMAL(17,2) = 0.00,
@ALLOCWRITEOFF CHAR(1) = ''
)
AS
/*******************************************************************************************************
* Save the Cost Transfer Details *
* *
* Stored Procedure Name : [dbo].[KAAS_SamCostTransferGathering] *
* *
* Modification History: *
* 2021-11-19 Vinodhkumar M Created *
* 2022-02-25 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
INSERT INTO
[dbo].[CostTransGathering](
[REF],
[DATE],
[MATTER],
[VALUE],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[HEADBATCH],
[HEADPREF],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF])
VALUES
(@REF,
@DATE,
@MATTER,
@VALUE,
@ENTERCURRENCY,
@CURRENCYVALUE,
@CURRENCYVAT,
@HEADBATCH,
@HEADPREF,
@ALLOCBATCH,
@ALLOCPREF,
@ALLOCREF,
@ALLOCVALUE,
@ALLOCWRITEOFF)
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamCreateMemoriseBatch'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamCreateMemoriseBatch]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamCreateMemoriseBatch]
(
@BATCHNO INT,
@DATE DATE = NULL,
@TYPE CHAR(1),
@Handler VARCHAR(30) = '',
@Result TINYINT OUTPUT
)
AS
/*******************************************************************************************************
* Create Batch for memorise transaction *
* *
* Stored Procedure Name : [dbo].[KAAS_SamCreateMemoriseBatch] *
* *
* Modification History: *
* 2021-11-02 vinodhkumar M Created *
* 2024-10-14 Balamurugan C Modified - Checking batch present or not *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
SET NOCOUNT ON
SET @DATE = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@DATE, @Handler)), 0)
IF(1 = (SELECT COUNT(1) FROM dbo.[RBatchH] WHERE [BatchNo] = @BATCHNO AND [DATE]=@DATE))
BEGIN
SET @Result = 0
END
ELSE IF((SELECT COUNT(1) FROM dbo.[BatchH] WHERE [BatchNo] = @BATCHNO) = 0)
BEGIN
SET @Result = 2
END
ELSE
BEGIN
INSERT
INTO [dbo].[RBatchH]
(
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[DATE],
[FEE],
[MATTER],
[SUPP],
[NARR],
[VALUE],
[SUBTOT],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[OUTLAYTOT],
[VATTOT],
[FEETOT],
[INVCR],
[THIRDPARTY],
[USERCODE],
[ENTRYDATE],
[CLIENTBANK],
[CURRENCY],
[CURRENCYVALUE],
[CUROUTLAYTOT],
[CURVATTOT],
[CURFEETOT],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[WRITEDOWN],
[WRITEBACKHOURS],
[WRITEBACKVALUE],
[CORRECTCOPY],
[CREDITINVOICENO],
[DRAFTBILLNO],
[EFTSENT],
[EFTDATE],
[EFTFILENUMBER],
[EFTFILENAME],
[EFTYORN],
[CLIENTCODE],
[PAYCLIENT],
[ONCEOFFPAYMENT],
[CASEASSCODE]
)
SELECT [BATCHNO],
@TYPE,
[CODE],
[PREF],
@DATE,
[FEE],
[MATTER],
[SUPP],
[NARR],
[VALUE],
[SUBTOT],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[OUTLAYTOT],
[VATTOT],
[FEETOT],
[INVCR],
[THIRDPARTY],
[USERCODE],
[ENTRYDATE],
[CLIENTBANK],
[CURRENCY],
[CURRENCYVALUE],
[CUROUTLAYTOT],
[CURVATTOT],
[CURFEETOT],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[WRITEDOWN],
[WRITEBACKHOURS],
[WRITEBACKVALUE],
[CORRECTCOPY],
[CREDITINVOICENO],
[DRAFTBILLNO],
[EFTSENT],
[EFTDATE],
[EFTFILENUMBER],
[EFTFILENAME],
[EFTYORN],
[CLIENTCODE],
[PAYCLIENT],
[ONCEOFFPAYMENT],
[CASEASSCODE]
FROM [dbo].[BatchH]
WHERE BATCHNO=@BATCHNO
INSERT INTO
[dbo].[RBatchD] (
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[DATE],
[NARR],
[MATTER],
[VALUE],
[VATCODE],
[VATVAL],
[OUTLAY],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCWRITEOFF],
[CASEASSCODE],
[ONCEOFFPAYMENT],
[PAYCLIENT],
[CLIENTCODE],
[SUPP],
[OUTLAYCODE],
[FEE],
[PAYEE],
[THIRDPARTY])
SELECT [BATCHNO],
@Type,
[CODE],
[PREF],
@DATE,
[NARR],
[MATTER],
[VALUE],
[VATCODE],
[VATVAL],
[OUTLAY],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCWRITEOFF],
[CASEASSCODE],
[ONCEOFFPAYMENT],
[PAYCLIENT],
[CLIENTCODE],
[SUPP],
[OUTLAYCODE],
[FEE],
[PAYEE],
[THIRDPARTY]
FROM [DBO].[BatchDetails]
WHERE BATCHNO=@BATCHNO
SET @Result = 1
END
SET NOCOUNT OFF
COMMIT TRAN
END TRY
BEGIN CATCH
SET @Result = 0;
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMDashboardAccountDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMDashboardAccountDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMDashboardAccountDetails]
AS
/*******************************************************************************************************
* Dashboard Details *
* *
* Stored Procedure Name : [dbo].[SAMDashboardAccountDetails] *
* *
* Modification History: *
* 2021-12-20 Balamurugan C Created *
* 2021-12-27 Balamurugan C Modified - Added Select condition to check log is inserted or not *
*******************************************************************************************************/
BEGIN
DECLARE @tempTable TABLE
(
[Id] INT NULL,
[ColumnName] VARCHAR(30) NULL,
[Client A/c] DECIMAL(17,2) NULL,
[Outlay A/c] DECIMAL(17,2) NULL,
[Billing A/c] DECIMAL(17,2) NULL,
[Supplier A/c] DECIMAL(17,2) NULL
)
DECLARE @FinalTable TABLE
(
[RowNum] INT NULL,
[ColumnName] VARCHAR(30) NULL,
[MatterBalances] DECIMAL(17,2) NULL,
[ControlAccounts] DECIMAL(17,2) NULL,
[Difference] DECIMAL(17,2) NULL
)
INSERT INTO @tempTable (
[Id],
[ColumnName],
[Client A/c],
[Outlay A/c],
[Billing A/c],
[Supplier A/c]
)
SELECT [Id],
[ColumnName],
[Client A/c],
[Outlay A/c],
[Billing A/c],
[Supplier A/c]
FROM (
SELECT 1 AS 'Id',
'Matter Balances' AS 'ColumnName',
SUM(ClientBal) AS 'Client A/c',
SUM(OutlayBal) AS 'Outlay A/c',
SUM(DebtBal) AS 'Billing A/c',
(SELECT SUM(SupplierLedger.ORIGINAL)
AS Creditors
FROM [dbo].[SupplierLedger] ) AS 'Supplier A/c'
FROM [dbo].[Matters]
UNION ALL
SELECT 2 AS Id,
'Control Accounts' AS 'ColumnName',
t1.ClientControlAc,
t2.OutlayControlAc,
t3.DebtorsControlAc,
t4.CreditorsControlAc
FROM (
SELECT SUM(ISNULL(VALUE,0)) AS ClientControlAc
FROM [dbo].[NominalLedger]
WHERE [CODE]=(SELECT [CNT].[CLIENT]
FROM [dbo].[Control] [CNT])
AND YEAR=(SELECT [CNT].[YEAR]
FROM [dbo].[Control] [CNT])) AS t1,
(
SELECT ISNULL(SUM(ISNULL(VALUE,0)),0) AS OutlayControlAc
FROM [dbo].[NominalLedger]
WHERE[CODE]=(SELECT [CNT].[OUTLAY]
FROM [dbo].[Control] [CNT])
AND YEAR=(SELECT [CNT].[YEAR]
FROM [dbo].[Control] [CNT])) AS t2,
(
SELECT ISNULL(SUM(ISNULL(VALUE,0)),0) AS DebtorsControlAc
FROM [dbo].[NominalLedger]
WHERE CODE=(SELECT [CNT].[DEBTORS] FROM [dbo].[Control] [CNT])
AND YEAR=(SELECT [CNT].[YEAR]
FROM [dbo].[Control] [CNT])) AS t3,
(SELECT ISNULL(SUM(ISNULL(VALUE,0)),0) AS CreditorsControlAc
FROM [dbo].[NominalLedger]
WHERE [CODE]=(SELECT [CNT].[CREDITOR]
FROM [dbo].[Control] [CNT])
AND YEAR=(SELECT [CNT].[YEAR]
FROM [dbo].[Control] [CNT])) AS t4
) AS balances
INSERT INTO @FinalTable
(
[ColumnName],
[MatterBalances],
[ControlAccounts],
[Difference]
)
SELECT PIV.NAME AS [ColumnName],
MAX(PIV.[Matter Balances]) AS [MatterBalances],
MAX(PIV.[Control Accounts]) AS [ControlAccounts],
MAX(0) AS [Difference]
FROM @tempTable
UNPIVOT (VALUE FOR NAME IN ([Client A/c],[Outlay A/c],[Billing A/c],[Supplier A/c])) up
PIVOT (MAX(VALUE) FOR [ColumnName] IN ([Matter Balances],[Control Accounts])) PIV
GROUP BY PIV.NAME
SELECT [ColumnName],
ISNULL([MatterBalances],0) AS [MatterBalances],
ISNULL([ControlAccounts],0) AS [ControlAccounts],
ISNULL([MatterBalances] - [ControlAccounts],0) AS [Difference]
FROM @FinalTable
ORDER BY CASE [ColumnName]
WHEN 'Client A/c' THEN 1
WHEN 'Outlay A/c' THEN 2
WHEN 'Billing A/c' THEN 3
ELSE 4 END
/* CLIENT BANK ACCOUNTS */
SELECT [NOM].[CODE] AS [Code],
[NOM].[DESC] AS [BankAc],
ISNULL(SUM(ISNULL([NOL].[VALUE],0)),0) AS Balance
FROM [dbo].[NominalLedger] [NOL]
INNER JOIN [dbo].[Nominal] [NOM]
ON [NOL].[CODE] = [NOM].[CODE]
WHERE ([NOM].[TYPE] = 'Bank')
AND ([NOM].[CLIENTAC] = 'Y')
AND YEAR=(SELECT [CNT].[YEAR] FROM [dbo].[Control] [CNT])
GROUP BY [NOM].[CODE],
[NOM].[DESC]
/* OFFICE BANK ACCOUNTS */
SELECT [NOM].[CODE] AS [Code],
[NOM].[DESC] AS [BankAc],
ISNULL(SUM(ISNULL([NOL].[VALUE],0)),0) AS Balance
FROM [dbo].[NominalLedger] [NOL]
INNER JOIN [dbo].[Nominal] [NOM]
ON [NOL].[CODE] = [NOM].[CODE]
WHERE ([NOM].[TYPE] = 'Bank')
AND ([NOM].[CLIENTAC] <> 'Y')
AND YEAR=(SELECT [CNT].[YEAR] FROM [dbo].[Control] [CNT])
GROUP BY [NOM].[CODE],
[NOM].[DESC]
/* NOMINAL CONTROL TOTAL */
SELECT SUM([Value]) AS NominalControlTotal
FROM [dbo].[NominalLedger]
WHERE YEAR=(SELECT [CNT].[YEAR]
FROM [dbo].[Control] [CNT])
/* TO CHECK LOG IS INSERTED OR NOT*/
SELECT CASE WHEN COUNT(*) > 0
THEN 'N' ELSE 'Y'
END AS [InsertDailyLog]
FROM [dbo].[ControlAccountLog]
WHERE CAST([EntryDate] AS DATE) = CAST(dbo.KEYHM_FNConvertDateToUTC(GETDATE(), '') AS DATE)
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_SAMDashboardDebitClientAcc'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMDashboardDebitClientAcc]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_SAMDashboardDebitClientAcc]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'ClientCode',
@SortOrder VARCHAR(100) = 'ASC'
)
AS
/************************************************************************************
* Fetching Closed Matter Details *
* Stored Procedure Name : [dbo].[KAAS_SAMDashboardDebitClientAcc] *
* Copied From : [dbo].[KAAS_GetSAMDashboardDetails]
* Modification History: *
* 2021-06-29 Ghayathri S.V Created to Fetch the Debit Client Records *
************************************************************************************/
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql = 'WITH [ClientDebitAccounts] ([Code], [ClientBalance]) AS (
SELECT [MAT].[Code], ISNULL(SUM([MTL].[VALUEC]), 0) AS [ClientBalance]
FROM [dbo].[matters] AS [MAT]
INNER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MTL].[MATTER] = [MAT].[Code]
GROUP BY [MAT].[Code]
HAVING ISNULL(SUM([MTL].[VALUEC]), 0) > 0)
SELECT COALESCE([CNT].[Name], [MAT].[ClientCode], '''') AS [Client],
ISNULL([MAT].[ClientCode], '''') AS [ClientCode],
[CDA].[Code] AS [Matter],
ISNULL([MAT].[Description], '''') AS [MatterDescription],
[CDA].[ClientBalance]
FROM [ClientDebitAccounts] AS [CDA]
LEFT OUTER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [CDA].[Code]
LEFT OUTER JOIN [dbo].[Contacts] AS [CNT]
ON [CNT].[COde] = [MAT].[ClientCode]
WHERE (
[CNT].[Name] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[MAT].[ClientCode] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[CDA].[Code] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[MAT].[Description] LIKE ' + '''%' + @SearchString + '%' + '''' +'
)
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
;WITH [ClientDebitAccounts] ([Code], [ClientBalance]) AS (
SELECT [MAT].[Code], ISNULL(SUM([MTL].[VALUEC]), 0) AS [ClientBalance]
FROM [dbo].[matters] AS [MAT]
INNER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MTL].[MATTER] = [MAT].[Code]
GROUP BY [MAT].[Code]
HAVING ISNULL(SUM([MTL].[VALUEC]), 0) > 0)
SELECT COUNT(*) 'TotalRecord'
FROM [ClientDebitAccounts] AS [CDA]
LEFT OUTER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [CDA].[Code]
LEFT OUTER JOIN [dbo].[Contacts] AS [CNT]
ON [CNT].[COde] = [MAT].[ClientCode]
WHERE (
[CNT].[Name] LIKE '%' + @SearchString + '%'
OR
[MAT].[ClientCode] LIKE '%' + @SearchString + '%'
OR
[CDA].[Code] LIKE '%' + @SearchString + '%'
OR
[MAT].[Description] LIKE '%' + @SearchString + '%'
)
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_SAMDashboardOfficeCreditAcc'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMDashboardOfficeCreditAcc]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_SAMDashboardOfficeCreditAcc]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'ClientCode',
@SortOrder VARCHAR(100) = 'ASC'
)
AS
/************************************************************************************
* Fetching Closed Matter Details *
* Stored Procedure Name : [dbo].[KAAS_SAMDashboardOfficeCreditAcc] *
* Copied From : [dbo].[KAAS_GetSAMDashboardDetails]
* Modification History: *
* 2024-02-07 Ghayathri S.V Created to Fetch the Office Credit Records *
************************************************************************************/
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql = 'WITH [OfficeCreditAccounts] ([Code], [OfficeBalance]) AS (
SELECT [MAT].[Code],
ISNULL(SUM(ISNULL([MTL].[VALUED], 0) + ISNULL([MTL].[VALUEO], 0)), 0) AS [OfficeBalance]
FROM [dbo].[matters] AS [MAT]
INNER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MAT].[Code] = [MTL].[MATTER]
GROUP BY [MAT].[Code]
HAVING ISNULL(SUM(ISNULL([MTL].[VALUED], 0) + ISNULL([MTL].[VALUEO], 0)), 0) < 0)
SELECT COALESCE([CNT].[Name], [MAT].[ClientCode], '''') AS [Client],
ISNULL([MAT].[ClientCode], '''') AS [ClientCode],
[OCA].[Code] AS [Matter],
ISNULL([MAT].[Description], '''') AS [MatterDescription],
[OCA].[OfficeBalance]
FROM [OfficeCreditAccounts] AS [OCA]
LEFT OUTER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [OCA].[Code]
LEFT OUTER JOIN [dbo].[Contacts] AS [CNT]
ON [CNT].[COde] = [MAT].[ClientCode]
WHERE (
[CNT].[Name] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[MAT].[ClientCode] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[OCA].[Code] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[MAT].[Description] LIKE ' + '''%' + @SearchString + '%' + '''' +'
)
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
;WITH [OfficeCreditAccounts] ([Code], [OfficeBalance]) AS (
SELECT [MAT].[Code],
ISNULL(SUM(ISNULL([MTL].[VALUED], 0) + ISNULL([MTL].[VALUEO], 0)), 0) AS [OfficeBalance]
FROM [dbo].[matters] AS [MAT]
INNER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MAT].[Code] = [MTL].[MATTER]
GROUP BY [MAT].[Code]
HAVING ISNULL(SUM(ISNULL([MTL].[VALUED], 0) + ISNULL([MTL].[VALUEO], 0)), 0) < 0)
SELECT COUNT(*) 'TotalRecord'
FROM [OfficeCreditAccounts] AS [OCA]
LEFT OUTER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [OCA].[Code]
LEFT OUTER JOIN [dbo].[Contacts] AS [CNT]
ON [CNT].[COde] = [MAT].[ClientCode]
WHERE (
[CNT].[Name] LIKE '%' + @SearchString + '%'
OR
[MAT].[ClientCode] LIKE '%' + @SearchString + '%'
OR
[OCA].[Code] LIKE '%' + @SearchString + '%'
OR
[MAT].[Description] LIKE '%' + @SearchString + '%'
)
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_SAMDashboardOutstandingDebt'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMDashboardOutstandingDebt]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_SAMDashboardOutstandingDebt]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'Date',
@SortOrder VARCHAR(100) = 'ASC'
)
AS
/************************************************************************************
* Fetching Closed Matter Details *
* Stored Procedure Name : [dbo].[KAAS_SAMDashboardOutstandingDebt] *
* Copied From : [dbo].[KAAS_GetSAMDashboardDetails]
* Modification History: *
* 2024-02-06 Ghayathri S.V Created to Fetch the Oustanding Debtors *
* 2024-02-12 Ghayathri S.V Modified to fetch the matter description *
* 2024-02-14 Ghayathri S.V Modified to fetch the Client Contact Name *
************************************************************************************/
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql = 'SELECT ISNULL([DTL].[MATTER], '''') AS [Matter],
ISNULL([MAT].[DESCRIPTION], '''') AS [MatterName],
ISNULL([CT].[NAME], '''') AS [Name],
[DTL].[DATE] AS [Date],
ISNULL([DTL].[REF], '''') AS [Ref],
ISNULL([DTL].[NARR], '''') AS [Narr],
ISNULL([DTL].[ORIGINAL], 0) AS [Amount],
ISNULL([DTL].[OSVALUE], 0) AS [AmountOS],
ISNULL([DTL].[BATCHNO], 0) AS [BatchNo],
ISNULL([DTL].[PREF], 0) AS [PRef]
FROM [dbo].[DebtorsLedger] AS [DTL]
JOIN [dbo].[Matters] MAT ON MAT.CODE = DTL.MATTER
JOIN [dbo].[Contacts] CT ON MAT.CLIENTCODE = CT.CODE
WHERE [DTL].[OSVALUE] <> 0 ' +
'AND (
DTL.[Matter] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
DTL.[REF] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
DTL.[NARR] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
DTL.[BATCHNO] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
DTL.[PREF] LIKE ' + '''%' + @SearchString + '%' + '''' +'
)
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
SELECT COUNT(*) 'TotalRecord'
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[OSVALUE] <> 0
AND (
DTL.[Matter] LIKE '%' + @SearchString + '%'
OR
DTL.[REF] LIKE '%' + @SearchString + '%'
OR
DTL.[NARR] LIKE '%' + @SearchString + '%'
OR
DTL.[BATCHNO] LIKE '%' + @SearchString + '%'
OR
DTL.[PREF] LIKE '%' + @SearchString + '%'
)
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_SAMDashboardUnallocatedPayments'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMDashboardUnallocatedPayments]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_SAMDashboardUnallocatedPayments]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'Date',
@SortOrder VARCHAR(100) = 'ASC'
)
AS
/************************************************************************************
* Fetching Closed Matter Details *
* Stored Procedure Name : [dbo].[KAAS_SAMDashboardUnallocatedPayments] *
* Copied From : [dbo].[KAAS_GetSAMDashboardDetails]
* Modification History: *
* 2024-02-06 Ghayathri S.V Created to Fetch the Unallocated Payment Grid *
* 2024-02-16 Ghayathri S.V Modified to fetch type *
************************************************************************************/
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql = 'SELECT COALESCE([SUP].[NAME], [SPL].[SUPP], '''') AS [Supp],
[SPL].[DATE] AS [Date],
[SPL].[TYPE] AS [Type],
ISNULL([SPL].[REF], '''') AS [Ref],
ISNULL([SPL].[NARR], '''') AS [Narr],
ISNULL([SPL].[ORIGINAL], 0) AS [Original],
ISNULL([SPL].[OSVALUE], 0) AS [OSValue],
ISNULL([SPL].[SUPP], '''') AS [SupplierCode],
ISNULL([SPL].[BATCHNO], 0) AS [BatchNo],
ISNULL([SPL].[PREF], 0) AS [PRef]
FROM [dbo].[SupplierLedger] AS [SPL]
LEFT OUTER JOIN [dbo].[Suppliers] AS [SUP]
ON [SPL].[SUPP] = [SUP].[CODE]
WHERE [SPL].[TYPE] = ''P''
AND [SPL].[OSVALUE] <> 0' +
'AND (
[SUP].[NAME] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[SPL].[REF] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[SPL].[NARR] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[SPL].[SUPP] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[SPL].[BATCHNO] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[SPL].[PREF] LIKE ' + '''%' + @SearchString + '%' + '''' +'
)
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
SELECT COUNT(*) 'TotalRecord'
FROM [dbo].[SupplierLedger] AS [SPL]
LEFT OUTER JOIN [dbo].[Suppliers] AS [SUP]
ON [SPL].[SUPP] = [SUP].[CODE]
WHERE [SPL].[TYPE] = 'P'
AND [SPL].[OSVALUE] <> 0
AND (
[SUP].[NAME] LIKE '%' + @SearchString + '%'
OR
[SPL].[REF] LIKE '%' + @SearchString + '%'
OR
[SPL].[NARR] LIKE '%' + @SearchString + '%'
OR
[SPL].[SUPP] LIKE '%' + @SearchString + '%'
OR
[SPL].[BATCHNO] LIKE '%' + @SearchString + '%'
OR
[SPL].[PREF] LIKE '%' + @SearchString + '%'
)
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_SAMDashboardUnallocatedReceipts'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMDashboardUnallocatedReceipts]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_SAMDashboardUnallocatedReceipts]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'Date',
@SortOrder VARCHAR(100) = 'ASC'
)
AS
/************************************************************************************
* Fetching Closed Matter Details *
* Stored Procedure Name : [dbo].[KAAS_SAMDashboardUnallocatedReceipts] *
* Copied From : [dbo].[KAAS_GetSAMDashboardDetails]
* Modification History: *
* 2024-02-07 Ghayathri S.V Created to Fetch the Unallocated Receipts Grid *
* 2024-02-16 Ghayathri S.V Modified to fetch matter code *
************************************************************************************/
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql = 'SELECT COALESCE([CNT].[Name], [MAT].[ClientCode], '''') AS [Client],
ISNULL([MAT].[Code], '''') AS [Matter],
ISNULL([MAT].[DESCRIPTION], '''') AS [MatterName],
[DTL].[DATE] AS [Date],
[DTL].[TYPE] AS [Type],
ISNULL([DTL].[REF], '''') AS [Ref],
ISNULL([DTL].[BATCHNO], 0) AS [BatchNo],
ISNULL([DTL].[PREF], 0) AS [PRef],
ISNULL([DTL].[NARR], '''') AS [Narr],
ISNULL([DTL].[ORIGINAL], 0) AS [Original],
ISNULL([DTL].[OSVALUE], 0) AS [OSValue]
FROM [dbo].[DebtorsLedger] AS [DTL]
LEFT OUTER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [DTL].[MATTER]
LEFT OUTER JOIN [dbo].[Contacts] AS [CNT]
ON [CNT].[Code] = [MAT].[ClientCode]
WHERE [DTL].[TYPE] = ''R''
AND [DTL].[OSVALUE] <> 0' +
'AND (
[CNT].[Name] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[MAT].[Code] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[DTL].[REF] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[DTL].[BATCHNO] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[DTL].[PREF] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[DTL].[NARR] LIKE ' + '''%' + @SearchString + '%' + '''' +'
)
ORDER BY ' + @SortColumn + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
EXEC Sp_executesql @sql
SELECT COUNT(*) 'TotalRecord'
FROM [dbo].[DebtorsLedger] AS [DTL]
LEFT OUTER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [DTL].[MATTER]
LEFT OUTER JOIN [dbo].[Contacts] AS [CNT]
ON [CNT].[Code] = [MAT].[ClientCode]
WHERE [DTL].[TYPE] = 'R'
AND [DTL].[OSVALUE] <> 0
AND (
[CNT].[Name] LIKE '%' + @SearchString + '%'
OR
[MAT].[Code] LIKE '%' + @SearchString + '%'
OR
[DTL].[REF] LIKE '%' + @SearchString + '%'
OR
[DTL].[BATCHNO] LIKE '%' + @SearchString + '%'
OR
[DTL].[PREF] LIKE '%' + @SearchString + '%'
OR
[DTL].[NARR] LIKE '%' + @SearchString + '%'
)
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamDeleteCategoryContact'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamDeleteCategoryContact]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamDeleteCategoryContact]
(@RecordId INT = 0)
AS
/*******************************************************************************************************
* delete Contact Categories *
* *
* Stored Procedure Name : [dbo].[KAAS_SamDeleteCategoryContact] *
* *
* Modification History: *
* 2021-11-01 vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DELETE FROM ContactCategories
WHERE RECORDID=@RecordId
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_SamDesktopControl',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_SamDesktopControl]
GO
CREATE PROCEDURE [dbo].[KAAS_SamDesktopControl]
AS
/*******************************************************************************************************
* This SP is used to get Config from Desktop Control *
* *
* Stored Procedure Name : [dbo].[KAAS_SamDesktopControl] *
* *
* Modification History: *
* 2021-11-18 Vinodhkumar.M Created *
*******************************************************************************************************/
BEGIN
SELECT [DEFAULTTASK] AS Defaulttask,
[REQUESTER] AS Requester,
[SPLITCHEQUES] AS Splitcheques,
[INDICATOR3] AS Indicator3,
[INDICATOR4] AS Indicator4,
[INDICATOR5] AS Indicator5,
[INDICATOR6] AS Indicator6,
[INDICATOR7] AS Indicator7,
[INDICATOR8] AS Indicator8,
[INDICATOR9] AS Indicator9,
[INDICATOR10] AS Indicator10,
[ENQUIRY] AS Enquiry,
[TIMECOSTING] AS Timecosting,
[BILLING] AS Billing,
[CHEQUEREQ] AS Chequereq,
[CLIENTREQ] AS Clientreq,
[CASEMAN] AS Caseman,
[RECORDID] AS Recordid
FROM [dbo].[DesktopControl]
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMFetchApproveReturnMailDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMFetchApproveReturnMailDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMFetchApproveReturnMailDetails]
(
@DraftNo INT = 0,
@HandlerCode VARCHAR(20) = '',
@ReqNo INT = 0,
@Mode VARCHAR(20) = ''
)
AS
/*******************************************************************************************************
* To fetch draft invoice approve/return mail details *
* *
* Stored Procedure Name : [dbo].[KAAS_SAMFetchApproveReturnMailDetails] *
* *
* Modification History: *
* 2021-11-29 Balamurugan C Created *
* 2022-01-11 balamurugan C Modified - Fetch My Cheque Details *
* 2024-06-28 Balamurugan C Modified - Added the Invoice Approver Handler Code *
* 2024-07-01 Balamurugan C Modified - Added the Current Approved Handler Email *
* 2024-07-10 Ghayathri.S.V Modified - Fetch the payment request details *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF(@Mode = 'Invoice')
BEGIN
SELECT [BIH].[Matter] AS [Matter],
[BIH].[ReturnReason] AS [ReturnReason],
[MAT].[Description] AS [Description],
[CON].[Name] AS [Name],
[SET].[KeyValue] AS [ApproverMailID],
[HAN].[Name] AS [HandlerName],
[BIH].[User] AS [RequestedUser],
[TOH].[Email] AS [ToMailAddress],
[SPH].[KeyValue] AS [ApproverHandlerCode],
[HAN].[EMAIL] AS [HandlerEmail]
FROM [dbo].[BillHeader] [BIH]
JOIN [dbo].[Matters] [MAT]
ON [MAT].[Code] = [BIH].[Matter]
JOIN [dbo].[Settings] [SET]
ON [SET].KeyName = 'InvoiceApprover'
JOIN [dbo].[Handlers] [HAN]
ON [HAN].[Code] = @HandlerCode
JOIN [dbo].[Handlers] [TOH]
ON [TOH].[Code] =[BIH].[User]
JOIN [dbo].[Contacts] [CON]
ON [CON].[Code] = [MAT].[ClientCode]
LEFT JOIN [dbo].[Settings] [SPH]
ON [SPH].KeyName = 'InvoiceApproverHandler'
WHERE [DraftNo] = @DraftNo
END
IF(@Mode = 'Cheque')
BEGIN
SELECT [MAT].[Code] AS [Code],
[CON].[Name] AS [Name],
[MAT].[Description] As [Description],
[CRH].[ReturnReason] AS [ReturnReason],
[HAN].[Email] AS [ToMailAddress],
[HAN].[Name] AS [HandlerName],
[SET].[KeyValue] AS [ChequeApproverFromMail],
[CRH].[Who] AS [RequestedUser]
FROM [dbo].[ChequeRequisitionHeader] [CRH]
JOIN [dbo].[ChequeRequisitionDetail] [CRD]
ON [CRH].[ReqNo] = [CRD].[ReqNo]
JOIN [dbo].[Matters] [MAT]
ON [MAT].[Code] = [CRD].[Matter]
JOIN [dbo].[Settings] [SET]
ON [SET].[KeyName] = 'ChequeApprover'
JOIN [dbo].[Handlers] [HAN]
ON [HAN].[Code] = @HandlerCode
JOIN [dbo].[Contacts] [CON]
ON [CON].[Code] = [MAT].[ClientCode]
WHERE [CRH].[ReqNo] = @ReqNo
END
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_SamGetCategory', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamGetCategory]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamGetCategory]
AS
/*******************************************************************************************************
* This SP used to Fetch category *
* *
* Stored Procedure Name : [dbo].[KAAS_SamGetCategory] *
* *
* Modification History: *
* 29 July 2021 Revathy D Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
[CGR].[CATTYPE] AS [CatType],
[CGR].[CODE] AS [Code],
[CGR].[DESC$] AS [CodeDescription],
[CGT].[CATEGORYTYPE] AS [CategoryType],
[CGT].[DESCRIPTION] AS [CategoryTypeDescription]
FROM
[dbo].[Category] CGR
LEFT OUTER JOIN
[dbo].[CategoryType] CGT
ON
[CGR].[CATTYPE] = [CGT].[CATEGORYTYPE]
ORDER BY
[CGR].[CATTYPE] ASC,
[CGR].[CODE] ASC
SET NOCOUNT OFF
END
GO
IF EXISTS
(SELECT TOP 1 1
FROM SYS.[objects] SO
WHERE SO.[name] = N'KAAS_SAMGetRowBatchDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMGetRowBatchDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMGetRowBatchDetails]
(
@BatchNo INT,
@KeyId INT,
@HandlerCode VARCHAR(10) = ''
)
AS
/********************************************************************************************************
* Fetches the row details of specific batch *
* *
* Stored Procedure Name : [dbo].[KAAS_SAMGetRowBatchDetails]7423,5039,null *
* *
* Modification History: *
* 2021-01-09 Vinodhkumar M Created *
* 2024-03-04 Ghayathri S V Modified to Fetch Prebilled Outlay value *
* 2024-04-23 Balamurugan.C Modified - Added head batch and headpref column *
**********************************************************************************************************/
BEGIN
SELECT
[BTD].[BatchNo],
[BTD].[Type],
[BTD].[Code],
[BTD].[Pref],
[BTD].[Ref],
[dbo].KEYHM_FNConvertUTCDateToTargetTimeZone(BTD.[Date], @HandlerCode) AS [Date],
[BTD].[Narr],
[BTD].[Matter],
[BTD].[Fee],
[BTD].[Supp],
[BTD].[Value],
[BTD].[VatCode],
[BTD].[VatVal],
[BTD].[Outlay],
[BTD].[Year],
[BTD].[PerNo],
[BTD].[OutlayCode],
[BTD].[HeadBatch],
[BTD].[AllocBatch],
[BTD].[AllocPref],
[BTD].[KeyId] ,
[BTD].[ClientYN],
[BTD].[AllocRef],
[BTD].[AllocValue],
[BTD].[AllocWriteOff],
[BTD].[Payee],
[BTD].[Branch],
[BTD].[ThirdParty],
[BTD].[PayClient],
[BTD].[OnceOffPayment],
[BTD].[ClientCode],
[BTD].[EFTEmailYorN],
[BTD].[CaseAssCode],
[BTD].[PreBilledOutlay],
[BTD].[HeadBatch],
[BTD].[HeadPref]
FROM
[dbo].[BatchDetails] [BTD]
WHERE
[BTD].[BATCHNO] = @BatchNo AND
[BTD].[KEYID]=@KeyId
ORDER BY
[BTD].[BATCHNO] ASC,
[BTD].[PREF] ASC,
[BTD].[KEYID] ASC
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamGroupBGSelectedItems'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamGroupBGSelectedItems]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamGroupBGSelectedItems]
(@ControlID INT = 0,
@OLDGuid VARCHAR(38) = '',
@NEWGuid VARCHAR(38) = '',
@GroupName VARCHAR(38) = '')
AS
/*******************************************************************************************************
* Group selected Billing Guide items *
* *
* Stored Procedure Name : [dbo].[KAAS_SamGroupBGSelectedItems] *
* *
* Modification History: *
* 2021-10-25 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
EXEC [dbo].[ky_NewGroupBG] @ControlID, @GroupName
SELECT @NEWGuid = convert(varchar(38), BGG.[ID])
FROM ( SELECT MAX([SeqNo]) As [SeqNo]
FROM [dbo].[BGGroups] BGMAX
WHERE [BGControlID] = @ControlID) MX
INNER JOIN [dbo].[BGGroups] BGG
on BGG.[BGControlID] = @ControlID
AND BGG.[SeqNo] = MX.[SeqNo]
EXEC [dbo].[ky_MoveGroupBG] @ControlID, @NEWGuid, @OLDGuid
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamGroupBGSelectedNarrative'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamGroupBGSelectedNarrative]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamGroupBGSelectedNarrative]
(@ControlID INT = 0,
@GroupIDString VARCHAR(38))
AS
/*******************************************************************************************************
* group select Billing Guide to narative *
* *
* Stored Procedure Name : [dbo].[KAAS_SamGroupBGSelectedNarrative] *
* *
* Modification History: *
* 2021-10-25 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
EXEC [dbo].[ky_GroupGroupNARRBG] @ControlID, @GroupIDString
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMInitiateBankRec'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMInitiateBankRec]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMInitiateBankRec] (
@RECNO INT,
@BANKAC VARCHAR(20),
@RECDATE DATETIME,
@LASTRECNO INT)
AS
/*************************************************************************************************************
* *
* [dbo].[KAAS_SAMInitiateBankRec] *
* *
* Description : This procedure is used to create a new bank reconciliation *
* Copied From : [dbo].[ky_NETInitiateBankRec] *
* *
* Modification history: *
* 2022-02-11 Balamurugan - Created *
*************************************************************************************************************/
BEGIN
IF EXISTS (SELECT TOP 1 1
FROM [BankRecHistory] AS [BRH]
WHERE [BRH].[RECNO] = @RECNO
AND [BRH].[BANKAC] = @BANKAC)
BEGIN
RETURN
END
-- If we come across any errors then dont keep any changes
BEGIN TRY
-- Pick up outstandings from before recs
INSERT INTO [dbo].[BankRecTransactions] (
[BANKAC],
[TYPE],
[DATE],
[REF],
[BATCH],
[PREF],
[NARR],
[VALUE],
[OSRECNO],
[RECNO],
[TICKED],
[NomTransId])
SELECT [BROT].[BANKAC],
[BROT].[TYPE],
[BROT].[DATE],
[BROT].[REF],
[BROT].[BATCH],
[BROT].[PREF],
[BROT].[NARR],
[BROT].[VALUE],
-1,
@RECNO,
'',
[BROT].[RECORDID]
FROM [dbo].[BankRecOutstandingTrans] AS [BROT]
WHERE [BROT].[BANKAC] = @BANKAC
DECLARE @TRANS TABLE (
[RecordID] INT PRIMARY KEY,
[Type] VARCHAR(1))
-- Find list of transactions and figure out whether its a receipt or payment
INSERT INTO @TRANS (
[RecordID],
[Type])
SELECT [NML].[RECORDID],
CASE WHEN [BAH].[BATCHNO] IS NULL
THEN 'P' -- If no BatchH found then this is an EFT batch
WHEN [BAH].[TYPE] IN ('T', 'R')
AND [NML].[CODE] = [BAH].[CLIENTBANK]
THEN 'P'
WHEN [BAH].[TYPE] NOT IN ('P', 'R', 'T')
OR [NML].[BATCHNO] = 0
THEN CASE WHEN [NML].[VALUE] < 0
THEN 'P'
ELSE 'R' END
WHEN [BAH].[TYPE] = 'T'
THEN 'R'
ELSE [BAH].[TYPE] END AS [Type]
FROM [dbo].[NominalLedger] AS [NML]
LEFT OUTER JOIN [dbo].[BatchH] AS [BAH]
ON [NML].[BATCHNO] = [BAH].[BATCHNO]
LEFT OUTER JOIN [dbo].[BankRecTransactions] AS [BRT]
ON [BRT].[NomTransId] = [NML].[RECORDID]
AND [BRT].[BATCH] <> 0
WHERE [NML].[RECNO] <= 0
AND [NML].[CODE] = @BANKAC
AND [NML].[DATE] <= @RECDATE
AND [NML].[BATCHNO] <> 0
AND [BRT].[RECORDID] IS NULL -- Dont bring the same items in again
INSERT INTO [dbo].[BankRecTransactions] (
[BANKAC],
[TYPE],
[DATE],
[REF],
[BATCH],
[PREF],
[NARR],
[VALUE],
[OSRECNO],
[RECNO],
[TICKED],
[NomTransId])
SELECT @BANKAC,
[TMP].[Type],
[NML].[DATE],
LEFT([NML].[REF], 8),
[NML].[BATCHNO],
[NML].[PREF],
LEFT([NML].[NARR], 60),
CASE WHEN [TMP].[Type] = 'P'
THEN [NML].[VALUE] * -1
ELSE [NML].[VALUE] END AS [VALUE],
[NML].[RECNO] AS [OSRECNO],
@RECNO,
'' AS [TICKED],
[NML].[RECORDID]
FROM @TRANS AS [TMP]
INNER JOIN [dbo].[NominalLedger] AS [NML]
ON [TMP].[RecordID] = [NML].[RECORDID]
DECLARE @OSLODGE DECIMAL(19, 2)
DECLARE @OSCHEQUE DECIMAL(19, 2)
DECLARE @LODGEMENTS DECIMAL(19, 2)
DECLARE @TOTCHEQUES DECIMAL(19, 2)
SELECT @OSCHEQUE = SUM(CASE WHEN [BRT].[TYPE] = 'P'
THEN [BRT].[VALUE]
ELSE 0 END),
@OSLODGE = SUM(CASE WHEN [BRT].[TYPE] = 'R'
THEN [BRT].[VALUE]
ELSE 0 END),
@LODGEMENTS = SUM(CASE WHEN [BRT].[TYPE] = 'R'
AND [BRT].[OSRECNO] = 0
THEN [BRT].[VALUE]
ELSE 0 END),
@TOTCHEQUES = SUM(CASE WHEN [BRT].[TYPE] = 'P'
AND [BRT].[OSRECNO] = 0
THEN [BRT].[VALUE]
ELSE 0 END)
FROM [dbo].[BankRecTransactions] AS [BRT]
WHERE [BRT].[BANKAC] = @BANKAC
DECLARE @OPENBAL DECIMAL(19, 2)
SELECT @OPENBAL = [BRH].[CLOSINGBAL]
FROM [dbo].[BankRecHistory] AS [BRH]
WHERE [BRH].[RECNO] = @LASTRECNO
AND [BRH].[BANKAC] = @BANKAC
SELECT @OPENBAL = ISNULL(@OPENBAL, 0),
@OSCHEQUE = ISNULL(@OSCHEQUE, 0),
@OSLODGE = ISNULL(@OSLODGE, 0),
@LODGEMENTS = ISNULL(@LODGEMENTS, 0),
@TOTCHEQUES = ISNULL(@TOTCHEQUES, 0)
INSERT INTO [dbo].[BankRecHistory] (
[RECNO],
[BANKAC],
[RECDATE],
[DATECOMPLETE],
[LASTREC],
[CURRENCY],
[OPENINGBALANCE],
[LODGEMENTS],
[CHEQUES],
[OSLODGEMENTS],
[OSCHEQUES],
[BANKBAL],
[CLOSINGBAL],
[DIFF])
SELECT @RECNO,
@BANKAC,
@RECDATE,
NULL,
@LASTRECNO,
'E',
@OPENBAL,
@LODGEMENTS,
@TOTCHEQUES,
@OSLODGE,
@OSCHEQUE,
0,
@OPENBAL + @LODGEMENTS - @TOTCHEQUES,
@OPENBAL + @LODGEMENTS - @TOTCHEQUES - @OSLODGE + @OSCHEQUE
UPDATE [NML]
SET [NML].[RECNO] = @RECNO * -1
FROM [dbo].[NominalLedger] AS [NML]
INNER JOIN @TRANS AS [TMP]
ON [TMP].[RecordID] = [NML].[RECORDID]
END TRY
BEGIN CATCH
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_SamInsertKPIParamerter', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamInsertKPIParamerter]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamInsertKPIParamerter] (
@ID INT,
@StartOfYear DATETIME,
@FromDate DATETIME,
@ToDate DATETIME,
@Period INT,
@Year INT)
AS
/*******************************************************************************************************
* This procedure is used to update the KPI Parameters *
* *
* Stored Procedure Name : [dbo].[KAAS_SamInsertKPIParamerter] *
* *
* Modification History : *
* 2021-08-03 Revathy D Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF ISNULL(@ID, 0) = 0 AND NOT EXISTS(SELECT TOP 1 1 FROM [dbo].[KPIParameters])
BEGIN
INSERT INTO [dbo].[KPIParameters] (
[StartOfYear],
[FromDate],
[ToDate],
[Period],
[Year])
SELECT @StartOfYear,
@FromDate,
@ToDate,
@Period,
@Year
END
ELSE
BEGIN
UPDATE [dbo].[KPIParameters]
SET [StartOfYear] = @StartOfYear,
[FromDate] = @FromDate,
[ToDate] = @ToDate,
[Period] = @Period,
[Year] = @Year
WHERE [ID] = @ID
END
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = N'KAAS_SAMPeriodEndCheck'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMPeriodEndCheck]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMPeriodEndCheck](
@NEXTPERIODEND DATETIME, /* Next period end date, e.g. 31/01/2020 */
@USER VARCHAR(10), /* Log in code for user calling this proc */
@IGNOREUNALLOC BIT)
AS
/*******************************************************************************************
* KAAS_SAMPeriodEndCheck
* This procedure checks if a period end can be completed. It returns a list of errors in a
* single text column so that Clarion can handle this list and show the user
* This also returns 1 if everything is okay and 0 if not
*
* Modification History;
* 2024-01-12 Revathy.D Created
*
*******************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @CONTINUE BIT
SET @CONTINUE = 1
DECLARE @RESULT TABLE ([Error] VARCHAR(2000),
[ErrorCode] VARCHAR(100) )
DECLARE @YEAR INT
DECLARE @CURPER INT
DECLARE @TODAY DATETIME
SELECT TOP 1
@YEAR = [CON].[YEAR],
@CURPER = [CON].[CURPER]
FROM [dbo].[control] AS [CON]
SELECT @CURPER = ISNULL(@CURPER, 0),
@YEAR = ISNULL(@YEAR, 0),
@CONTINUE = 1,
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
/* Check for unallocated receipts */
IF ISNULL((SELECT COUNT(1)
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE
[DTL].[YEAR] = @YEAR
AND [DTL].[PER] = @CURPER
AND [DTL].[TYPE] = 'R'
AND [DTL].[OSVALUE] <> 0), 0) > 0
BEGIN
IF(@IGNOREUNALLOC = 1)
BEGIN
INSERT INTO [dbo].[Log] (
[DATE],
[EVENT],
[USER])
VALUES (@TODAY,
'Period-end Unallocated Cash - accepted by user',
@USER)
END
ELSE
BEGIN
INSERT INTO @RESULT VALUES ('You have Unallocated Receipts|VAT on Cash Receipts basis requires there to be NONE
|If you are on Cash Receipts basis and you continue this process|the consequences will NOT BE COVERED by your support contract
|Continue with Period-end?','MSG')
END
SET @CONTINUE = 0
END
SELECT *
FROM @RESULT
RETURN @CONTINUE
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = N'KAAS_SAMPeriodEndProc'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMPeriodEndProc]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMPeriodEndProc] (
@NEXTPERIODEND DATETIME, /* Next period end date, e.g. 31/01/2020 */
@USER VARCHAR(10), /* Log in code for user calling this proc */
@IGNOREUNALLOC BIT)
AS
/*******************************************************************************************
* KAAS_SAMPeriodEndProc
* This procedure checks if a period end can be completed and then runs the year end.
*
* Modification History;
* 2024-01-12 Revathy.D Created *
*******************************************************************************************/
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @TRANCOUNT INT
SET @TRANCOUNT = @@TRANCOUNT
IF @TRANCOUNT = 0
BEGIN TRANSACTION
ELSE
SAVE TRANSACTION [PeriodEndTransaction]
BEGIN TRY
DECLARE @RESULT TABLE ([Error] VARCHAR(2000),
[ErrorCode] VARCHAR(100))
INSERT INTO @RESULT ([Error],[ErrorCode])
EXEC [dbo].[KAAS_SAMPeriodEndCheck] @NEXTPERIODEND, @USER, @IGNOREUNALLOC
/* If there any errors then quit */
IF ISNULL((SELECT COUNT(1) FROM @RESULT), 0) > 0
BEGIN
SELECT *
FROM @RESULT
IF @TRANCOUNT = 0
COMMIT TRANSACTION
RETURN
END
DECLARE @YEAR INT
DECLARE @CURPER INT
DECLARE @TODAY DATETIME
SELECT TOP 1
@YEAR = [CON].[YEAR],
@CURPER = ISNULL([CON].[CURPER],0)
FROM [dbo].[control] AS [CON]
SELECT @YEAR = ISNULL(@YEAR, 0),
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
UPDATE [MAT]
SET [MAT].[DebtBalFwd] = 0,
[MAT].[OutlayBalFwd] = 0,
[MAT].[ClientBalFwd] = 0,
[MAT].[ClientCurBalFwd] = 0,
[MAT].[ClientDepBalFwd] = 0,
[MAT].[CurDebtBalFwd] = 0,
[MAT].[CurOutlayBalFwd] = 0,
[MAT].[CurClientCBalFwd] = 0,
[MAT].[CurClientDBalFwd] = 0
FROM [dbo].[matters] AS [MAT]
UPDATE [SUP]
SET [SUP].[BALANCEFWD] = 0
FROM [dbo].[Suppliers] AS [SUP]
UPDATE [NOM]
SET [NOM].[MONTH2] = CASE WHEN @CURPER = 1
THEN [NOM].[BALANCEFWD] ELSE [NOM].[MONTH2]
END,
[NOM].[MONTH3] = CASE WHEN @CURPER = 2
THEN [NOM].[BALANCEFWD] ELSE [NOM].[MONTH3]
END,
[NOM].[MONTH4] = CASE WHEN @CURPER = 3
THEN [NOM].[BALANCEFWD] ELSE [NOM].[MONTH4]
END,
[NOM].[MONTH5] = CASE WHEN @CURPER = 4
THEN [NOM].[BALANCEFWD] ELSE [NOM].[MONTH5]
END,
[NOM].[MONTH6] = CASE WHEN @CURPER = 5
THEN [NOM].[BALANCEFWD] ELSE [NOM].[MONTH6]
END,
[NOM].[MONTH7] = CASE WHEN @CURPER = 6
THEN [NOM].[BALANCEFWD] ELSE [NOM].[MONTH7]
END,
[NOM].[MONTH8] = CASE WHEN @CURPER = 7
THEN [NOM].[BALANCEFWD] ELSE [NOM].[MONTH8]
END,
[NOM].[MONTH9] = CASE WHEN @CURPER = 8
THEN [NOM].[BALANCEFWD] ELSE [NOM].[MONTH9]
END,
[NOM].[MONTH10]= CASE WHEN @CURPER = 9
THEN [NOM].[BALANCEFWD] ELSE [NOM].[MONTH10]
END,
[NOM].[MONTH11]= CASE WHEN @CURPER = 10
THEN [NOM].[BALANCEFWD] ELSE [NOM].[MONTH11]
END,
[NOM].[MONTH12]= CASE WHEN @CURPER = 11
THEN [NOM].[BALANCEFWD] ELSE [NOM].[MONTH12]
END,
[NOM].[BALANCEFWD] = 0,
[NOM].[CURRENCYBALFWD] = 0
FROM [dbo].[Nominal] AS [NOM]
UPDATE [CON]
SET [CON].[P1BATCH] = CASE WHEN @CURPER = 1
THEN [CON].[LASTBATCH] ELSE [CON].[P1BATCH]
END,
[CON].[P2BATCH] = CASE WHEN @CURPER = 2
THEN [CON].[LASTBATCH] ELSE [CON].[P2BATCH]
END,
[CON].[P3BATCH] = CASE WHEN @CURPER = 3
THEN [CON].[LASTBATCH] ELSE [CON].[P3BATCH]
END,
[CON].[P4BATCH] = CASE WHEN @CURPER = 4
THEN [CON].[LASTBATCH] ELSE [CON].[P4BATCH]
END,
[CON].[P5BATCH] = CASE WHEN @CURPER = 5
THEN [CON].[LASTBATCH] ELSE [CON].[P5BATCH]
END,
[CON].[P6BATCH] = CASE WHEN @CURPER = 6
THEN [CON].[LASTBATCH] ELSE [CON].[P6BATCH]
END,
[CON].[P7BATCH] = CASE WHEN @CURPER = 7
Then [CON].[LASTBATCH] ELSE [CON].[P7BATCH]
END,
[CON].[P8BATCH] = CASE WHEN @CURPER = 8
THEN [CON].[LASTBATCH] ELSE [CON].[P8BATCH]
END,
[CON].[P9BATCH] = CASE WHEN @CURPER = 9
THEN [CON].[LASTBATCH] ELSE [CON].[P9BATCH]
END,
[CON].[P10BATCH]= CASE WHEN @CURPER = 10
THEN [CON].[LASTBATCH] ELSE [CON].[P10BATCH]
END,
[CON].[P11BATCH]= CASE WHEN @CURPER = 11
THEN [CON].[LASTBATCH] ELSE [CON].[P11BATCH]
END,
[CON].[P12BATCH]= CASE WHEN @CURPER = 12
THEN [CON].[LASTBATCH] ELSE [CON].[P12BATCH]
END,
[CON].[CURPER] = @CURPER+1,
[CON].[PERIODEND]= DATEDIFF(DAY, '18001228', @NEXTPERIODEND)
FROM [dbo].[Control] [CON]
INSERT INTO [dbo].[Log] (
[DATE],
[EVENT],
[USER])
SELECT @TODAY,
'Period End ' + CONVERT(VARCHAR(24), GETDATE(), 113),
@USER
IF @TRANCOUNT = 0
COMMIT TRANSACTION
END TRY
BEGIN CATCH
DECLARE @ERROR INT
DECLARE @MESSAGE VARCHAR(4000)
DECLARE @XSTATE INT
SELECT @ERROR = ERROR_NUMBER(),
@MESSAGE = ERROR_MESSAGE(),
@XSTATE = XACT_STATE()
DECLARE @ERRMSG VARCHAR(2000)
SET @ERRMSG = '0 - An error occurred. Please contact support.' +
CHAR(13) + CHAR(10) +
'On line ' + CONVERT(VARCHAR(10), ERROR_LINE()) + ': ' +
CHAR(13) + CHAR(10) +
@MESSAGE
SELECT @ERRMSG,'ERR'
IF @TRANCOUNT = 0
BEGIN
PRINT(3)
ROLLBACK TRANSACTION
END
ELSE
BEGIN
IF @XSTATE <> -1
BEGIN
ROLLBACK TRANSACTION [PeriodEndTransaction]
END
END
RAISERROR(@ERRMSG, 16, 1, @ERROR, @MESSAGE)
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMRefreshBankRec'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMRefreshBankRec]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMRefreshBankRec] (
@RECNO INT,
@BANKAC VARCHAR(20))
AS
/*************************************************************************************************************
* *
* [dbo].[KAAS_SAMRefreshBankRec] *
* *
* Description: This procedure is used to get new transactions and put them into a bank rec in progress *
* Copied From: [dbo].[ky_NETRefreshBankRec] *
* *
* Modification history: *
* 2022-02-11 Balamurugan Created *
*************************************************************************************************************/
BEGIN
IF NOT EXISTS (SELECT TOP 1 1
FROM [BankRecHistory] AS [BRH]
WHERE [BRH].[RECNO] = @RECNO
AND [BRH].[BANKAC] = @BANKAC)
BEGIN
RETURN
END
DECLARE @RECDATE DATETIME
SELECT @RECDATE = [BRH].[RECDATE]
FROM [dbo].[BankRecHistory] AS [BRH]
WHERE [BRH].[RECNO] = @RECNO
AND [BRH].[BANKAC] = @BANKAC
DECLARE @TRANS TABLE (
[RecordID] INT PRIMARY KEY,
[Type] VARCHAR(1))
-- Find list of transactions and figure out whether its a receipt or payment
INSERT INTO @TRANS (
[RecordID],
[Type])
SELECT [NML].[RECORDID],
CASE WHEN [BAH].[BATCHNO] IS NULL
THEN 'P' -- If no BatchH found then this is an EFT batch
WHEN [BAH].[TYPE] IN ('T', 'R')
AND [NML].[CODE] = [BAH].[CLIENTBANK]
THEN 'P'
WHEN [BAH].[TYPE] NOT IN ('P', 'R', 'T')
OR [BAH].[BATCHNO] = 0
THEN CASE WHEN [NML].[VALUE] < 0
THEN 'P'
ELSE 'R' END
WHEN [BAH].[TYPE] = 'T'
THEN 'R'
ELSE [BAH].[TYPE] END AS [Type]
FROM [dbo].[NominalLedger] AS [NML]
LEFT OUTER JOIN [dbo].[BatchH] AS [BAH]
ON [NML].[BATCHNO] = [BAH].[BATCHNO]
LEFT OUTER JOIN [dbo].[BankRecTransactions] AS [BRT]
ON [BRT].[NomTransId] = [NML].[RECORDID]
AND [BRT].[BATCH] <> 0
WHERE [NML].[RECNO] = 0
AND [NML].[CODE] = @BANKAC
AND [NML].[DATE] <= @RECDATE
AND [NML].[BATCHNO] <> 0
AND [BRT].[RECORDID] IS NULL -- Dont bring the same items in again
INSERT INTO [dbo].[BankRecTransactions] (
[BANKAC],
[TYPE],
[DATE],
[REF],
[BATCH],
[PREF],
[NARR],
[VALUE],
[OSRECNO],
[RECNO],
[TICKED],
[NomTransId])
SELECT @BANKAC,
[TMP].[Type],
[NML].[DATE],
LEFT([NML].[REF], 8),
[NML].[BATCHNO],
[NML].[PREF],
LEFT([NML].[NARR], 60),
CASE WHEN [TMP].[Type] = 'P'
THEN [NML].[VALUE] * -1
ELSE [NML].[VALUE] END AS [VALUE],
0 AS [OSRECNO],
@RECNO,
'' AS [TICKED],
[NML].[RECORDID]
FROM @TRANS AS [TMP]
INNER JOIN [dbo].[NominalLedger] AS [NML]
ON [TMP].[RecordID] = [NML].[RECORDID]
UPDATE [NML]
SET [NML].[RECNO] = @RECNO * -1
FROM [dbo].[NominalLedger] AS [NML]
INNER JOIN @TRANS AS [TMP]
ON [TMP].[RecordID] = [NML].[RECORDID]
END
GO
IF OBJECT_ID(N'KAAS_SamSaveCategoryContact',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_SamSaveCategoryContact]
GO
CREATE PROCEDURE [dbo].[KAAS_SamSaveCategoryContact]
(@RecordId INT = 0,
@CategoryType VARCHAR(6) = '',
@Category VARCHAR(10) = '',
@Date DATE = NULL,
@FieldValue1 VARCHAR(60) = '',
@FieldValue2 VARCHAR(60) = '',
@FieldValue3 VARCHAR(60) = '',
@FieldValue4 VARCHAR(60) = '',
@FieldValue5 VARCHAR(60) = '',
@FieldValue6 VARCHAR(60) = '',
@FieldValue7 VARCHAR(60) = '',
@FieldValue8 VARCHAR(60) = '',
@FieldValue9 VARCHAR(60) = '',
@FieldValue10 VARCHAR(60) = '',
@ContactCode VARCHAR(8) = '')
AS
/*******************************************************************************************************
* Save contact category code and type *
* *
* Stored Procedure Name : [dbo].[KAAS_SamSaveCategoryContact] *
* *
* Modification History: *
* 2021-11-01 Vinodhkumar M Created *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
IF(@RecordId != 0)
BEGIN
UPDATE ContactCategories
SET
CATEGORYTYPE = @CategoryType,
CATEGORY = @Category,
DATE = @Date,
FIELDVALUE1 = @FieldValue1,
FIELDVALUE2 = @FieldValue2,
FIELDVALUE3 = @FieldValue3,
FIELDVALUE4 = @FieldValue4,
FIELDVALUE5 = @FieldValue5,
FIELDVALUE6 = @FieldValue6,
FIELDVALUE7 = @FieldValue7,
FIELDVALUE8 = @FieldValue8,
FIELDVALUE9 = @FieldValue9,
FIELDVALUE10 = @FieldValue10
WHERE
RECORDID = @RecordId
END
ELSE
BEGIN
INSERT INTO ContactCategories(
CONTACT,
CATEGORYTYPE,
CATEGORY,
DATE,
FIELDVALUE1,
FIELDVALUE2,
FIELDVALUE3,
FIELDVALUE4,
FIELDVALUE5,
FIELDVALUE6,
FIELDVALUE7,
FIELDVALUE8,
FIELDVALUE9,
FIELDVALUE10)
VALUES(
@ContactCode,
@CategoryType,
@Category,
@Date,
@FieldValue1,
@FieldValue2,
@FieldValue3,
@FieldValue4,
@FieldValue5,
@FieldValue6,
@FieldValue7,
@FieldValue8,
@FieldValue9,
@FieldValue10)
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'[KAAS_SAMSelectContacts]',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_SAMSelectContacts]
GO
CREATE PROCEDURE
[dbo].[KAAS_SAMSelectContacts]
(
@PageNumber INT = 1,
@PageSize INT = 20000,
@Search VARCHAR(500) = '',
@SortBy VARCHAR(100) = 'Code',
@SortOrder VARCHAR(100) = 'ASC',
@Handler VARCHAR(20) = ''
)
AS
/************************************************************************************
* This procedure is used To Fetch Contacts for Browse Contacts page *
* *
* Stored Procedure Name : [dbo].[KAAS_SAMSelectContacts] *
* *
* Modification History : *
* 2024-03-13 Vignesh M Created
* 2024-03-14 Vignesh M Modified - As per Client suggestion
Handler privileges has been removed
************************************************************************************/
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql = 'SELECT DISTINCT
ROW_NUMBER() OVER(ORDER BY [CTC].CODE ASC) AS [Id],
RTRIM(ISNULL([CTC].[Code], '''')) AS [Code],
RTRIM(ISNULL([CTC].[Name], '''')) AS [Name],
MAX([RML].[DateField]) AS [LastAccessed],
[dbo].[KAAS_FN_RemoveSpuriousWhitespace](RTRIM(ISNULL([CTC].[Address], '''')), 200) AS [Address],
[dbo].[KAAS_FN_RemoveSpuriousWhitespace](RTRIM(ISNULL([CTC].[OtherAddress], '''')), 200) AS [OtherAddress],
[dbo].[ky_HeuristicMultiPhoneNo](RTRIM(ISNULL([CTC].[Address], '''')), [CTC].[Tel]) AS [PhoneNo],
[dbo].[ky_HeuristicMultiPhoneNo](RTRIM(ISNULL([CTC].[Address], '''')), [CTC].[Fax]) AS [FaxNo],
RTRIM(ISNULL([CTC].[Salut], '''')) AS [Salut],
RTRIM(ISNULL([CTC].[email], '''')) AS [email],
CASE WHEN ISNULL([CTC].[Approved], 0) = 1 THEN 1 ELSE 0 END AS [Approved],
CASE WHEN RTRIM(ISNULL([CTC].[ChargeOutRateInd], '''')) = ''Y'' THEN ''Y'' ELSE ''N'' END AS [ChargeOutRateInd],
[CTC].[CompMatter]
FROM [dbo].[contacts] [CTC]
LEFT JOIN [dbo].[Matters] [SL] ON [SL].[ClientCode] = [CTC].[Code]
LEFT JOIN [dbo].[RecentMatterList] [RML] ON [SL].[Code] = [RML].[MATTER] ' +
'WHERE 1 = 1' +
'AND (
[CTC].[Code] LIKE' + '''%' + @Search + '%' + '''' +
'OR
[CTC].[Name] LIKE ' + '''%' + @Search + '%' + '''' +
'OR
[CTC].[Address] LIKE ' + '''%' + @Search + '%' + '''' +
'OR
[CTC].[OtherAddress] LIKE ' + '''%' + @Search + '%' + '''' +
'OR
[CTC].[Tel] LIKE ' + '''%' + @Search + '%' + '''' +
'OR
[CTC].[Fax] LIKE ' + '''%' + @Search + '%' + '''' +
'OR
[CTC].[Salut] LIKE ' + '''%' + @Search + '%' + '''' +
'OR
[CTC].[email] LIKE ' + '''%' + @Search + '%' + '''' +
'OR
[CTC].[Approved] LIKE ' + '''%' + @Search + '%' + '''' +
'OR
[CTC].[ChargeOutRateInd] LIKE ' + '''%' + @Search + '%' + '''' +
'OR
[CTC].[CompMatter] LIKE ' + '''%' + @Search + '%' + '''' +
')
GROUP BY [CTC].[Code]
,[CTC].[Name]
,[CTC].[Address]
,[CTC].[OtherAddress]
,[CTC].[Tel]
,[CTC].[Fax]
,[CTC].[Salut]
,[CTC].[email]
,[CTC].[Approved]
,[CTC].[ChargeOutRateInd]
,[CTC].[CompMatter]
ORDER BY ' + @SortBy + ' ' + @SortOrder + ' ' +
'OFFSET ' + CAST(@offset AS NVARCHAR(10)) + ' ROWS ' +
'FETCH NEXT ' + CAST(@PageSize AS NVARCHAR(10)) + ' ROWS ONLY';
PRINT @sql
EXEC Sp_executesql @sql
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SamUnGroupBillingGuide'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SamUnGroupBillingGuide]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SamUnGroupBillingGuide]
(@ControlID INT = 0,
@GroupIDString VARCHAR(38))
AS
/*******************************************************************************************************
* UnGroup all Billing Guide *
* *
* Stored Procedure Name : [dbo].[KAAS_SamUnGroupBillingGuide] *
* *
* Modification History: *
* 2021-10-25 Vinodhkumar M Created *
*******************************************************************************************************/
BEGIN
EXEC [dbo].[ky_UngroupGUIDBG] @ControlID, @GroupIDString
EXEC [dbo].[ky_ReorderGroupBG] @ControlID
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMUpdateMatterTimeBalance'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMUpdateMatterTimeBalance]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMUpdateMatterTimeBalance]
(
@matter VARCHAR(20)
)
AS
/*******************************************************************************************************
* Update Matter Time Balance *
* *
* Stored Procedure Name : [dbo].[KAAS_SAMUpdateMatterTimeBalance] *
* Copied From : [dbo].[ky_WDUpdateMatterTimeBalance] *
* *
* Modification History: *
* 2021-11-12 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
UPDATE MAT
SET MAT.[TimeBal] = TTL.[TOTALTIME],
MAT.[ChargeBal] = TTL.[TOTALCHARGED]
FROM [dbo].[matters] MAT
cross apply (SELECT IsNull(SUM(CASE WHEN IsNull(TIE.[CHARGE], 0) - IsNull(TIE.[BilledAmount], 0) <> 0
THEN IsNull(TIE.[time], 0)
ELSE 0 END), 0) AS [TOTALTIME],
IsNull(SUM(IsNull(TIE.[CHARGE], 0) - IsNull(TIE.[BilledAmount], 0)), 0) AS [TOTALCHARGED]
FROM [dbo].[TimeEntry] TIE
WHERE TIE.[MATTER] = MAT.[Code]
AND RTRIM(ISNULL(TIE.[REC_IRR], '')) <> 'N'
AND RTRIM(ISNULL(TIE.[TimeorCharge], '')) <> 'B') TTL
WHERE MAT.[Code] = @Matter
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMYearEndCheck'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMYearEndCheck]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMYearEndCheck] (
@YEARENDDATE DATETIME, /* Year end date, e.g. 31/12/2019 */
@SUBDATEFROM DATETIME, /* Balance forward date, e.g. 01/01/2020 */
@NEXTPERIODEND DATETIME, /* Next period end date, e.g. 31/01/2020 */
@UPDATEALLOCS VARCHAR(1), /* Check unallocated receipts, typically set to 'Y' */
@USER VARCHAR(10), /* Log in code for user calling this proc */
@IGNOREUNALLOC BIT) /* Set to 1 to ignore unallocated receipts, this will be logged */
AS
/*******************************************************************************************
* KAAS_SAMYearEndCheck
* This procedure checks if a year end can be completed. It returns a list of errors in a
* single text column so that Clarion can handle this list and show the user
* This also returns 1 if everything is okay and 0 if not
*
* Modification History;
* 2024-01-24 Revathy.D Copied from [dbo].[ky_NETYearEndCheck] *
*******************************************************************************************/
BEGIN
SET NOCOUNT ON
DECLARE @CONTINUE BIT
SET @CONTINUE = 1
DECLARE @RESULT TABLE ([Error] VARCHAR(2000))
DECLARE @YEAR INT
DECLARE @CURPER INT
DECLARE @PL VARCHAR(10)
DECLARE @RECINSTALLED VARCHAR(1)
DECLARE @BADNOM VARCHAR(2000)
DECLARE @TIMECOSTING VARCHAR(1)
DECLARE @TODAY DATETIME
DECLARE @EICONVERT DECIMAL(19, 6)
SELECT TOP 1
@YEAR = [CON].[YEAR],
@CURPER = [CON].[CURPER],
@RECINSTALLED = [CON].[RECINSTALLED],
@PL = [CON].[PL],
@TIMECOSTING = [CON].[TIMECOSTING],
@EICONVERT = [CON].[EICONVERT]
FROM [dbo].[control] AS [CON]
SELECT @CURPER = ISNULL(@CURPER, 0),
@YEAR = ISNULL(@YEAR, 0),
@CONTINUE = 1,
@RECINSTALLED = ISNULL(@RECINSTALLED, ''),
@TIMECOSTING = ISNULL(@TIMECOSTING, ''),
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0),
@EICONVERT = ISNULL(@EICONVERT, 1)
IF @YEARENDDATE IS NULL
BEGIN
INSERT INTO @RESULT VALUES ('1 - Year end date is not set')
SET @CONTINUE = 0
END
IF ISNULL(@CURPER, 0) < 12
BEGIN
INSERT INTO @RESULT VALUES ('2 - Period is not 12')
SET @CONTINUE = 0
END
/* Check for period 13 entries that have a date <= year end date */
IF ISNULL((SELECT COUNT(1)
FROM [dbo].[NominalLedger] AS [NML]
WHERE [NML].[YEAR] = @YEAR
AND [NML].[PER] = 13
AND [NML].[DATE] <= @YEARENDDATE), 0) > 0
BEGIN
INSERT INTO @RESULT VALUES ('3 - Entries in period 13 dated before year end date')
SET @CONTINUE = 0
END
/* Check for unallocated receipts */
IF ISNULL((SELECT COUNT(1)
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[YEAR] = @YEAR
AND [DTL].[PER] = @CURPER
AND [DTL].[TYPE] = 'R'
AND [DTL].[OSVALUE] <> 0), 0) > 0
BEGIN
IF @IGNOREUNALLOC = 1
BEGIN
INSERT INTO [dbo].[Log] (
[DATE],
[EVENT],
[USER])
VALUES (@TODAY,
'Year-end Unallocated Cash - accepted by user',
@USER)
END
ELSE
BEGIN
INSERT INTO @RESULT VALUES ('4 - Unallocated receipts')
SET @CONTINUE = 0
END
END
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[Nominal] AS [NOM]
WHERE ISNULL(LTRIM(RTRIM([NOM].[PB])), '') = '')
BEGIN
SET @BADNOM = NULL
SELECT @BADNOM = CASE WHEN @BADNOM IS NOT NULL
THEN @BADNOM + ', '
ELSE '' END +
[NOM].[Code]
FROM [dbo].[Nominal] AS [NOM]
WHERE ISNULL(LTRIM(RTRIM([NOM].[PB])), '') = ''
INSERT INTO @RESULT VALUES ('5 - Nominals not marked as Profit & Loss or Balance Sheet: ' + @BADNOM)
SET @CONTINUE = 0
END
IF @RECINSTALLED = 'Y'
BEGIN
/* Check if any banks are not reconciled */
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[Nominal] AS [NOM]
INNER JOIN [dbo].[NominalLedger] AS [NML]
ON [NOM].[CODE] = [NML].[CODE]
WHERE [NOM].[TYPE] = 'BANK'
AND [NML].[DATE] <= @YEARENDDATE
AND [NML].[RECNO] = 0)
BEGIN
SET @BADNOM = NULL
SELECT @BADNOM = CASE WHEN @BADNOM IS NOT NULL
THEN @BADNOM + ', '
ELSE '' END +
[NOM].[CODE]
FROM [dbo].[Nominal] AS [NOM]
INNER JOIN (SELECT [NML].[CODE]
FROM [dbo].[NominalLedger] AS [NML]
WHERE [NML].[RECNO] = 0
AND [NML].[DATE] <= @YEARENDDATE
GROUP BY [NML].[CODE]) AS [NML]
ON [NML].[CODE] = [NOM].[CODE]
WHERE [NOM].[TYPE] ='BANK'
INSERT INTO @RESULT VALUES ('6 - Bank reconcilliation for bank accounts has not been completed: ' + @BADNOM)
SET @CONTINUE = 0
END
/* Check if any bank recs are incomplete */
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BankRecHistory] AS [BRH]
WHERE [BRH].[DATECOMPLETE] IS NULL)
BEGIN
SET @BADNOM = NULL
SELECT @BADNOM = CASE WHEN @BADNOM IS NOT NULL
THEN @BADNOM + ', '
ELSE '' END +
[NOM].[CODE]
FROM [dbo].[Nominal] AS [NOM]
INNER JOIN (SELECT [BRH].[BANKAC]
FROM [dbo].[BankRecHistory] AS [BRH]
WHERE [BRH].[DATECOMPLETE] IS NULL
GROUP BY [BRH].[BANKAC]) AS [BRH]
ON [BRH].[BANKAC] = [NOM].[CODE]
INSERT INTO @RESULT VALUES ('7 - Bank recs for the following banks are not complete: ' + @BADNOM)
SET @CONTINUE = 0
END
END
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[Nominal] AS [NOM]
WHERE [NOM].[CODE] = @PL)
BEGIN
INSERT INTO @RESULT VALUES ('8 - P&L account not specified in the system options')
SET @CONTINUE = 0
END
SELECT *
FROM @RESULT
RETURN @CONTINUE
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SAMYearEndProc'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SAMYearEndProc]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SAMYearEndProc] (
@YEARENDDATE DATETIME, /* Year end date, e.g. 31/12/2019 */
@SUBDATEFROM DATETIME, /* Balance forward date, e.g. 01/01/2020 */
@NEXTPERIODEND DATETIME, /* Next period end date, e.g. 31/01/2020 */
@UPDATEALLOCS VARCHAR(1), /* Check unallocated receipts, typically set to 'Y' */
@USER VARCHAR(10) /* Log in code for user calling this proc */,
@IGNOREUNALLOC BIT) /* Set to 1 to ignore unallocated receipts, this will be logged */
AS
/*******************************************************************************************
* KAAS_SAMYearEndProc
* This procedure checks if a year end can be completed and then runs the year end.
*
* Modification History;
* 2024-01-24 Revathy.D Copied from [dbo].[ky_NETYearEndProc] *
*******************************************************************************************/
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
/*
JG discussed with SK the default behaviour regarding clearing/keeping the nominal ledger of the year we are closing.
For on premise the default behaviour is to CLEAR the nominal ledger (much like the original Clarion code did)
For Azure DB the default behaviour is to KEEP the nominal ledger (because we wont restore previous year as a separate DB)
In order to change this behaviour you can add the setting "KeepNominalLedgerYearEnd" and set it to 1 to keep, or 0 to clear
the nominal ledger in the procedure
*/
DECLARE @KEEPNOMINALLEDGER BIT
SET @KEEPNOMINALLEDGER = 0
IF ServerProperty('EngineEdition') = 5
BEGIN
SET @KEEPNOMINALLEDGER = 1
END
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] = 'KeepNominalLedgerYearEnd')
BEGIN
SELECT @KEEPNOMINALLEDGER = CASE WHEN [SET].[KeyValue] = '1' THEN 1
WHEN [SET].[KeyValue] = '0' THEN 0
ELSE @KEEPNOMINALLEDGER END
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] = 'KeepNominalLedgerYearEnd'
END
DECLARE @TRANCOUNT INT
SET @TRANCOUNT = @@TRANCOUNT
IF @TRANCOUNT = 0
BEGIN TRANSACTION
ELSE
SAVE TRANSACTION [YearEndTransaction]
BEGIN TRY
DECLARE @RESULT TABLE ([Error] VARCHAR(2000))
INSERT INTO @RESULT ([Error])
EXEC [dbo].[KAAS_SAMYearEndCheck] @YEARENDDATE, @SUBDATEFROM, @NEXTPERIODEND, @UPDATEALLOCS, @USER, @IGNOREUNALLOC
/* If there any errors then quit */
IF ISNULL((SELECT COUNT(1) FROM @RESULT), 0) > 0
BEGIN
SELECT *
FROM @RESULT
IF @TRANCOUNT = 0
COMMIT TRANSACTION
RETURN
END
DECLARE @YEAR INT
DECLARE @PL VARCHAR(10)
DECLARE @RECINSTALLED VARCHAR(1)
DECLARE @TIMECOSTING VARCHAR(1)
DECLARE @TODAY DATETIME
DECLARE @EICONVERT DECIMAL(19, 6)
SELECT TOP 1
@YEAR = [CON].[YEAR],
@RECINSTALLED = [CON].[RECINSTALLED],
@PL = [CON].[PL],
@TIMECOSTING = [CON].[TIMECOSTING],
@EICONVERT = [CON].[EICONVERT]
FROM [dbo].[control] AS [CON]
SELECT @YEAR = ISNULL(@YEAR, 0),
@RECINSTALLED = ISNULL(@RECINSTALLED, ''),
@TIMECOSTING = ISNULL(@TIMECOSTING, ''),
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0),
@EICONVERT = ISNULL(@EICONVERT, 1)
/* Check tables for forward post transactions and set period to 13 (look at the date and control file period end date) */
UPDATE [NML]
SET [NML].[PER] = 13
FROM [dbo].[NominalLedger] AS [NML]
WHERE [NML].[DATE] > @YEARENDDATE
AND [NML].[PER] <> 13
AND [NML].[YEAR] = @YEAR
UPDATE [BAH]
SET [BAH].[PERNO] = 13
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[DATE] > @YEARENDDATE
AND [BAH].[PERNO] <> 13
AND [BAH].[YEAR] = @YEAR
UPDATE [BAD]
SET [BAD].[PERNO] = 13
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[DATE] > @YEARENDDATE
AND [BAD].[PERNO] <> 13
AND [BAD].[YEAR] = @YEAR
UPDATE [DTL]
SET [DTL].[PER] = 13
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[DATE] > @YEARENDDATE
AND [DTL].[PER] <> 13
AND [DTL].[YEAR] = @YEAR
UPDATE [SPL]
SET [SPL].[PER] = 13
FROM [dbo].[SupplierLedger] AS [SPL]
WHERE [SPL].[DATE] > @YEARENDDATE
AND [SPL].[PER] <> 13
AND [SPL].[YEAR] = @YEAR
UPDATE [MTL]
SET [MTL].[PER] = 13
FROM [dbo].[MatterLedger] AS [MTL]
WHERE [MTL].[DATE] > @YEARENDDATE
AND [MTL].[PER] <> 13
AND [MTL].[YEAR] = @YEAR
UPDATE [MAT]
SET [MAT].[DebtBalFwd] = 0,
[MAT].[OutlayBalFwd] = 0,
[MAT].[ClientBalFwd] = 0,
[MAT].[ClientCurBalFwd] = 0,
[MAT].[ClientDepBalFwd] = 0,
[MAT].[CurDebtBalFwd] = 0,
[MAT].[CurOutlayBalFwd] = 0,
[MAT].[CurClientCBalFwd] = 0,
[MAT].[CurClientDBalFwd] = 0
FROM [dbo].[matters] AS [MAT]
UPDATE [SUP]
SET [SUP].[BALANCEFWD] = 0
FROM [dbo].[Suppliers] AS [SUP]
UPDATE [DTL]
SET [DTL].[PER] = 1,
[DTL].[YEAR] = [DTL].[YEAR] + 1
FROM [dbo].[DebtorsLedger] AS [DTL]
WHERE [DTL].[DATE] > @YEARENDDATE
AND [DTL].[YEAR] = @YEAR
UPDATE [SPL]
SET [SPL].[PER] = 1,
[SPL].[YEAR] = [SPL].[YEAR] + 1
FROM [dbo].[SupplierLedger] AS [SPL]
WHERE [SPL].[DATE] > @YEARENDDATE
AND [SPL].[YEAR] = @YEAR
UPDATE [MTL]
SET [MTL].[PER] = 1,
[MTL].[YEAR] = [MTL].[YEAR] + 1
FROM [dbo].[MatterLedger] AS [MTL]
WHERE [MTL].[DATE] > @YEARENDDATE
AND [MTL].[YEAR] = @YEAR
UPDATE [BAH]
SET [BAH].[PERNO] = 1,
[BAH].[YEAR] = [BAH].[YEAR] + 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[DATE] > @YEARENDDATE
AND [BAH].[YEAR] = @YEAR
UPDATE [BAD]
SET [BAD].[PERNO] = 1,
[BAD].[YEAR] = [BAD].[YEAR] + 1
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[DATE] > @YEARENDDATE
AND [BAD].[YEAR] = @YEAR
UPDATE [NML]
SET [NML].[PER] = 1,
[NML].[YEAR] = [NML].[YEAR] + 1
FROM [dbo].[NominalLedger] AS [NML]
WHERE [NML].[DATE] > @YEARENDDATE
AND [NML].[YEAR] = @YEAR
IF @TIMECOSTING = 'Y'
BEGIN
/* The "ACTUAL" columns hold a clarion date, so I need to convert to DATETIME, add 1 year and then convert back to clarion */
UPDATE [HAN]
SET [HAN].[ACTUAL1] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL1], '18001228'))),
[HAN].[ACTUAL2] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL2], '18001228'))),
[HAN].[ACTUAL3] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL3], '18001228'))),
[HAN].[ACTUAL4] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL4], '18001228'))),
[HAN].[ACTUAL5] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL5], '18001228'))),
[HAN].[ACTUAL6] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL6], '18001228'))),
[HAN].[ACTUAL7] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL7], '18001228'))),
[HAN].[ACTUAL8] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL8], '18001228'))),
[HAN].[ACTUAL9] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL9], '18001228'))),
[HAN].[ACTUAL10] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL10], '18001228'))),
[HAN].[ACTUAL11] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL11], '18001228'))),
[HAN].[ACTUAL12] = DATEDIFF(DAY, '18001228', DATEADD(YEAR, 1, DATEADD(DAY, [HAN].[ACTUAL12], '18001228')))
FROM [dbo].[Handlers] AS [HAN]
END
/* Third party balances */
UPDATE [SUP]
SET [SUP].[TPBAL] = ISNULL([BAH].[Balance], 0)
FROM [dbo].[Suppliers] AS [SUP]
LEFT OUTER JOIN (SELECT [BAH].[SUPP], SUM(ISNULL([BAH].[VALUE], 0)) AS [Balance]
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[DATE] > @YEARENDDATE
AND [BAH].[YEAR] = @YEAR
GROUP BY [BAH].[SUPP]) AS [BAH]
ON [BAH].[SUPP] = [SUP].[CODE]
UPDATE [NOM]
SET [NOM].[LASTYEAR1] = [NOM].[MONTH1],
[NOM].[LASTYEAR2] = [NOM].[MONTH2],
[NOM].[LASTYEAR3] = [NOM].[MONTH3],
[NOM].[LASTYEAR4] = [NOM].[MONTH4],
[NOM].[LASTYEAR5] = [NOM].[MONTH5],
[NOM].[LASTYEAR6] = [NOM].[MONTH6],
[NOM].[LASTYEAR7] = [NOM].[MONTH7],
[NOM].[LASTYEAR8] = [NOM].[MONTH8],
[NOM].[LASTYEAR9] = [NOM].[MONTH9],
[NOM].[LASTYEAR10] = [NOM].[MONTH10],
[NOM].[LASTYEAR11] = [NOM].[MONTH11],
[NOM].[LASTYEAR12] = [NOM].[MONTH12],
[NOM].[MONTH2] = 0,
[NOM].[MONTH3] = 0,
[NOM].[MONTH4] = 0,
[NOM].[MONTH5] = 0,
[NOM].[MONTH6] = 0,
[NOM].[MONTH7] = 0,
[NOM].[MONTH9] = 0,
[NOM].[MONTH10] = 0,
[NOM].[MONTH11] = 0,
[NOM].[MONTH12] = 0
FROM [dbo].[Nominal] AS [NOM]
IF @UPDATEALLOCS = 'N'
BEGIN
UPDATE [NOM]
SET [NOM].[BALANCE] = 0,
[NOM].[CURRENCYBAL] = 0,
[NOM].[MONTH1] = 0
FROM [dbo].[Nominal] AS [NOM]
END
ELSE
BEGIN
/* Opening balances */
DECLARE @BALANCEFORWARD TABLE (
[CODE] VARCHAR(10),
[BRANCH] VARCHAR(10),
[BALANCE] DECIMAL(19, 2),
[NARR] VARCHAR(200))
/* Bank forward balances */
INSERT INTO @BALANCEFORWARD (
[CODE],
[BRANCH],
[BALANCE],
[NARR])
SELECT [NOM].[CODE],
[NML].[BRANCH],
SUM(ISNULL([NML].[VALUE], 0)),
'Balance Forward' +
CASE WHEN COALESCE([BRA].[DESCRIPTION], [NML].[BRANCH], '') = ''
THEN ''
ELSE ' for ' + ISNULL([BRA].[DESCRIPTION], [NML].[BRANCH]) END
FROM [dbo].[Nominal] AS [NOM]
INNER JOIN [dbo].[NominalLedger] AS [NML]
ON [NML].[CODE] = [NOM].[CODE]
LEFT OUTER JOIN [dbo].[Branch] AS [BRA]
ON [NML].[BRANCH] = [BRA].[BRANCHCODE]
WHERE [NML].[DATE] <= @YEARENDDATE
AND [NOM].[PB] = 'B'
AND [NML].[YEAR] = @YEAR
GROUP BY [NOM].[CODE],
[NML].[BRANCH],
[BRA].[DESCRIPTION]
HAVING SUM(ISNULL([NML].[VALUE], 0)) <> 0
/* Profit & loss */
INSERT INTO @BALANCEFORWARD (
[CODE],
[BRANCH],
[BALANCE],
[NARR])
SELECT @PL,
[NML].[BRANCH],
SUM(ISNULL([NML].[VALUE], 0)),
'Retained Profits Forward from ' + CONVERT(VARCHAR(4), 2020) + ' ' +
CASE WHEN COALESCE([BRA].[DESCRIPTION], [NML].[BRANCH], '') = ''
THEN ''
ELSE 'for ' + ISNULL([BRA].[DESCRIPTION], [NML].[BRANCH]) END
FROM [dbo].[Nominal] AS [NOM]
INNER JOIN [dbo].[NominalLedger] AS [NML]
ON [NML].[CODE] = [NOM].[CODE]
LEFT OUTER JOIN [dbo].[Branch] AS [BRA]
ON [NML].[BRANCH] = [BRA].[BRANCHCODE]
WHERE [NML].[DATE] <= @YEARENDDATE
AND [NOM].[PB] = 'P'
AND [NML].[YEAR] = @YEAR
GROUP BY [NML].[BRANCH],
[BRA].[DESCRIPTION]
HAVING SUM(ISNULL([NML].[VALUE], 0)) <> 0
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[PER],
[YEAR],
[RECNO],
[ENTRYDATE],
[VALUE],
[CURRENCYVALUE])
SELECT [TMP].[CODE],
[TMP].[BRANCH],
0,
0,
@SUBDATEFROM,
'B/F',
[TMP].[NARR],
'', /* MATTER */
'', /* SUPP */
'', /* FEE */
1,
@YEAR + 1,
1,
@TODAY,
[TMP].[BALANCE],
[TMP].[BALANCE] / @EICONVERT
FROM @BALANCEFORWARD AS [TMP]
UPDATE [NOM]
SET [NOM].[BALANCE] = ISNULL([NML].[BALANCE], 0),
[NOM].[CURRENCYBAL] = ISNULL([NML].[BALANCE], 0) / @EICONVERT,
[NOM].[MONTH1] = ISNULL([NML].[BALANCE], 0),
[NOM].[BALANCEFWD] = 0
FROM [dbo].[Nominal] AS [NOM]
LEFT OUTER JOIN (SELECT [NML].[CODE],
SUM(ISNULL([NML].[VALUE], 0)) AS [BALANCE]
FROM [dbo].[NominalLedger] AS [NML]
WHERE [NML].[YEAR] = @YEAR + 1
GROUP BY [NML].[CODE]) AS [NML]
ON [NOM].[CODE] = [NML].[CODE]
END
IF @RECINSTALLED = 'Y' AND @KEEPNOMINALLEDGER = 0
BEGIN
/* OS fwd
REC - RecOsTrans
These are transactions which were not reconciled this year */
INSERT INTO [dbo].[BankRecOutstandingTrans] (
[BANKAC],
[TYPE],
[DATE],
[REF],
[BATCH],
[PREF],
[NARR],
[VALUE],
[RECNO])
SELECT [NML].[CODE],
[TYPE].[Value] AS [TYPE],
[NML].[DATE],
SUBSTRING([NML].[REF], 0, 8),
0,
[NML].[PREF],
SUBSTRING([NML].[NARR], 0, 60),
CASE WHEN [TYPE].[Value] = 'P'
OR ([TYPE].[Value] = 'R'
AND [NML].[CODE] = [BAH].[CLIENTBANK])
THEN [NML].[VALUE] * -1
ELSE [NML].[VALUE] END AS [VALUE],
[NML].[RECNO]
FROM [dbo].[NominalLedger] AS [NML]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [NML].[CODE] = [NOM].[CODE]
INNER JOIN [dbo].[BatchH] AS [BAH]
ON [BAH].[BATCHNO] = [NML].[BATCHNO]
OUTER APPLY (SELECT CASE WHEN [BAH].[TYPE] = 'T'
THEN 'R'
WHEN [BAH].[TYPE] = 'R'
AND [NML].[CODE] = [BAH].[CLIENTBANK]
THEN 'P'
WHEN [BAH].[TYPE] NOT IN ('P', 'R', 'T')
OR [NML].[BATCHNO] = 0
THEN CASE WHEN [NML].[VALUE] < 0
THEN 'P'
ELSE 'R' END
ELSE [BAH].[TYPE] END AS [Value]) AS [TYPE]
WHERE [NML].[DATE] <= @YEARENDDATE
AND [NML].[RECNO] <= 0
AND [NOM].[TYPE] = 'BANK'
AND [NML].[YEAR] = @YEAR
END
/* Delete nominal ledger for year we are closing */
IF @KEEPNOMINALLEDGER = 0
BEGIN
DELETE [NML]
FROM [dbo].[NominalLedger] AS [NML]
WHERE [NML].[DATE] <= @YEARENDDATE
AND [NML].[YEAR] = @YEAR
END
UPDATE [CON]
SET [CON].[LASTBATCH] = [CON].[LASTBATCH] + 1,
[CON].[LASTPREF] = [CON].[LASTPREF] + 1,
[CON].[YEAR] = [CON].[YEAR] + 1,
[CON].[CURPER] = 1,
[CON].[PERIODEND] = DATEDIFF(DAY, '18001228', @NEXTPERIODEND),
[CON].[YearEndDate] = DATEADD(YEAR, 1, @YEARENDDATE)
FROM [dbo].[control] AS [CON]
INSERT INTO [dbo].[Log] (
[DATE],
[EVENT],
[USER])
SELECT @TODAY,
'Year End ' + CONVERT(VARCHAR(24), GETDATE(), 113),
@USER
IF @TRANCOUNT = 0
COMMIT TRANSACTION
END TRY
BEGIN CATCH
DECLARE @ERROR INT
DECLARE @MESSAGE VARCHAR(4000)
DECLARE @XSTATE INT
SELECT @ERROR = ERROR_NUMBER(),
@MESSAGE = ERROR_MESSAGE(),
@XSTATE = XACT_STATE()
DECLARE @ERRMSG VARCHAR(2000)
SET @ERRMSG = '0 - An error occurred in ky_NETYearEndProc. Please contact support.' +
CHAR(13) + CHAR(10) +
'On line ' + CONVERT(VARCHAR(10), ERROR_LINE()) + ': ' +
CHAR(13) + CHAR(10) +
@MESSAGE
SELECT @ERRMSG
IF @TRANCOUNT = 0
BEGIN
PRINT(3)
ROLLBACK TRANSACTION
END
ELSE
BEGIN
IF @XSTATE <> -1
BEGIN
ROLLBACK TRANSACTION [YearEndTransaction]
END
END
RAISERROR(@ERRMSG, 16, 1, @ERROR, @MESSAGE)
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_SAM_GetPaymentClearDate',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_SAM_GetPaymentClearDate]
GO
CREATE PROCEDURE [dbo].[KAAS_SAM_GetPaymentClearDate]
(@Date DATE = NULL,
@ClearDays INT = 0,
@Result DATE OUTPUT)
AS
/*******************************************************************************************************
* Get Clear Date based on Payment method *
* *
* Stored Procedure Name : [dbo].[KAAS_SAM_GetPaymentClearDate] *
* *
* Modification History: *
* 2021-11-08 vinodhkumar M Created
* 2021-09-07 Ghayathri.S.V Modified - The input date format to the function parameter *
*******************************************************************************************************/
BEGIN
DECLARE @InputDate DATE
SET @InputDate = DATEADD(DAY, DATEDIFF(DAY, 0, @Date), 0)
SELECT @Result = [dbo].[ky_NETFNClearedDate](@InputDate, @ClearDays)
END
GO
IF OBJECT_ID(N'KAAS_SaveColumnChooserList', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_SaveColumnChooserList]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SaveColumnChooserList]
(
@Mode VARCHAR(4) = '',
@HandlerCode VARCHAR(50) = '',
@PageName VARCHAR(50) = '',
@DefaultColumns NVARCHAR(MAX) = ''
)
AS
/*******************************************************************************************************
* Save the Default ColumnChooser Column List *
* *
* Stored Procedure Name : [dbo].[KAAS_SaveColumnChooserList] *
* *
* Modification History: *
* Balamurugan 21-May-2021 Created *
* Balamurugan 09-Mar-2022 Modified - Formatting *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF(@Mode='SAVE')
BEGIN
/*CHECK THE DATA ALREADY PRESENT OR NOT*/
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[DefaultPageColumnsByHanlder]
WHERE [HandlerCode] = @HandlerCode
AND [PageName] = @PageName
)
BEGIN
UPDATE [dbo].[DefaultPageColumnsByHanlder]
SET [DefaultColumns] = @DefaultColumns
WHERE [HandlerCode] = @HandlerCode
AND [PageName] = @PageName
END
ELSE
BEGIN
INSERT
INTO [dbo].[DefaultPageColumnsByHanlder]
(
[HandlerCode],
[PageName],
[DefaultColumns]
)
VALUES
(
@HandlerCode,
@PageName,
@DefaultColumns
)
END
END
IF(@Mode='VIEW')
BEGIN
SELECT [HandlerCode],
[PageName],
[DefaultColumns]
FROM [dbo].[DefaultPageColumnsByHanlder]
WHERE [HandlerCode] = @HandlerCode
AND [PageName] = @PageName
END
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SetSAMClientToApprovedForMoneyLaundering'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SetSAMClientToApprovedForMoneyLaundering]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SetSAMClientToApprovedForMoneyLaundering]
(
@Result INT OUTPUT
)
AS
/*******************************************************************************************************
* This stored procedure is used to SET MoneyLaudering is Approved for all client *
* *
* Stored Procedure Name : [dbo].[KAAS_SetSAMClientToApprovedForMoneyLaundering] *
* Copied From : [dbo].[ky_NETMATSetClientToApprovedForMoneyLaundering] *
* *
* Modification History: *
* 2021-08-11 Balamurugan.C Created *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
UPDATE [dbo].[Contacts]
SET [Approved] = 1
WHERE [Client] = 'Y'
SET @Result = 1
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_SetSAMMatterOutlayBudget'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_SetSAMMatterOutlayBudget]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SetSAMMatterOutlayBudget]
(
@OutlayAmount DECIMAL(18,9),
@Target VARCHAR(30)
)
AS
/***********************************************************************************
* *
* This stored procedure is used to set all matter outlaybudget is set value *
* *
* Stored Procedure Name : [dbo].[KAAS_SetSAMMatterOutlayBudget] *
* Copied From : [dbo].[ky_netSetMatterOutlayBudget] *
* *
* Modification History: *
* 2021-08-11 Balamurugan.C Created *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
***********************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
IF LOWER(ISNULL(@Target, '')) = 'all'
BEGIN
UPDATE [dbo].[Matters]
SET [OutlayBud] = ISNULL(@OutlayAmount, 0)
END
IF LOWER(ISNULL(@Target, '')) = 'nobudget'
BEGIN
UPDATE [MAT]
SET [MAT].[OutlayBud] = ISNULL(@OutlayAmount, 0)
FROM [dbo].[Matters] AS [MAT]
WHERE ISNULL([MAT].[OutlayBud], 0) = 0
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_SPMaintainUpdateHandler', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_SPMaintainUpdateHandler]
END
GO
CREATE PROCEDURE [dbo].[KAAS_SPMaintainUpdateHandler]
(
@XML NVARCHAR(MAX),
@SkipWelcomeScreen BIT,
@Result INT OUTPUT
)
AS
BEGIN
/*************************************************************************************************************
* *
* [dbo].[KAAS_SPMaintainUpdateHandler] *
* *
* Description: This procedure is used to update handler information *
* *
* ***************************************************************************************************** *
* *
* Modification history: *
* 2021-06-25 Natarajan S Created *
* 2021-06-29 Natarajan S Modified - Changed variables as per coding standard. *
* 2021-12-17 Balamurugan.C Mofified - Added Ouput parameter as mentioned in service *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
*************************************************************************************************************/
BEGIN TRY
BEGIN TRAN
DECLARE @iSL INT
EXEC sp_xml_preparedocument @iSL OUTPUT, @XML
DECLARE @COMMAND NVARCHAR(MAX)
DECLARE @NEWHANDLERPHONES TABLE
([Code] VARCHAR(10) PRIMARY KEY,
[PhoneNo] VARCHAR(50),
[PhoneNumber] VARCHAR(50))
INSERT
INTO @NEWHANDLERPHONES
([Code],
[PhoneNo],
[PhoneNumber])
SELECT [Code],
[PhoneNo],
[PhoneNumber]
FROM OPENXML(@iSL, N'HAN')
WITH ([Code] VARCHAR(10) '@Code',
[Phoneno] VARCHAR(50) '@Phoneno',
[PhoneNumber] VARCHAR(50) '@PhoneNumber') [DTA]
UPDATE @NEWHANDLERPHONES
SET [Phoneno] = ISNULL([PhoneNumber], '')
WHERE ISNULL([PhoneNo], '') = ''
UPDATE @NEWHANDLERPHONES
SET [PhoneNumber] = ISNULL([Phoneno], '')
WHERE ISNULL([PhoneNumber], '') = ''
UPDATE @NEWHANDLERPHONES
SET [PhoneNumber] = ISNULL([Phoneno], '')
WHERE [PhoneNumber] <> [Phoneno]
SELECT @COMMAND = N'
DECLARE @Exists BIT
INSERT
INTO [dbo].[Handlers]
([Code])
SELECT [NEW].[Code]
FROM (SELECT ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[Code]), '''', '''''')) + N''' [Code]) [NEW]
LEFT OUTER JOIN [dbo].[Handlers] [HAN]
ON [HAN].[Code] = [NEW].[Code]
WHERE [HAN].[Code] IS NULL
UPDATE [HAN]
SET '
+ CASE WHEN [DTA].[Team] IS NULL
THEN N''
ELSE N'
[Team] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[Team]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[TeamCode] IS NULL
THEN N''
ELSE N',
[TeamCode] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[TeamCode]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[Dept] IS NULL
THEN N''
ELSE N',
[Dept] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[Dept]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[Type] IS NULL
THEN N''
ELSE N',
[Type] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[Type]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[Name] IS NULL
THEN N''
WHEN RTRIM([DTA].[Name]) = RTRIM(ISNULL([HAN].[Name], ''))
THEN N''
ELSE N',
[Name] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[Name]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[Rate] IS NULL
THEN N''
ELSE N',
[Rate] = ' + CONVERT(NVARCHAR(200), [DTA].[Rate]) END
+ CASE WHEN [DTA].[Budget1] IS NULL
THEN N''
ELSE N',
[Budget1] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget1]) END
+ CASE WHEN [DTA].[Budget2] IS NULL
THEN N''
ELSE N',
[Budget2] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget2]) END
+ CASE WHEN [DTA].[Budget3] IS NULL
THEN N''
ELSE N',
[Budget3] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget3]) END
+ CASE WHEN [DTA].[Budget4] IS NULL
THEN N''
ELSE N',
[Budget4] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget4]) END
+ CASE WHEN [DTA].[Budget5] IS NULL
THEN N''
ELSE N',
[Budget5] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget5]) END
+ CASE WHEN [DTA].[Budget6] IS NULL
THEN N''
ELSE N',
[Budget6] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget6]) END
+ CASE WHEN [DTA].[Budget7] IS NULL
THEN N''
ELSE N',
[Budget7] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget7]) END
+ CASE WHEN [DTA].[Budget8] IS NULL
THEN N''
ELSE N',
[Budget8] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget8]) END
+ CASE WHEN [DTA].[Budget9] IS NULL
THEN N''
ELSE N',
[Budget9] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget9]) END
+ CASE WHEN [DTA].[Budget10] IS NULL
THEN N''
ELSE N',
[Budget10] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget10]) END
+ CASE WHEN [DTA].[Budget11] IS NULL
THEN N''
ELSE N',
[Budget11] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget11]) END
+ CASE WHEN [DTA].[Budget12] IS NULL
THEN N''
ELSE N',
[Budget12] = ' + CONVERT(NVARCHAR(200), [DTA].[Budget12]) END
+ CASE WHEN [DTA].[Actual1] IS NULL
THEN N''
ELSE N',
[Actual1] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual1])) END
+ CASE WHEN [DTA].[Actual2] IS NULL
THEN N''
ELSE N',
[Actual2] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual2])) END
+ CASE WHEN [DTA].[Actual3] IS NULL
THEN N''
ELSE N',
[Actual3] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual3])) END
+ CASE WHEN [DTA].[Actual4] IS NULL
THEN N''
ELSE N',
[Actual4] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual4])) END
+ CASE WHEN [DTA].[Actual5] IS NULL
THEN N''
ELSE N',
[Actual5] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual5])) END
+ CASE WHEN [DTA].[Actual6] IS NULL
THEN N''
ELSE N',
[Actual6] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual6])) END
+ CASE WHEN [DTA].[Actual7] IS NULL
THEN N''
ELSE N',
[Actual7] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual7])) END
+ CASE WHEN [DTA].[Actual8] IS NULL
THEN N''
ELSE N',
[Actual8] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual8])) END
+ CASE WHEN [DTA].[Actual9] IS NULL
THEN N''
ELSE N',
[Actual9] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual9])) END
+ CASE WHEN [DTA].[Actual10] IS NULL
THEN N''
ELSE N',
[Actual10] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual10])) END
+ CASE WHEN [DTA].[Actual11] IS NULL
THEN N''
ELSE N',
[Actual11] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual11])) END
+ CASE WHEN [DTA].[Actual12] IS NULL
THEN N''
ELSE N',
[Actual12] = ' + CONVERT(NVARCHAR(200), DATEDIFF(DAY, CONVERT(DATETIME, '18001228'), [DTA].[Actual12])) END
+ CASE WHEN [DTA].[TempCalc] IS NULL
THEN N''
ELSE N',
[TempCalc] = ' + CONVERT(NVARCHAR(200), [DTA].[TempCalc]) END
+ CASE WHEN [DTA].[Logon] IS NULL
THEN N''
ELSE N',
[Logon] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[Logon]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[MailAddress] IS NULL
THEN N''
ELSE N',
[MailAddress] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[MailAddress]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[TimeCoster] IS NULL
THEN N''
ELSE N',
[TimeCoster] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[TimeCoster]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[TEAMLEADER] IS NULL
THEN N''
ELSE N',
[TEAMLEADER] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[TEAMLEADER]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[NoRecentMatters] IS NULL
THEN N''
ELSE N',
[NoRecentMatters] = ' + CONVERT(NVARCHAR(200), [DTA].[NoRecentMatters]) END
+ CASE WHEN [DTA].[DefaultTask] IS NULL
THEN N',
[DefaultTask] = '''''
ELSE N',
[DefaultTask] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[DefaultTask]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[ExchangeAlias] IS NULL
THEN N''
ELSE N',
[ExchangeAlias] = ''' + CONVERT(NVARCHAR(300), REPLACE(RTRIM([DTA].[ExchangeAlias]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[Rate1] IS NULL
THEN N''
ELSE N',
[Rate1] = ' + CONVERT(NVARCHAR(200), [DTA].[Rate1]) END
+ CASE WHEN [DTA].[Rate2] IS NULL
THEN N''
ELSE N',
[Rate2] = ' + CONVERT(NVARCHAR(200), [DTA].[Rate2]) END
+ CASE WHEN [DTA].[Rate3] IS NULL
THEN N''
ELSE N',
[Rate3] = ' + CONVERT(NVARCHAR(200), [DTA].[Rate3]) END
+ CASE WHEN [DTA].[Rate4] IS NULL
THEN N''
ELSE N',
[Rate4] = ' + CONVERT(NVARCHAR(200), [DTA].[Rate4]) END
+ CASE WHEN [DTA].[Rate5] IS NULL
THEN N''
ELSE N',
[Rate5] = ' + CONVERT(NVARCHAR(200), [DTA].[Rate5]) END
+ CASE WHEN [DTA].[Signature] IS NULL
THEN N''
ELSE N',
[Signature] = ''' + CONVERT(NVARCHAR(MAX), REPLACE(RTRIM([DTA].[Signature]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[Email] IS NULL
THEN N''
ELSE N',
[Email] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[Email]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[Retired] IS NULL
THEN N''
ELSE N',
[Retired] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[Retired]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[Delegate] IS NULL
THEN N''
ELSE N',
[Delegate] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[Delegate]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[OutlookView] IS NULL
THEN N''
ELSE N',
[OutlookView] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[OutlookView]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[AutoLaunchTimer] IS NULL
THEN N''
ELSE N',
[AutoLaunchTimer] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[AutoLaunchTimer]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[Phoneno] IS NULL
THEN N''
ELSE N',
[Phoneno] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([HPN].[Phoneno]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[PhoneNumber] IS NULL
THEN N''
ELSE N',
[PhoneNumber] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([HPN].[Phoneno]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[AutoLaunchKPI] IS NULL
THEN N''
ELSE N',
[AutoLaunchKPI] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[AutoLaunchKPI]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[AxleNumber] IS NULL
THEN N''
ELSE N',
[AxleNumber] = ' + CONVERT(NVARCHAR(200), [DTA].[AxleNumber]) END
+ CASE WHEN [DTA].[UnitCost] IS NULL
THEN N''
ELSE N',
[UnitCost] = ' + CONVERT(NVARCHAR(200), [DTA].[UnitCost]) END
+ CASE WHEN [DTA].[TargetRecov] IS NULL
THEN N''
ELSE N',
[TargetRecov] = ' + CONVERT(NVARCHAR(200), [DTA].[TargetRecov]) END
+ CASE WHEN [DTA].[Branch] IS NULL
THEN N''
ELSE N',
[Branch] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[Branch]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[FaxNumber] IS NULL
THEN N''
ELSE N',
[FaxNumber] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[FaxNumber]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[ChargeGroup] IS NULL
THEN N''
ELSE N',
[ChargeGroup] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[ChargeGroup]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[EmployeeRefNo] IS NULL
THEN N''
ELSE N',
[EmployeeRefNo] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[EmployeeRefNo]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[ISChargeable] IS NULL
THEN N''
ELSE N',
[ISChargeable] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[ISChargeable]), '''', '''''')) + N'''' END
+ CASE WHEN RTRIM(ISNULL([DTA].[TradingName], '')) = ''
THEN N',
[TradingName] = RTRIM(ISNULL([CON].[Name], ''''))'
ELSE N',
[TradingName] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[TradingName]), '''', '''''')) + N'''' END
+ CASE WHEN [DTA].[JobTitle] IS NULL
THEN N''
ELSE N',
[JobTitle] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[JobTitle]), '''', '''''')) + N'''' END
+ N'
FROM [dbo].[Handlers] [HAN]
CROSS APPLY (SELECT TOP 1 [Name] FROM [dbo].[Control]) [CON]
WHERE [HAN].[Code] = ''' + CONVERT(NVARCHAR(200), REPLACE(RTRIM([DTA].[Code]), '''', '''''')) + N''''
FROM OPENXML(@iSL, N'HAN')
WITH ([Code] VARCHAR(10) '@Code',
[Team] VARCHAR(10) '@Team',
[TeamCode] CHAR(1) '@TeamCode',
[Dept] VARCHAR(5) '@Dept',
[Type] CHAR(1) '@Type',
[Name] VARCHAR(30) '@Name',
[Rate] DECIMAL(10,2) '@Rate',
[Budget1] DECIMAL(13,2) '@Budget1',
[Budget2] DECIMAL(13,2) '@Budget2',
[Budget3] DECIMAL(13,2) '@Budget3',
[Budget4] DECIMAL(13,2) '@Budget4',
[Budget5] DECIMAL(13,2) '@Budget5',
[Budget6] DECIMAL(13,2) '@Budget6',
[Budget7] DECIMAL(13,2) '@Budget7',
[Budget8] DECIMAL(13,2) '@Budget8',
[Budget9] DECIMAL(13,2) '@Budget9',
[Budget10] DECIMAL(13,2) '@Budget10',
[Budget11] DECIMAL(13,2) '@Budget11',
[Budget12] DECIMAL(13,2) '@Budget12',
[Actual1] DATETIME '@Actual1',
[Actual2] DATETIME '@Actual2',
[Actual3] DATETIME '@Actual3',
[Actual4] DATETIME '@Actual4',
[Actual5] DATETIME '@Actual5',
[Actual6] DATETIME '@Actual6',
[Actual7] DATETIME '@Actual7',
[Actual8] DATETIME '@Actual8',
[Actual9] DATETIME '@Actual9',
[Actual10] DATETIME '@Actual10',
[Actual11] DATETIME '@Actual11',
[Actual12] DATETIME '@Actual12',
[TempCalc] DECIMAL(13,2) '@TempCalc',
[Logon] VARCHAR(10) '@Logon',
[MailAddress] VARCHAR(20) '@MailAddress',
[TimeCoster] CHAR(1) '@TimeCoster',
[TeamLeader] VARCHAR(10) '@TeamLeader',
[NoRecentMatters] INT '@NoRecentMatters',
[DefaultTask] CHAR(6) '@DefaultTask',
[ExchangeAlias] VARCHAR(256) '@ExchangeAlias',
[Rate1] DECIMAL(7,2) '@Rate1',
[Rate2] DECIMAL(7,2) '@Rate2',
[Rate3] DECIMAL(7,2) '@Rate3',
[Rate4] DECIMAL(7,2) '@Rate4',
[Rate5] DECIMAL(7,2) '@Rate5',
[Signature] VARCHAR(MAX) '@Signature',
[Email] VARCHAR(100) '@Email',
[Retired] CHAR(1) '@Retired',
[Delegate] VARCHAR(50) '@Delegate',
[OutlookView] CHAR(1) '@OutlookView',
[AutoLaunchTimer] CHAR(1) '@AutoLaunchTimer',
[Phoneno] VARCHAR(50) '@Phoneno',
[PhoneNumber] VARCHAR(50) '@PhoneNumber',
[AutoLaunchKPI] CHAR(1) '@AutoLaunchKPI',
[AxleNumber] INT '@AxleNumber',
[UnitCost] DECIMAL(14,2) '@UnitCost',
[TargetRecov] DECIMAL(7,2) '@TargetRecov',
[Branch] CHAR(3) '@Branch',
[FaxNumber] VARCHAR(50) '@FaxNumber',
[ChargeGroup] CHAR(5) '@ChargeGroup',
[EmployeeRefNo] VARCHAR(10) '@EmployeeRefNo',
[ISChargeable] VARCHAR(1) '@ISChargeable',
[TradingName] VARCHAR(200) '@TradingName',
[JobTitle] VARCHAR(100) '@JobTitle',
[SyncRetire] bit '@SyncRetire') [DTA]
INNER JOIN @NEWHANDLERPHONES [HPN]
ON [HPN].[Code] = [DTA].[Code]
LEFT OUTER JOIN [dbo].[Handlers] [HAN]
ON [HAN].[Code] = [DTA].[Code]
SET @COMMAND = REPLACE(@COMMAND, N'SET ,' + NCHAR(13) + NCHAR(10) + N' ', N'SET ')
EXEC (@COMMAND)
UPDATE [FEC]
SET [FEC].[Retired] = [HAN].[Retired]
FROM OPENXML(@iSL, N'HAN')
WITH ([Code] VARCHAR(10) '@Code',
[SyncRetire] bit '@SyncRetire') [DTA]
INNER JOIN [dbo].[Handlers] [HAN]
ON [HAN].[Code] = [DTA].[Code]
INNER JOIN [dbo].[FeeEarnerCodes] [FEC]
ON [FEC].[Code] = [DTA].[Code]
WHERE ISNULL([DTA].[SyncRetire], CONVERT(BIT, 0)) = 1
INSERT
INTO [dbo].[UserSettings]
([Handler],
[Key],
[Value])
SELECT [DTA].[Code],
'NewMatterWizardDontShowWelcomeScreen',
CONVERT(NVARCHAR(MAX), ISNULL(@SkipWelcomeScreen, CONVERT(BIT, 0)))
FROM OPENXML(@iSL, N'HAN')
WITH ([Code] VARCHAR(10) '@Code') [DTA]
LEFT OUTER JOIN [dbo].[UserSettings] [SET]
ON [SET].[Handler] = [DTA].[Code]
AND [SET].[Key] = 'NewMatterWizardDontShowWelcomeScreen'
WHERE [SET].[SettingID] IS NULL
UPDATE [SET]
SET [SET].[Value] = CONVERT(NVARCHAR(MAX), ISNULL(@SkipWelcomeScreen, CONVERT(BIT, 0)))
FROM OPENXML(@iSL, N'HAN')
WITH ([Code] VARCHAR(10) '@Code') [DTA]
INNER JOIN [dbo].[UserSettings] [SET]
ON [SET].[Handler] = [DTA].[Code]
AND [SET].[Key] = 'NewMatterWizardDontShowWelcomeScreen'
-- KEYD-6912 - Insert new name into HandlerNames table, but only update now if the setting is turned off (default)
IF NOT EXISTS
(SELECT TOP 1 1
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] = 'DelayHandlerNameUpdate'
AND [SET].[KeyValue] = 'True')
BEGIN
UPDATE [HN]
SET [HN].[Name] = ISNULL([DTA].[Name], '')
FROM OPENXML(@iSL, N'HAN')
WITH ([Code] VARCHAR(10) '@Code',
[TeamCode] CHAR(1) '@TeamCode',
[Name] VARCHAR(30) '@Name') [DTA]
INNER JOIN [dbo].[HandlerNames] AS [HN]
ON [HN].[Code] = [DTA].[Code]
--WHERE ISNULL([DTA].[TeamCode], '') <> 'Y'
END
INSERT INTO [dbo].[HandlerNames] (
[Code],
[Name])
SELECT [DTA].[Code],
ISNULL([DTA].[Name], '')
FROM OPENXML(@iSL, N'HAN')
WITH ([Code] VARCHAR(10) '@Code',
[TeamCode] CHAR(1) '@TeamCode',
[Name] VARCHAR(30) '@Name') [DTA]
LEFT OUTER JOIN [dbo].[HandlerNames] AS [HN]
ON [HN].[Code] = [DTA].[Code]
WHERE [HN].[Code] IS NULL
AND ISNULL([DTA].[TeamCode], '') <> 'Y'
EXEC sp_xml_removedocument @iSL
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_UndoBankReconciliationTransaction'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UndoBankReconciliationTransaction]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UndoBankReconciliationTransaction]
(
@BankAc VARCHAR(10) = '',
@RecNo INT = 0,
@Handler VARCHAR(20) = ''
)
AS
/*******************************************************************************************************
* Undo Bank Reconciliation Transaction *
* *
* Stored Procedure Name : [dbo].[KAAS_UndoBankReconciliationTransaction] *
* *
* Modification History: *
* 2022-02-07 Balamurugan C Created *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DECLARE @DateComplete DATE = NULL;
SELECT @DateComplete = [DateComplete]
FROM [dbo].[BankRecHistory]
WHERE [BankAc] = @BankAc
AND [RecNo] = @RecNo
IF(@DateComplete IS NULL)
BEGIN
/* UPDATE OUTSTANDING TRANSACTION TABLE */
UPDATE [dbo].[BankRecOutstandingTrans]
SET [RecNo] = 0
WHERE [BankAc] = @BankAc
AND [RecNo] = @RecNo
/* UPDATE NOMINAL LEDGER RECON NUMBER*/
UPDATE [dbo].[NominalLedger]
SET [RecNo] = ISNULL((SELECT [OsRecNo]
FROM [dbo].[BankRecTransactions]
WHERE [NomTransId] = [NominalLedger].[RecordId]
AND [Pref] = [NominalLedger].[PRef]),0)
WHERE [Code]=@BankAc
AND ABS([RecNo]) = @RecNo
/* DELETE BANK RECON TRANACTION*/
DELETE [dbo].[BankRecTransactions]
WHERE [BankAc] = @BankAc
AND [RecNo] = @RecNo
/* DELETE RECON HISTORY TABLE*/
DELETE [dbo].[BankRecHistory]
WHERE [BankAc] = @BankAc
AND [RecNo] = @RecNo
AND [DateComplete] IS NULL
END
COMMIT
END TRY
BEGIN CATCH
ROLLBACK TRAN
INSERT
INTO [dbo].[Log]
(
[Date],
[User],
[Event]
)
VALUES (
GETDATE(),
@Handler,
'Bank Rec No: ' + @RecNo + ' for Bank Acc ' + @BankAc + ' not undone'
)
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_UpdateContactLastMatter',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_UpdateContactLastMatter]
GO
CREATE PROCEDURE
[dbo].[KAAS_UpdateContactLastMatter] (
@CLIENTCODE VARCHAR(20))
AS
/*****************************************************************
* Stored Procedure Name : [dbo].[KAAS_UpdateContactLastMatter]
* Copied From : [dbo].[ky_NETUpdateContactLastMatter]
*
* Recalculates the LastMatter and OpenMatters for a given Contact
*
* Modification History: *
* 2022-05-31 Ghayathri.S.V Created
*
*****************************************************************/
BEGIN
SET NOCOUNT ON
/* Update our contact's LastMatter and OpenMatters */
UPDATE [CNT]
SET [CNT].[LastMatter] = [MAT].[LastMatter],
[CNT].[OpenMatters] = [MAT].[OpenMatters],
[CNT].[Client] = 'Y'
FROM [dbo].[Contacts] AS [CNT]
INNER JOIN (SELECT [MAT].[ClientCode],
MAX(CASE WHEN PATINDEX('%[^0-9]%', [MAT].[Matter]) <= 0 THEN CONVERT(INT, [MAT].[Matter]) ELSE 0 END) AS [LastMatter],
SUM(CASE WHEN [MAT].[Closed] <> 'Y' THEN 1 ELSE 0 END) AS [OpenMatters]
FROM [dbo].[matters] AS [MAT]
WHERE [MAT].[ClientCode] = @CLIENTCODE
GROUP BY [MAT].[ClientCode]) AS [MAT]
ON [MAT].[ClientCode] = [CNT].[Code]
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_UpdateCreditorsList',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_UpdateCreditorsList]
GO
CREATE PROCEDURE [dbo].[KAAS_UpdateCreditorsList]
(@PayValue decimal(11,2),
@RecordId decimal(17,0))
AS
/*******************************************************************************************************
* Updates the creditors list *
* *
* Stored Procedure Name : [dbo].[KAAS_UpdateCreditorsList] *
* *
* Modification History: *
* 2021-10-05 Revathy D Created *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
UPDATE [dbo].[CreditorsList]
SET [PAYVALUE] = @PayValue
WHERE [RECORDID] = @RecordId
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF OBJECT_ID(N'KAAS_UpdateEFTDefaults',N'P')IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdateEFTDefaults]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_UpdateEFTDefaults]
(
@EFTYN CHAR(1),
@BANKFILENAME VARCHAR(50),
@LOCATION VARCHAR(100),
@FILENUMBER VARCHAR(100),
@EFTLIMIT VARCHAR(100),
@EFTTANSACTIONLIMIT VARCHAR(100)
)
AS
/************************************************************************************************************* *
* Modification History *
* 2024-03-19 Ghayathri S.V Created *
*************************************************************************************************************/
BEGIN
SET NOCOUNT ON
UPDATE EFTDetails
SET EFTYN = @EFTYN,
EFTLimit = @EFTLIMIT,
EFTTransactionLimit = @EFTTANSACTIONLIMIT,
BankFileName = @BANKFILENAME,
Location = @LOCATION,
FileNumber = @FILENUMBER
WHERE RecordID = 1
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_UpdatePostingIssueInvoive'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdatePostingIssueInvoive]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdatePostingIssueInvoive]
(
@PostedBatchNo INT = 0,
@PostedType VARCHAR(1) = '',
@IsPostingFwd VARCHAR(1) = '',
@HandlerName VARCHAR(20) = ''
)
AS
/*******************************************************************************************************
* Update Posting Logic for Issue Invoive *
* *
* Stored Procedure Name : [dbo].[KAAS_UpdatePostingSAMMultiPayment] *
* *
* Modification History: *
* 2021-11-23 Balamurugan C Created *
* 2022-02-17 Balamurugan C Modified - Chnaged Logic as per SAM *
* 2022-02-21 Balamurugan C Modified - Handled Current Period and Period End Date *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
*******************************************************************************************************/
--DECLARE
-- @PostedBatchNo INT = 1513,
-- @PostedType VARCHAR(1) = 'I',
-- @IsPostingFwd VARCHAR(1) = 'N',
-- @HandlerName VARCHAR(20) = 'admin';
BEGIN
BEGIN TRY
BEGIN TRAN
/*UPDATE CUR PER NO IN BATCH HEADER*/
UPDATE [dbo].[BatchH]
SET [PerNo] = CASE WHEN @IsPostingFwd = 'Y' THEN [PerNo] + 1 ELSE [PerNo] END
WHERE [BatchNo] = @PostedBatchNo
/*UPDATE CUR PER NO IN BATCH DETAILS*/
UPDATE [dbo].[BatchDetails]
SET [PerNo] = CASE WHEN @IsPostingFwd = 'Y' THEN [PerNo] + 1 ELSE [PerNo] END
WHERE [BatchNo] = @PostedBatchNo
/*UPDATE PERIOD END DATE FOR BATCH DETAILS*/
DECLARE @ControlPeriodEnd DATE = NULL,
@BatchDetailDate DATE = NULL;
(SELECT @ControlPeriodEnd = DATEADD(dd, (SELECT [PERIODEND] FROM [dbo].[Control] WITH (NOLOCK)), '18001228') )
(SELECT @BatchDetailDate = [Date] FROM [dbo].[BatchDetails])
IF(@BatchDetailDate > @ControlPeriodEnd AND @IsPostingFwd='N')
BEGIN
UPDATE [dbo].[BatchDetails]
SET [Date] = @ControlPeriodEnd
WHERE [BatchNo] = @PostedBatchNo
END
-- /* SELECT BATCH HEADER AND INSERT INTO TABLE VARIBALE*
DECLARE @tempBatchH TABLE
([BatchNo] [int] NOT NULL,
[Type] [char](1) NULL,
[Code] [char](10) NULL,
[Ref] [char](10) NULL,
[Date] [datetime] NULL,
[Matter] [varchar](20) NULL,
[SubTotal] [decimal](17, 2) NULL,
[Supp] [char](10) NULL,
[Narr] [char](150) NULL,
[Value] [decimal](17, 2) NULL,
[Currency] [varchar](10) NULL,
[CurrencyValue] [decimal](17, 2) NULL,
[Posted] [char](1) NULL,
[Branch] [varchar](3) NULL,
[PerNo] [smallint] NULL,
[Year] [smallint] NULL,
[EntryDate] [datetime] NULL,
[RecNo] [int] NULL,
[ChequeReqNo] [int] NULL,
[UserCode] [char](8) NULL,
[Pref] [int] NULL,
[ClientAc] [char](1) NULL,
[EFT] [char](1) NOT NULL,
[ClientBank] [char](10) NULL,
[ThirdParty] [char](1) NULL,
[Payee] [char](60) NULL,
[EFTSent] [char](1) NOT NULL,
[PayClient] [char](1) NOT NULL,
[OnceOffPayment] [char](1) NOT NULL,
[ClientCode] [varchar](10) NULL,
[Feetotal] [decimal](17, 2) NULL,
[Outlaytotal] [decimal](17, 2) NULL,
[VatTotal] [decimal](17, 2) NULL,
[WriteDown] [datetime] NULL,
[WriteBackHours] [decimal](7, 2) NULL,
[WriteBackValue] [decimal](13, 2) NULL,
[CreditInvoiceNo][int] NULL,
[Invcr] [char](1) NULL,
[Fee] [varchar](10) NULL,
[PaymentMethod] [int] NULL,
[ClearedDate] [datetime] NULL,
[SingleLine] [varchar](1) NULL,
[DraftBillNo] [int] NULL)
INSERT INTO @tempBatchH
SELECT [BAH].[BatchNo],
RTRIM(ISNULL([BAH].[Type],'')),
[BAH].[Code],
RTRIM(ISNULL([BAH].[Ref],'')),
dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([BAH].[Date], @HandlerName),
[BAH].[Matter],
[BAH].[SUBTOT],
[BAH].[Supp],
[BAH].[Narr],
[BAH].[Value],
[BAH].[Currency],
[BAH].[CurrencyValue],
[BAH].[Posted],
[BAH].[Branch],
[BAH].[PerNo],
[BAH].[Year],
dbo.KEYHM_FNConvertUTCDateToTargetTimeZone([BAH].[EntryDate], @HandlerName) AS [EntryDate],
[BAH].[RecNo],
[BAH].[ChequeReqNo],
[BAH].[UserCode],
[BAH].[Pref],
[BAH].[ClientAc],
[BAH].[EFTYorN],
[BAH].[CLIENTBANK],
[BAH].[ThirdParty],
[BAH].[Payee],
[BAH].[EFTSent],
[BAH].[PayClient],
[BAH].[OnceOffPayment],
[BAH].[ClientCode],
[BAH].[FEETOT],
[BAH].[OUTLAYTOT],
[BAH].[VATTOT],
[BAH].[WRITEDOWN],
[BAH].[WRITEBACKHOURS],
[BAH].[WRITEBACKVALUE],
[BAH].[CREDITINVOICENO],
[BAH].[INVCR],
[BAH].[FEE],
[BAH].[PaymentMethod],
[BAH].[ClearedDate],
[BAH].[SingleLine],
[BAH].[DraftBillNo]
FROM [dbo].[BatchH] [BAH] WITH(NOLOCK)
WHERE [BAH].[BatchNo] = @PostedBatchNo
/* SELECT BATCH DETAILS AND INSERT INTO TEMP TABLE VARIBLE*/
DECLARE @tempBatchDetails TABLE
(
[BatchNo] [INT] NOT NULL,
[Type] [CHAR](1) NULL,
[Code] [CHAR](10) NULL,
[Pref] [INT] NULL,
[Ref] [CHAR](10) NULL,
[Date] [DATETIME] NULL,
[Fee] [VARCHAR](10) NULL,
[Branch] [VARCHAR](3) NULL,
[Narr] [CHAR](100) NULL,
[Matter] [VARCHAR](20) NULL,
[Supp] [CHAR](10) NULL,
[Value] [DECIMAL](17, 2) NULL,
[VatCode] [CHAR](1) NULL,
[VatVal] [DECIMAL](17, 2) NULL,
[ClientYN] [CHAR](1) NULL,
[Outlay] [CHAR](1) NULL,
[Pending] [CHAR](1) NULL,
[Year] [SMALLINT] NULL,
[PerNo] [SMALLINT] NULL,
[EntryCurrency] [CHAR](1) NULL,
[CurrencyValue] [DECIMAL](17, 2) NULL,
[CurrencyVat] [DECIMAL](17, 2) NULL,
[OutlayCode] [CHAR](4) NULL,
[ThirdParty] [CHAR](1) NULL,
[Payee] [CHAR](60) NULL,
[HeadPref] [INT] NULL,
[HeadBatch] [INT] NULL,
[AllocBatch] [INT] NULL,
[AllocPref] [INT] NULL,
[AllocRef] [CHAR](10) NULL,
[AllocValue] [DECIMAL](17, 2) NULL,
[AllocWriteOff] [CHAR](1) NULL,
[Psupp] [CHAR](10) NULL,
[Undetaking] [SMALLINT] NULL,
[CaseAssCode] [VARCHAR](6) NULL,
[OnceOffPayment] [CHAR](1) NOT NULL,
[PayClient] [CHAR](1) NOT NULL,
[ClientCode] [VARCHAR](10) NULL,
[EFTemailYorN] [CHAR](1) NOT NULL,
[RegisteredPost] [INT] NULL,
[PreBilledOutlay] [BIT] NOT NULL,
[KeyId] [INT] NOT NULL
)
INSERT
INTO @tempBatchDetails
SELECT [BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay],
[KEYID]
FROM [dbo].[BatchDetails] WITH(NOLOCK)
WHERE [BATCHNO] = @PostedBatchNo
DECLARE @LastBatch INT = 0,
@LastPref INT = 0,
@CurPer INT = 0,
@InvCr VARCHAR(1) = '',
@InvCrValue INT = 0,
@OutlayTot DECIMAL(17,2) = 0,
@SingleLine VARCHAR(1) = '',
@DepositAcct VARCHAR(1) = '',
@DeFaultOutlay VARCHAR(10) = '',
@VATControlCode VARCHAR(10) = '',
@DebtorsControlCode VARCHAR(10) = '',
@TimeCosting VARCHAR(1) = '',
@BatchFeeTotal DECIMAL(17,2) = 0,
@TimeTotal DECIMAL(17,2) = 0,
@ChargeTotal DECIMAL(17,2) = 0,
@TimeValue DECIMAL(17,2) = 0,
@BHSupp VARCHAR(10) = '',
@MatterCode VARCHAR(10) = '',
@CreditInvoiceNo INT = 0,
@DraftBillNo INT = 0;
/*FLAG VALUES*/
SELECT @DefaultOutlay = [Outlay],
@VATControlCode = [Vat],
@DebtorsControlCode = [Debtors],
@TimeCosting = [TimeCosting]
FROM [dbo].[Control] WITH(NOLOCK)
SELECT @InvCr = [INVCR],
@OutlayTot = [Outlaytotal],
@SingleLine = [SingleLine],
@BatchFeeTotal = [Feetotal],
@BHSupp = [Supp],
@MatterCode = [Matter],
@CreditInvoiceNo = [CreditInvoiceNo],
@DraftBillNo = [DraftBillNo],
@CurPer = [PerNo]
FROM @tempBatchH
IF(@InvCr = 'C')
BEGIN
SET @InvCrValue = -1;
END
ELSE
BEGIN
SET @InvCrValue = 1;
END
/* INSERT INTO MATTER LEDGER TABLE - BATCH HEADER */
IF(@OutlayTot<>0 AND @SingleLine = 'Y')
BEGIN
INSERT
INTO [dbo].[MatterLedger]
(
[Matter],
[BatchNo],
[Pref],
[Date],
[Ref],
[Narr],
[ValueD],
[ValueO],
[ValueC],
[Fee],
[Per],
[Year],
[EntryDate],
[Client],
[ValueCC],
[ValueCD],
[DepositType],
[CurValueD],
[CurValueO],
[CurValueC],
[CurValueCC],
[CurValueCD],
[Billed],
[BillingYear],
[BillingPeriod],
[BillingDate],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate]
)
(
SELECT [TBH].[Matter]
,[TBH].[BatchNo]
,[TBH].[Pref]
,[TBH].[Date]
,[TBH].[Ref]
,'To Invoice' + ISNULL([TBH].[Ref],'')
,0.00
,[Outlaytotal] * @InvCrValue
,0.00
,[TBH].[Fee]
,[TBH].[PerNo]
,[TBH].[Year]
,CAST(GETDATE() AS DATE)
,SUBSTRING([TBH].[Matter], 1, 6)
,0.00
,0.00
,''
,0.00
,CASE WHEN [TBH].[Currency] = 'I'
THEN ([TBH].[Outlaytotal] / 0.787564) * -1 * @InvCrValue
ELSE ([TBH].[Outlaytotal] * 0.787564) * -1 * @InvCrValue
END AS [CurValueC]
,0.00
,0.00
,0.00
,''
,0
,0
,null
,0
,0
,0
,[TBH].[ClearedDate]
FROM @tempBatchH [TBH]
)
/* UPDATE MATTER LEDGER VALUE*/
UPDATE [MAL]
SET [MAL].[BilledOutlayValue] = [MAL].[ValueO]
FROM [dbo].[MatterLedger] [MAL]
JOIN @tempBatchH [TBH]
ON [MAL].[Matter] = [TBH].[Matter]
AND [MAL].[BatchNo] = [TBH].[BatchNo]
/*UPDATE MATTER TABLE FOR OUTLAY */
UPDATE [MAT]
SET [MAT].[OutlayBal] = ISNULL([MAT].[OutlayBal],0) + ISNULL([TBH].[Outlaytotal] * -1 * @InvCrValue,0),
[MAT].[CurOutlayBal] = ISNULL([MAT].[CurOutlayBal],0) + ISNULL([MAL].[CurValueO] * -1 * @InvCrValue,0),
[MAT].[OutlayBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([MAT].[OutlayBalFwd],0) + ISNULL([TBH].[Value] * -1 * @InvCrValue,0)
ELSE [MAT].[OutlayBalFwd] END,
[MAT].[CurOutlayBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([MAT].[CurOutlayBalFwd],0) + ISNULL([MAL].[CurValueO] * -1 * @InvCrValue,0)
ELSE [MAT].[CurOutlayBalFwd] END
FROM [dbo].[matters] [MAT]
INNER JOIN @tempBatchH [TBH]
ON [MAT].[Code] = [TBH].[Matter]
INNER JOIN [dbo].[MatterLedger] [MAL]
ON [MAL].[Matter] = [TBH].[Matter]
AND [MAL].[BatchNo] = [TBH].[BatchNo]
/* UPDATE CONTACTS TABLE - OUTLAY*/
UPDATE [CON]
SET [CON].[OutlayBal] = ISNULL([CON].[OutlayBal],0) + ISNULL([TBH].[Outlaytotal] * -1 * @InvCrValue,0),
[CON].[CurOutlayBal] = ISNULL([CON].[CurOutlayBal],0) + ISNULL([MAL].[CurValueO] * -1 * @InvCrValue,0)
FROM [dbo].[Contacts] [CON]
INNER JOIN @tempBatchH [TBH]
ON [CON].[Code] = SUBSTRING([TBH].[Matter], 1, 6)
INNER JOIN [dbo].[MatterLedger] [MAL]
ON [MAL].[Matter] = [TBH].[Matter]
AND [MAL].[BatchNo] = [TBH].[BatchNo]
/* INSERT INTO NOMIANL LEDGER */
INSERT
INTO [dbo].[NominalLedger]
(
[Code],
[Branch],
[BatchNo],
[Pref],
[Date],
[Ref],
[Narr],
[Matter],
[Supp],
[Fee],
[Value],
[CurrencyValue],
[Per],
[Year],
[EntryDate],
[RecNo],
[ClearedDate]
)
(
SELECT @DefaultOutlay AS [Code],
[TBH].[Branch],
[TBH].[BatchNo],
[TBH].[Pref],
[TBH].[Date],
[TBH].[Ref],
'To Invoive '+ ISNULL([TBH].[Ref],'') AS [Narr],
[TBH].[Matter],
CASE WHEN [TBH].[Supp]='N' THEN '' ELSE [TBH].[Supp] END,
'' AS [Fee],
ISNULL([TBH].[Outlaytotal] * -1 * @InvCrValue,0) AS [Value],
ISNULL([MAL].[CurValueO] * -1 * @InvCrValue,0) AS [CurrencyValue],
[TBH].[PerNo],
[TBH].[Year],
CAST(GETDATE() AS DATE) AS [EntryDate],
[TBH].[RecNo],
[TBH].[ClearedDate]
FROM @tempBatchH [TBH]
INNER JOIN [dbo].[MatterLedger] [MAL]
ON [MAL].[Matter] = [TBH].[Matter]
AND [MAL].[BatchNo] = [TBH].[BatchNo]
)
/* UPDATE NOMINAL BALANCE FOR OUTLAY */
UPDATE [NOM]
SET [NOM].[Balance] = ISNULL([NOM].[Balance],0)+([TBH].[Outlaytotal] * -1 * @InvCrValue),
[NOM].[CurrencyBal] = ISNULL([NOM].[CurrencyBal],0)+([MAL].[CurValueO] * -1 * @InvCrValue),
[NOM].[BalanceFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[BalanceFwd],0)+([TBH].[Outlaytotal] * -1 * @InvCrValue)
ELSE ISNULL([NOM].[BalanceFwd],0) END,
[NOM].[CurrencyBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[CurrencyBalFwd],0)+([MAL].[CurValueO] * -1 * @InvCrValue)
ELSE ISNULL([NOM].[CurrencyBalFwd],0) END,
[NOM].[Month1] = CASE WHEN @CurPer = 1 AND @IsPostingFwd<>'Y' THEN [NOM].[Month1]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month1] END,
[NOM].[Month2] = CASE WHEN @CurPer = 2 AND @IsPostingFwd<>'Y' THEN [NOM].[Month2]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month2] END,
[NOM].[Month3] = CASE WHEN @CurPer = 3 AND @IsPostingFwd<>'Y' THEN [NOM].[Month3]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month3] END,
[NOM].[Month4] = CASE WHEN @CurPer = 4 AND @IsPostingFwd<>'Y' THEN [NOM].[Month4]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month4] END,
[NOM].[Month5] = CASE WHEN @CurPer = 5 AND @IsPostingFwd<>'Y' THEN [NOM].[Month5]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month5] END,
[NOM].[Month6] = CASE WHEN @CurPer = 6 AND @IsPostingFwd<>'Y' THEN [NOM].[Month6]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month6] END,
[NOM].[Month7] = CASE WHEN @CurPer = 7 AND @IsPostingFwd<>'Y' THEN [NOM].[Month7]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month7] END,
[NOM].[Month8] = CASE WHEN @CurPer = 8 AND @IsPostingFwd<>'Y' THEN [NOM].[Month8]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month8] END,
[NOM].[Month9] = CASE WHEN @CurPer = 9 AND @IsPostingFwd<>'Y' THEN [NOM].[Month9]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month9] END,
[NOM].[Month10] = CASE WHEN @CurPer = 10 AND @IsPostingFwd<>'Y' THEN [NOM].[Month10]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month10] END,
[NOM].[Month11] = CASE WHEN @CurPer = 11 AND @IsPostingFwd<>'Y' THEN [NOM].[Month11]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month11] END,
[NOM].[Month12] = CASE WHEN @CurPer = 12 AND @IsPostingFwd<>'Y' THEN [NOM].[Month12]+([TBH].[Outlaytotal] * -1 * @InvCrValue) ELSE [NOM].[Month12] END
FROM [dbo].[Nominal] [NOM]
JOIN @tempBatchH [TBH]
ON [NOM].[Code] = @DefaultOutlay
INNER JOIN [dbo].[MatterLedger] [MAL]
ON [MAL].[Matter] = [TBH].[Matter]
AND [MAL].[BatchNo] = [TBH].[BatchNo]
END
/* INSERT INTO MATTER LEDGER -BATCH DETAILS */
INSERT
INTO [dbo].[MatterLedger]
(
[Matter],
[BatchNo],
[Pref],
[Date],
[Ref],
[Narr],
[ValueD],
[ValueO],
[ValueC],
[Fee],
[Per],
[Year],
[EntryDate],
[Client],
[ValueCC],
[ValueCD],
[DepositType],
[CurValueD],
[CurValueO],
[CurValueC],
[CurValueCC],
[CurValueCD],
[Billed],
[BillingYear],
[BillingPeriod],
[BillingDate],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate]
)
(
SELECT [TBH].[Matter]
,[TBD].[BatchNo]
,[TBD].[Pref]
,[TBD].[Date]
,[TBD].[Ref]
,CASE WHEN [TBH].[Invcr] ='C'
THEN 'From Cr. Note ' + ISNULL(RTRIM([TBH].[Ref]),'')
ELSE 'To Inv ' + ISNULL(RTRIM([TBH].[Ref]),'') + ' ' + ISNULL(RTRIM([TBD].[Narr]),'')
END AS [Narr]
,0.00
,[TBD].[Value] *-1* @InvCrValue
,0.00
,[TBD].[Fee]
,[TBH].[PerNo]
,[TBH].[Year]
,CAST(GETDATE() AS DATE) AS [EntryDate]
,SUBSTRING([TBH].[Matter], 1, 6)
,0.00
,0.00
,''
,0.00
,[TBD].[CurrencyValue] *-1* @InvCrValue
,0.00
,0.00
,0.00
,''
,0
,0
,null
,0
,0
,0
,[TBH].[ClearedDate]
FROM @tempBatchDetails [TBD]
INNER JOIN @tempBatchH [TBH]
ON [TBH].[BatchNo] = [TBD].[BatchNo]
WHERE [TBD].[Outlay] = 'O'
)
/* UPDATE MATTER LEDGER VALUE*/
UPDATE [MAL]
SET [MAL].[BilledOutlayValue] = [MAL].[ValueO]
FROM [dbo].[MatterLedger] [MAL]
JOIN @tempBatchH [TBH]
ON [MAL].[Matter] = [TBH].[Matter]
AND [MAL].[BatchNo] = [TBH].[BatchNo]
/*UPDATE MATTER TABLE FOR OUTLAY */
UPDATE [MAT]
SET [MAT].[OutlayBal] = ISNULL([MAT].[OutlayBal],0) + ISNULL([TBD].[Value] *-1 * @InvCrValue,0),
[MAT].[CurOutlayBal] = ISNULL([MAT].[CurOutlayBal],0) + ISNULL([TBD].[CurrencyValue] * -1 * @InvCrValue,0),
[MAT].[OutlayBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([MAT].[OutlayBalFwd],0) + ISNULL([TBD].[Value] * -1 * @InvCrValue,0)
ELSE [MAT].[OutlayBalFwd] END,
[MAT].[CurOutlayBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([MAT].[CurOutlayBalFwd],0) + ISNULL([TBD].[CurrencyValue] * -1 * @InvCrValue,0)
ELSE [MAT].[CurOutlayBalFwd] END
FROM [dbo].[matters] [MAT]
INNER JOIN @tempBatchDetails [TBD]
ON [MAT].[Code] = (SELECT DISTINCT [IBH].[Matter]
FROM @tempBatchH [IBH]
JOIN @tempBatchDetails [IBD]
ON [IBD].[BatchNo] = [IBH].[BatchNo]
)
WHERE [TBD].[Outlay] = 'O'
/*UPDATE CONTACT TABLE FOR OUTLAY */
UPDATE [CON]
SET [CON].[OutlayBal] = ISNULL([CON].[OutlayBal],0) + ISNULL([TBD].[Value] * -1 * @InvCrValue,0),
[CON].[CurOutlayBal] = ISNULL([CON].[CurOutlayBal],0) + ISNULL([TBD].[CurrencyValue] * -1 * @InvCrValue,0)
FROM [dbo].[Contacts] [CON]
INNER JOIN @tempBatchH [TBH]
ON [CON].[Code] = SUBSTRING([TBH].[Matter], 1, 6)
INNER JOIN @tempBatchDetails [TBD]
ON [TBD].[BatchNo] = [TBH].[BatchNo]
WHERE [TBD].[Outlay] = 'O'
/* INSERT NOMINAL LEDGER FOR DETAILS LINE INCLUDING CORRESPODING VAT*/
DECLARE @tempNominalLedger TABLE
(
[Code] VARCHAR(10) NULL,
[Branch] VARCHAR(3) NULL,
[BatchNo] INT NULL,
[Pref] INT NULL,
[Date] DATETIME NULL,
[Ref] VARCHAR(10) NULL,
[Narr] VARCHAR(100) NULL,
[Matter] VARCHAR(20) NULL,
[Supp] VARCHAR(10) NULL,
[Fee] VARCHAR(10) NULL,
[Value] DECIMAL(17,2) NULL,
[CurrencyValue] DECIMAL(17,2) NULL,
[Per] SMALLINT NULL,
[Year] SMALLINT NULL,
[EntryDate] DATETIME NULL,
[RecNo] INT NULL,
[ClearedDate] DATETIME NULL,
[VatCode] VARCHAR(20) NULL,
[VatCodeValue] DECIMAL(17,2) NULL,
[VatCodeCurrencyVat] DECIMAL(17,2) NULL
)
INSERT
INTO @tempNominalLedger
SELECT [TBD].CODE,
[TBD].BRANCH,
[TBD].BATCHNO,
[TBD].PREF,
[TBD].[DATE],
[TBD].REF,
[TBD].NARR,
[TBD].MATTER,
[TBD].SUPP,
[TBD].FEE,
[TBD].[Value] * -1 *@InvCrValue AS [Value],
[TBD].[CurrencyValue] * -1 * @InvCrValue AS [CurrencyValue],
[TBD].PERNO,
[TBD].[YEAR],
CAST(GETDATE() AS DATE) AS [EntryDate],
[TBH].RecNo,
[TBH].[ClearedDate],
@VATControlCode AS [VatCode],
[TBD].[VatVal] *-1 * @InvCrValue AS [VatCodeValue],
[TBD].[CurrencyVat] * -1 * @InvCrValue AS [VatCodeCurrencyVat]
FROM @tempBatchDetails [TBD]
LEFT JOIN @tempBatchH [TBH]
ON [TBH].[BatchNo]=[TBD].[BatchNo]
INSERT
INTO [dbo].[NominalLedger]
(
[Code],
[Branch],
[BatchNo],
[Pref],
[Date],
[Ref],
[Narr],
[Matter],
[Supp],
[Fee],
[Value],
[CurrencyValue],
[Per],
[Year],
[EntryDate],
[RecNo],
[ClearedDate]
)
(
SELECT CA.Code,
CA.Branch,
CA.BatchNo,
CA.Pref,
CA.[Date],
CA.Ref,
CA.Narr,
CA.Matter,
CA.Supp,
CA.Fee,
CA.[Value],
CA.[CurrencyValue],
CA.Per,
CA.[Year],
CA.[EntryDate],
CA.RecNo,
CA.ClearedDate
FROM @tempNominalLedger
CROSS APPLY (
VALUES (Code,BatchNo,Branch,Pref,[Date],Ref,Narr,Matter,Supp,Fee,[Value],[CurrencyValue],Per,[Year],[EntryDate],RecNo,ClearedDate),
(VATCode,BatchNo,Branch,Pref,[Date],Ref,'VAT on Invoice/Cr Note '+ ISNULL(Ref,''),Matter,Supp,Fee,VatCodeValue,VatCodeCurrencyVat,Per,[Year],[EntryDate],RecNo,ClearedDate)
)
AS CA (Code,BatchNo,Branch,Pref,[Date],Ref,Narr,Matter,Supp,Fee,[Value],[CurrencyValue],Per,[Year],[EntryDate],RecNo,ClearedDate)
)
/* INSERT INTO MATTER LEDGER - DEBTORS LOGIC*/
INSERT
INTO [dbo].[MatterLedger]
(
[Matter],
[BatchNo],
[Pref],
[Date],
[Ref],
[Narr],
[ValueD],
[ValueO],
[ValueC],
[Fee],
[Per],
[Year],
[EntryDate],
[Client],
[ValueCC],
[ValueCD],
[DepositType],
[CurValueD],
[CurValueO],
[CurValueC],
[CurValueCC],
[CurValueCD],
[Billed],
[BillingYear],
[BillingPeriod],
[BillingDate],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate]
)
(
SELECT [TBH].[Matter]
,[TBH].[BatchNo]
,[TBH].[Pref]
,[TBH].[Date]
,[TBH].[Ref]
,CASE WHEN [TBH].[Invcr] = 'C'
THEN 'Cr. Note: Fees:' + CONVERT(VARCHAR,CONVERT(DECIMAL(17,2),[TBH].[Feetotal]))
+ ' Outlay:' + CONVERT(VARCHAR,CONVERT(DECIMAL(17,2),[TBH].[Outlaytotal]))
+ ' VAT:' + CONVERT(VARCHAR,CONVERT(DECIMAL(17,2),[TBH].[VatTotal]))
ELSE 'Invoice: Fees:' + CONVERT(VARCHAR,CONVERT(DECIMAL(17,2),[TBH].[Feetotal]))
+ ' Outlay:' + CONVERT(VARCHAR,CONVERT(DECIMAL(17,2),[TBH].[Outlaytotal]))
+ ' VAT:' + CONVERT(VARCHAR,CONVERT(DECIMAL(17,2),[TBH].[VatTotal]))
END AS [Narr]
,[TBH].[Value] * @InvCrValue
,0.00
,0.00
,[TBH].[Fee]
,[TBH].[PerNo]
,[TBH].[Year]
,CAST(GETDATE() AS DATE)
,SUBSTRING([TBH].[Matter], 1, 6)
,0.00
,0.00
,''
,[TBH].[CurrencyValue] * @InvCrValue
,0.00
,0.00
,0.00
,0.00
,''
,0
,0
,null
,0
,0
,0
,[TBH].[ClearedDate]
FROM @tempBatchH [TBH]
)
/* UPDATE MATTER LEDGER VALUE*/
UPDATE [MAL]
SET [MAL].[BilledOutlayValue] = [MAL].[ValueO]
FROM [dbo].[MatterLedger] [MAL]
JOIN @tempBatchH [TBH]
ON [MAL].[Matter] = [TBH].[Matter]
AND [MAL].[BatchNo] = [TBH].[BatchNo]
/* UPDATE MATTER TABLE DEBTORS*/
UPDATE [MAT]
SET [MAT].[DebtBal] = ISNULL([MAT].[DebtBal],0) + ISNULL([TBH].[Value] * @InvCrValue ,0),
[MAT].[CurDebtBal] = ISNULL([MAT].[DebtBal],0) * 0.787564,
[MAT].[DebtBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([MAT].[DebtBalFwd],0) + ISNULL([TBH].[Value] * @InvCrValue,0)
ELSE ISNULL([MAT].[DebtBalFwd],0) END,
[MAT].[CurDebtBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([MAT].[DebtBalFwd] * 0.787564,0)
ELSE ISNULL([MAT].[CurDebtBalFwd],0) END,
[MAT].[FNL_Date] = 0,
[MAT].[FNL_Name] = '',
[MAT].[FNL_Address] = '',
[MAT].[FNL_Fees] = 0,
[MAT].[FNL_Outlay] = 0,
[MAT].[FNL_VAT] = 0,
[MAT].[FNL_Total] = 0,
[MAT].[LastAct] = CAST(GETDATE() AS DATE),
[MAT].[LastActType] = 'Inv/CrNote',
[MAT].[EstFee] = 0,
[MAT].[ExpBillD] = 0,
[MAT].[ExpPayD] = [TBH].[Date] + 30
FROM [dbo].[matters] [MAT]
INNER JOIN @tempBatchH [TBH]
ON [MAT].[Code] = [TBH].[Matter]
/* UPDATE CONTACT FOR DEBTORS*/
UPDATE [CON]
SET [CON].[BillBal] = [CON].[BillBal] + ISNULL([TBH].[Value] * @InvCrValue,0),
[CON].[CurBillBal] = [CON].[CurBillBal] + ISNULL([TBH].[CurrencyValue] * @InvCrValue,0)
FROM [dbo].[Contacts] [CON]
INNER JOIN @tempBatchH [TBH]
ON [CON].[Code] = SUBSTRING([TBH].[Matter], 1, 6)
/* INSERT NOMINAL LEDGER FOR DEBTORS */
INSERT
INTO [dbo].[NominalLedger]
(
[Code],
[Branch],
[BatchNo],
[Pref],
[Date],
[Ref],
[Narr],
[Matter],
[Supp],
[Fee],
[Value],
[CurrencyValue],
[Per],
[Year],
[EntryDate],
[RecNo],
[ClearedDate]
)
(
SELECT @DebtorsControlCode AS [Code],
[TBH].[Branch],
[TBH].[BatchNo],
[TBH].[Pref],
[TBH].[Date],
[TBH].[Ref],
[TBH].[Narr],
[TBH].[Matter],
CASE WHEN [TBH].[Supp]='N' THEN '' ELSE [TBH].[Supp] END,
[TBH].[Fee],
ISNULL([TBH].[Value] * @InvCrValue,0) AS [Value],
ISNULL([TBH].[CurrencyValue] * @InvCrValue,0) AS [CurrencyValue],
[TBH].[PerNo],
[TBH].[Year],
CAST(GETDATE() AS DATE) AS [EntryDate],
[TBH].[RecNo],
[TBH].[ClearedDate]
FROM @tempBatchH [TBH]
)
/* UPDATE NOMINAL BALANCE FOR DEBTORS */
UPDATE [NOM]
SET [NOM].[Balance] = ISNULL([NOM].[Balance],0)+([TBH].[Value] * @InvCrValue),
[NOM].[CurrencyBal] = ISNULL([NOM].[CurrencyBal],0)+([TBH].[CurrencyValue] * @InvCrValue),
[NOM].[BalanceFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[BalanceFwd],0)+([TBH].[Value] * @InvCrValue)
ELSE ISNULL([NOM].[BalanceFwd],0) END,
[NOM].[CurrencyBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[CurrencyBalFwd],0)+([TBH].[CurrencyValue] * @InvCrValue)
ELSE ISNULL([NOM].[CurrencyBalFwd],0) END,
[NOM].[Month1] = CASE WHEN @CurPer = 1 AND @IsPostingFwd<>'Y' THEN [NOM].[Month1]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month1] END,
[NOM].[Month2] = CASE WHEN @CurPer = 2 AND @IsPostingFwd<>'Y' THEN [NOM].[Month2]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month2] END,
[NOM].[Month3] = CASE WHEN @CurPer = 3 AND @IsPostingFwd<>'Y' THEN [NOM].[Month3]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month3] END,
[NOM].[Month4] = CASE WHEN @CurPer = 4 AND @IsPostingFwd<>'Y' THEN [NOM].[Month4]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month4] END,
[NOM].[Month5] = CASE WHEN @CurPer = 5 AND @IsPostingFwd<>'Y' THEN [NOM].[Month5]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month5] END,
[NOM].[Month6] = CASE WHEN @CurPer = 6 AND @IsPostingFwd<>'Y' THEN [NOM].[Month6]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month6] END,
[NOM].[Month7] = CASE WHEN @CurPer = 7 AND @IsPostingFwd<>'Y' THEN [NOM].[Month7]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month7] END,
[NOM].[Month8] = CASE WHEN @CurPer = 8 AND @IsPostingFwd<>'Y' THEN [NOM].[Month8]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month8] END,
[NOM].[Month9] = CASE WHEN @CurPer = 9 AND @IsPostingFwd<>'Y' THEN [NOM].[Month9]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month9] END,
[NOM].[Month10] = CASE WHEN @CurPer = 10 AND @IsPostingFwd<>'Y' THEN [NOM].[Month10]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month10] END,
[NOM].[Month11] = CASE WHEN @CurPer = 11 AND @IsPostingFwd<>'Y' THEN [NOM].[Month11]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month11] END,
[NOM].[Month12] = CASE WHEN @CurPer = 12 AND @IsPostingFwd<>'Y' THEN [NOM].[Month12]+([TBH].[Value] * @InvCrValue) ELSE [NOM].[Month12] END
FROM [dbo].[Nominal] [NOM]
JOIN @tempBatchH [TBH]
ON [NOM].[Code] = @DebtorsControlCode
/* INSERT DEBTORS LEDGER */
INSERT
INTO [dbo].[DebtorsLedger]
( [Matter],
[Type],
[Client],
[Date],
[Ref],
[BatchNo],
[Pref],
[Narr],
[Original],
[OsValue],
[OrFees],
[OrOutlay],
[OrVat],
[OsFees],
[OsOutlay],
[OsVat],
[Per],
[Year]
)
(
SELECT [TBH].[Matter],
[TBH].[Type],
SUBSTRING([TBH].[Matter], 1, 6) AS [Client],
[TBH].[Date],
[TBH].[Ref],
[TBH].[BatchNo],
[TBH].[Pref],
[MAL].[Narr],
[TBH].[Value] * @InvCrValue AS [Original],
[TBH].[Value] * @InvCrValue AS [OsValue],
[TBH].[Feetotal] * @InvCrValue AS [OrFees],
[TBH].[Outlaytotal] * @InvCrValue AS [OrOutlay],
[TBH].[VatTotal] * @InvCrValue AS [OrVat],
[TBH].[Feetotal] * @InvCrValue AS [OsFees],
[TBH].[Outlaytotal] * @InvCrValue AS [OsOutlay],
[TBH].[VatTotal] * @InvCrValue AS [OsVat],
[TBH].[PerNo] AS [Per],
[TBH].[Year]
FROM @tempBatchH [TBH]
JOIN [dbo].[MatterLedger] [MAL] WITH(NOLOCK)
ON [MAL].[BatchNo] = [TBH].[BatchNo]
AND [MAL].[Matter] = [TBH].[Matter]
AND [MAL].[ValueD] <> 0
)
/* UPDATE DEBTORS LEDGER VAT CODE*/
UPDATE [DBL]
SET [DBL].[VatCode] = [TBD].[VatCode]
FROM [dbo].[DebtorsLedger] [DBL]
JOIN @tempBatchDetails [TBD]
ON [TBD].[BatchNo] = [DBL].[BatchNo]
WHERE [TBD].[Outlay] = 'F'
/* UPDATE DEBTORS LEDGER VAT CODE*/
UPDATE [DBL]
SET [DBL].[VatCode] = [TBD].[VatCode]
FROM [dbo].[DebtorsLedger] [DBL]
JOIN @tempBatchDetails [TBD]
ON [TBD].[BatchNo] = [DBL].[BatchNo]
WHERE [TBD].[Outlay] = 'O'
/* INSERT INTO COST TRANSFER GATHERING IF IT IS THRID PARTY */
INSERT
INTO [dbo].[CostTransGathering]
(
[Date],
[Matter],
[Value],
[EntryCurrency],
[CurrencyValue],
[AllocBatch],
[AllocPRef],
[AllocRef],
[AllocValue],
[AllocWriteOff]
)
(
SELECT [TBH].[Date],
[TBH].[Matter],
[TBH].[Value],
[TBH].[Currency],
[TBH].[CurrencyValue],
[TBH].[BatchNo],
[TBH].[PRef],
[TBH].[Ref],
[TBH].[Value],
'N'AS [AllocWriteOff]
FROM @tempBatchH [TBH]
WHERE ISNULL([TBH].[ThirdParty],'')='Y'
)
/* TIME COSTING LOGIC*/
IF(@TimeCosting = 'Y' AND @BatchFeeTotal<>0)
BEGIN
IF(@InvCr = 'C')
BEGIN
SELECT @TimeTotal = - [TBH].[WriteBackHours] * 60,
@TimeValue = - [TBH].[WriteBackValue]
FROM @tempBatchH [TBH]
END
ELSE
BEGIN
SELECT @TimeTotal = SUM(CASE WHEN [TIE].[InvoiceNo] = 0 THEN 0 ELSE
CASE WHEN ISNULL([TIE].[Rec_irr],'') <>'N' THEN [TIE].[Time] ELSE 0 END END),
@TimeValue = SUM(CASE WHEN [TIE].[InvoiceNo] = 0 THEN 0 ELSE
CASE WHEN ISNULL([TIE].[Rec_irr],'') <>'N' THEN [TIE].[Charge] ELSE 0 END END)
FROM [dbo].[TimeEntry] [TIE] WITH(NOLOCK)
JOIN @tempBatchH [TBH]
ON [TIE].[Matter] = [TBH].[Matter]
--AND [TIE].[Date] = 4
END
/* Hear We need to have the Bill Fee total JUST the Normal FEEs ie do not include the Misc Outlay
we will get this from the billDetails Type = 'F'...*/
DECLARE @BHFeesTol DECIMAL(17,2) = 0;
SELECT @BHFeesTol = ISNULL(SUM(Net),0)
FROM [dbo].[BillDetails] [BID]
WHERE ISNULL([BID].[Type],'') = 'F'
AND [BID].[DraftNo] = (SELECT DISTINCT [TBH].[DraftBillNo]
FROM @tempBatchH [TBH])
INSERT INTO [dbo].[TimeEntry]
( [Matter],
[FeeEarn],
[Date],
[Time],
[Rate],
[Charge],
[Charged],
[Units],
[Task],
[TimeOrCharge],
[Comment],
[Billed],
[NCCode],
[Docket],
[Team],
[TrackRef],
[Rec_Irr],
[ShouldHave],
[InvoiceNo],
[Period],
[Year],
[BillingPeriod],
[BillingYear],
[OpenInv],
[ActionID],
[StageCode],
[BillingDate],
[BilledDate],
[BilledAmount],
[AxleNumber],
[WriteOffDT],
[WriteOffID],
[IncludeInBill],
[Leave],
[MatterLevel],
[FEERate],
[ChargedMins],
[FEECost],
[TaskLevel],
[WriteOff],
[Branch],
[EntryDate],
[ModifyDate]
)
(
SELECT
[TBH].[Matter],
[MAT].[FECode],
[TBH].[WriteDown],
0,
0,
CASE WHEN @BHSupp='Y' THEN @BHFeesTol *-1
WHEN @InvCr='C' AND @BHSupp<>'Y' THEN @BHFeesTol
ELSE @BHFeesTol * -1 END,
CASE WHEN @BHSupp='Y' THEN @BatchFeeTotal *-1
WHEN @InvCr='C' AND @BHSupp<>'Y' THEN @BHFeesTol
ELSE @BHFeesTol * 1 END,
1,
CASE WHEN @BHSupp='Y' THEN 'BILLED'
WHEN @InvCr='C' AND @BHSupp<>'Y' THEN 'CREDIT'
ELSE 'BILLED' END,
'B',
CASE WHEN @BHSupp='Y' THEN 'Open Invoice: (Total: '+CONVERT(VARCHAR,[TBH].[Value])+', Billed Fees:'+CONVERT(VARCHAR,@BHFeesTol)+ ')'
WHEN @InvCr='C' AND @BHSupp<>'Y' THEN 'Cr. Note Fees: ' + CONVERT(VARCHAR,@BHFeesTol)
ELSE 'Billed Fees: ' + CONVERT(VARCHAR,@BHFeesTol) END,
0,
'',
0,
[HAN].[Team],
0,
'C',
0,
[TBH].[Ref],
[TBH].[PerNo],
[TBH].[Year],
0,
0,
CASE WHEN @BHSupp='Y' THEN 'Y'
WHEN @InvCr='C' AND @BHSupp<>'Y' THEN 'N'
ELSE 'N' END ,
0,
'',
[TBH].[Date],
[TBH].[Date],
0,
0,
null,
null,
0,
null,
null,
null,
null,
null,
null,
null,
null,
CAST(GETDATE() AS DATE),
CAST(GETDATE() AS DATE)
FROM @tempBatchH [TBH]
JOIN [dbo].[Matters] [MAT] WITH(NOLOCK)
ON [MAT].[Code] = [TBH].[Matter]
JOIN [dbo].[Handlers] [HAN] WITH(NOLOCK)
ON [HAN].[Code]= [MAT].[FECode]
)
END
DECLARE @BatchNo INT,
@Type VARCHAR(1),
@Code VARCHAR(10),
@Pref INT,
@Ref VARCHAR(10),
@Date DATETIME,
@Fee VARCHAR(10),
@Branch VARCHAR(3),
@Narr VARCHAR(100),
@Matter VARCHAR(20),
@Supp VARCHAR(10),
@Value DECIMAL(17, 2),
@VatCode VARCHAR(1),
@VatVal DECIMAL(17, 2),
@ClientYN VARCHAR(1),
@Outlay VARCHAR(1),
@Pending VARCHAR(1),
@Year SMALLINT,
@PerNo SMALLINT,
@EntryCurrency VARCHAR(1),
@CurrencyValue DECIMAL(17, 2) ,
@CurrencyVat DECIMAL(17, 2) ,
@OutlayCode VARCHAR(4),
@ThirdParty VARCHAR(1),
@Payee VARCHAR(60),
@HeadPref INT,
@HeadBatch INT,
@AllocBatch INT,
@AllocPref INT,
@AllocRef VARCHAR(10),
@AllocValue DECIMAL(17, 2),
@AllocWriteOff VARCHAR(1),
@Psupp VARCHAR(10),
@Undetaking SMALLINT,
@CaseAssCode VARCHAR(6),
@OnceOffPayment VARCHAR(1),
@PayClient VARCHAR(1),
@ClientCode VARCHAR(10),
@EFTemailYorN VARCHAR(1),
@RegisteredPost INT,
@PreBilledOutlay BIT,
@KeyId INT,
@ClientAc VARCHAR(1),
@EntryDate DATETIME,
@ClientBank VARCHAR(20),
@Currency VARCHAR(10),
@EFTSend VARCHAR(1),
@EFTYorN VARCHAR(1),
@ClearedDate DATETIME,
@BatchHCode VARCHAR(10)
DECLARE batchDetails_Cursor CURSOR FOR
SELECT [TBD].[BatchNo],
[TBD].[Type],
[TBD].[Code],
[TBD].[Pref],
[TBD].[Ref],
[TBD].[Date],
[TBD].[Fee],
[TBD].[Branch],
[TBD].[Narr],
[TBD].[Matter],
[TBD].[Supp],
[TBD].[Value],
[TBD].[VatCode],
[TBD].[VatVal],
[TBD].[ClientYN],
[TBD].[Outlay],
[TBD].[Pending],
[TBD].[Year],
[TBD].[PerNo],
[TBD].[EntryCurrency],
[TBD].[CurrencyValue],
[TBD].[CurrencyVat],
[TBD].[OutlayCode],
[TBD].[ThirdParty],
[TBD].[Payee],
[TBD].[HeadPref],
[TBD].[HeadBatch],
[TBD].[AllocBatch],
[TBD].[AllocPref],
[TBD].[AllocRef],
[TBD].[AllocValue],
[TBD].[AllocWriteOff],
[TBD].[Psupp],
[TBD].[Undetaking],
[TBD].[CaseAssCode],
[TBD].[OnceOffPayment],
[TBD].[PayClient],
[TBD].[ClientCode],
[TBD].[EFTemailYorN],
[TBD].[RegisteredPost],
[TBD].[PreBilledOutlay],
[TBD].[KeyId],
[TBH].[ClientAc],
[TBH].[EntryDate],
[TBH].[ClientBank],
[TBH].[Currency],
[TBH].[EFTSent],
[TBH].[EFT],
[TBH].[ClearedDate],
[TBH].[Code]
FROM @tempBatchDetails [TBD]
JOIN @tempBatchH [TBH]
ON [TBH].[BatchNo] = [TBD].[BatchNo]
OPEN batchDetails_Cursor
FETCH
NEXT FROM batchDetails_Cursor
INTO @BatchNo,
@Type,
@Code,
@Pref,
@Ref,
@Date,
@Fee,
@Branch,
@Narr,
@Matter,
@Supp,
@Value,
@VatCode,
@VatVal,
@ClientYN,
@Outlay,
@Pending,
@Year,
@PerNo,
@EntryCurrency,
@CurrencyValue,
@CurrencyVat,
@OutlayCode,
@ThirdParty,
@Payee,
@HeadPref,
@HeadBatch,
@AllocBatch,
@AllocPref,
@AllocRef,
@AllocValue,
@AllocWriteOff,
@Psupp,
@Undetaking,
@CaseAssCode,
@OnceOffPayment,
@PayClient,
@ClientCode,
@EFTemailYorN,
@RegisteredPost,
@PreBilledOutlay,
@KeyId,
@ClientAc,
@EntryDate,
@ClientBank,
@Currency,
@EFTSend,
@EFTYorN,
@ClearedDate,
@BatchHCode
WHILE @@FETCH_STATUS = 0
BEGIN
/* UPDATE NOMINAL BALANCE BY DETAILS LINE*/
UPDATE [NOM]
SET [NOM].[Balance] = ISNULL([NOM].[Balance],0)+(@Value * -1 * @InvCrValue),
[NOM].[CurrencyBal] = ISNULL([NOM].[CurrencyBal],0)+(@CurrencyValue * -1 * @InvCrValue),
[NOM].[BalanceFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[BalanceFwd],0)+(@Value * -1 * @InvCrValue)
ELSE ISNULL([NOM].[BalanceFwd],0) END,
[NOM].[CurrencyBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[CurrencyBalFwd],0)+(@CurrencyValue * -1 * @InvCrValue)
ELSE ISNULL([NOM].[CurrencyBalFwd],0) END,
[NOM].[Month1] = CASE WHEN @CurPer = 1 AND @IsPostingFwd<>'Y' THEN [NOM].[Month1]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month1] END,
[NOM].[Month2] = CASE WHEN @CurPer = 2 AND @IsPostingFwd<>'Y' THEN [NOM].[Month2]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month2] END,
[NOM].[Month3] = CASE WHEN @CurPer = 3 AND @IsPostingFwd<>'Y' THEN [NOM].[Month3]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month3] END,
[NOM].[Month4] = CASE WHEN @CurPer = 4 AND @IsPostingFwd<>'Y' THEN [NOM].[Month4]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month4] END,
[NOM].[Month5] = CASE WHEN @CurPer = 5 AND @IsPostingFwd<>'Y' THEN [NOM].[Month5]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month5] END,
[NOM].[Month6] = CASE WHEN @CurPer = 6 AND @IsPostingFwd<>'Y' THEN [NOM].[Month6]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month6] END,
[NOM].[Month7] = CASE WHEN @CurPer = 7 AND @IsPostingFwd<>'Y' THEN [NOM].[Month7]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month7] END,
[NOM].[Month8] = CASE WHEN @CurPer = 8 AND @IsPostingFwd<>'Y' THEN [NOM].[Month8]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month8] END,
[NOM].[Month9] = CASE WHEN @CurPer = 9 AND @IsPostingFwd<>'Y' THEN [NOM].[Month9]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month9] END,
[NOM].[Month10] = CASE WHEN @CurPer = 10 AND @IsPostingFwd<>'Y' THEN [NOM].[Month10]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month10] END,
[NOM].[Month11] = CASE WHEN @CurPer = 11 AND @IsPostingFwd<>'Y' THEN [NOM].[Month11]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month11] END,
[NOM].[Month12] = CASE WHEN @CurPer = 12 AND @IsPostingFwd<>'Y' THEN [NOM].[Month12]+(@Value * -1 * @InvCrValue) ELSE [NOM].[Month12] END
FROM [dbo].[Nominal] [NOM]
WHERE [NOM].[Code] = @Code
/* UPDATE NOMINAL BALANCE BY VAT VALUE */
UPDATE [NOM]
SET [NOM].[Balance] = ISNULL([NOM].[Balance],0)+(@VatVal * -1 * @InvCrValue),
[NOM].[CurrencyBal] = ISNULL([NOM].[CurrencyBal],0)+(@CurrencyVat * -1 * @InvCrValue),
[NOM].[BalanceFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[BalanceFwd],0)+(@VatVal * -1 * @InvCrValue)
ELSE ISNULL([NOM].[BalanceFwd],0) END,
[NOM].[CurrencyBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[CurrencyBalFwd],0)+(@CurrencyVat * -1 * @InvCrValue)
ELSE ISNULL([NOM].[CurrencyBalFwd],0) END,
[NOM].[Month1] = CASE WHEN @CurPer = 1 AND @IsPostingFwd<>'Y' THEN [NOM].[Month1]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month1] END,
[NOM].[Month2] = CASE WHEN @CurPer = 2 AND @IsPostingFwd<>'Y' THEN [NOM].[Month2]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month2] END,
[NOM].[Month3] = CASE WHEN @CurPer = 3 AND @IsPostingFwd<>'Y' THEN [NOM].[Month3]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month3] END,
[NOM].[Month4] = CASE WHEN @CurPer = 4 AND @IsPostingFwd<>'Y' THEN [NOM].[Month4]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month4] END,
[NOM].[Month5] = CASE WHEN @CurPer = 5 AND @IsPostingFwd<>'Y' THEN [NOM].[Month5]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month5] END,
[NOM].[Month6] = CASE WHEN @CurPer = 6 AND @IsPostingFwd<>'Y' THEN [NOM].[Month6]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month6] END,
[NOM].[Month7] = CASE WHEN @CurPer = 7 AND @IsPostingFwd<>'Y' THEN [NOM].[Month7]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month7] END,
[NOM].[Month8] = CASE WHEN @CurPer = 8 AND @IsPostingFwd<>'Y' THEN [NOM].[Month8]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month8] END,
[NOM].[Month9] = CASE WHEN @CurPer = 9 AND @IsPostingFwd<>'Y' THEN [NOM].[Month9]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month9] END,
[NOM].[Month10] = CASE WHEN @CurPer = 10 AND @IsPostingFwd<>'Y' THEN [NOM].[Month10]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month10] END,
[NOM].[Month11] = CASE WHEN @CurPer = 11 AND @IsPostingFwd<>'Y' THEN [NOM].[Month11]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month11] END,
[NOM].[Month12] = CASE WHEN @CurPer = 12 AND @IsPostingFwd<>'Y' THEN [NOM].[Month12]+(@VatVal * -1 * @InvCrValue) ELSE [NOM].[Month12] END
FROM [dbo].[Nominal] [NOM]
WHERE [NOM].[Code] = @Code
FETCH
NEXT FROM batchDetails_Cursor
INTO @BatchNo,
@Type,
@Code,
@Pref,
@Ref,
@Date,
@Fee,
@Branch,
@Narr,
@Matter,
@Supp,
@Value,
@VatCode,
@VatVal,
@ClientYN,
@Outlay,
@Pending,
@Year,
@PerNo,
@EntryCurrency,
@CurrencyValue,
@CurrencyVat,
@OutlayCode,
@ThirdParty,
@Payee,
@HeadPref,
@HeadBatch,
@AllocBatch,
@AllocPref,
@AllocRef,
@AllocValue,
@AllocWriteOff,
@Psupp,
@Undetaking,
@CaseAssCode,
@OnceOffPayment,
@PayClient,
@ClientCode,
@EFTemailYorN,
@RegisteredPost,
@PreBilledOutlay,
@KeyId,
@ClientAc,
@EntryDate,
@ClientBank,
@Currency,
@EFTSend,
@EFTYorN,
@ClearedDate,
@BatchHCode
END
CLOSE batchDetails_Cursor;
DEALLOCATE batchDetails_Cursor;
/* UPDATE BATCHH DETAILS AS POSTED */
IF(@TimeCosting = 'Y')
BEGIN
UPDATE [MAT]
SET [MAT].[OpenInvoiceNo] = [BIH].[BillNo]
FROM [dbo].[Matters] [MAT]
JOIN @tempBatchH [TBH]
ON [MAT].[Code] = [TBH].[Matter]
LEFT JOIN [dbo].[BillHeader] [BIH]
ON [BIH].[Matter] = [TBH].[Matter]
AND [BIH].[BillNo] = [TBH].[Ref]
AND [BIH].[DraftNo] = [TBH].[DraftBillNo]
END
UPDATE [dbo].[BatchH]
SET [Posted] = 'Y',
[PostFwd] = CASE WHEN @IsPostingFwd = 'Y' THEN 'Y' ELSE 'N' END
WHERE [BatchNo] = @PostedBatchNo
/* Update Time and Outlay for this invoice
Update the Time/Outlay based on the Billing Guide
*/
DECLARE @BatchHMatter VARCHAR(12) = '',
@MCode VARCHAR(12) = '',
@CompBillingMatter VARCHAR(12) = '',
@BGControlCnt INT = 0;
SELECT @BatchHMatter = [TBH].[Matter],
@MCode = [MAT].[Code],
@CompBillingMatter = [MAT].[CompBillingMatter]
FROM @tempBatchH [TBH]
JOIN [dbo].[Matters] [MAT] WITH(NOLOCK)
ON [MAT].Code = [TBH].[Matter]
IF(@InvCr = 'I')
BEGIN
EXEC [dbo].[KAAS_SAMBillingGuideProcess] @PostedBatchNo
/* If this is a Composite Bill in to post the composite Journal */
IF(@BatchHMatter = @MCode AND @MCode = @CompBillingMatter)
BEGIN
EXEC [dbo].[KAAS_SAMBillingGuideTransfer] @PostedBatchNo
END
END
IF(@InvCr = 'C')
BEGIN
IF(@CreditInvoiceNo <> 0)
BEGIN
EXEC [dbo].[KAAS_SAMBillingGuideReset] @CreditInvoiceNo
END
IF(@BatchHMatter = @MCode AND @MCode = @CompBillingMatter)
BEGIN
EXEC [dbo].[KAAS_SAMBillingGuideReverseTransfer] @PostedBatchNo
END
/* Check BGControl for Batch.*/
IF(@DraftBillNo = 0 AND @CreditInvoiceNo IS NOT NULL)
BEGIN
SET @BGControlCnt = (SELECT COUNT(*) from [dbo].[BGControl] Where [BatchNo] = @PostedBatchNo)
/* update TimeEntry Set all time with invoice number and date back to ZERO */
IF(@BGControlCnt = 0)
BEGIN
UPDATE [TIE]
SET [TIE].[InvoiceNo] = 0,
[TIE].[BilledAmount] = 0,
[TIE].[BillingPeriod] = 0,
[TIE].[BillingYear] = 0
FROM [dbo].[TimeEntry] [TIE]
JOIN @tempBatchH [TBH]
ON [TIE].[Matter] = [TBH].[Matter]
AND [TIE].[InvoiceNo] = [TBH].[CreditInvoiceNo]
AND [TIE].[TimeOrCharge] <> 'B'
AND [TIE].[DATE] = [TBH].[WriteDown]
END
END
END
/* Update the Matter Time & charge Balances */
EXEC [KAAS_SAMUpdateMatterTimeBalance] @MatterCode
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_UpdatePostingSAMBankTransfer'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdatePostingSAMBankTransfer]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdatePostingSAMBankTransfer] (
@BATCHNO INT,
@POSTFWD VARCHAR(1),
@HANDLER VARCHAR(20))
AS
/*******************************************************************************************************
* Update Bank Tranfer Posting Logic *
* *
* Stored Procedure Name: [dbo].[KAAS_UpdatePostingSAMBankTransfer] *
* *
* Modification History: *
* 2021-11-18 Balamurugan C Created *
* 2022-02-22 Balamurugan C Modified - Changed logic as pew SAM application and handled *
period end and post forward functionality *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
* 2023-05-17 John Ginnane Refactored the entire procedure *
* 2023-06-09 John Ginnane Fixed bug around matter ledger sign
* 2024-11-14 Aakif Modified - Removed hardcoded BatchNo *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO)
BEGIN
RAISERROR ('Transaction does not exist.', 16, 99)
RETURN
END
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[POSTED] = 'Y')
BEGIN
RAISERROR ('Transaction is already posted.', 16, 99)
RETURN
END
BEGIN TRY
BEGIN TRAN
UPDATE [BAH]
SET [BAH].[POSTED] = 'Y',
[BAH].[POSTFWD] = 'N'
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Make sure all matters are open
DECLARE @CLOSEDMATTERS VARCHAR(MAX)
SELECT @CLOSEDMATTERS = ISNULL(@CLOSEDMATTERS, '') +
CASE WHEN @CLOSEDMATTERS IS NULL
THEN ''
ELSE ', ' END + [MAT].[Code]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO
AND [MAT].[Closed] = 'Y'
IF ISNULL(@CLOSEDMATTERS, '') <> ''
BEGIN
SET @CLOSEDMATTERS = 'The following matters are closed: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CLOSEDMATTERS, 16, 99)
RETURN
END
DECLARE @CURYEAR INT
DECLARE @CURPER INT
DECLARE @VATNOMINAL VARCHAR(10)
DECLARE @CLCONTROL VARCHAR(10)
DECLARE @TODAY DATETIME
DECLARE @THIRDPARTY BIT
DECLARE @SHOWNOBAR BIT
DECLARE @CLIENTDEPOSIT BIT
SELECT @CURYEAR = [CON].[YEAR],
@CURPER = [CON].[CURPER],
@VATNOMINAL = [CON].[VAT],
@CLCONTROL = [CON].[CLIENT],
@SHOWNOBAR = CASE WHEN [CON].[NOBAR] = 'Y' THEN 1 ELSE 0 END,
-- Get today's DATE and not TIME. This is to make sure it stil works with Clarion apps
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0),
@CLIENTDEPOSIT = 0
FROM [dbo].[control] AS [CON]
SELECT @THIRDPARTY = CASE WHEN ISNULL([BAH].[THIRDPARTY], '') = 'Y'
THEN 1
ELSE 0 END
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
IF @THIRDPARTY = 1
BEGIN
SELECT @CLIENTDEPOSIT = CASE WHEN ISNULL([NOM].[DEPOSITYN], '') = 'Y'
THEN 1
ELSE 0 END
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CLIENTBANK] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
END
-- Rather than checking and displaying each EFT error message
-- I'm going to check all of them and collate the outputs
-- Then the user can be informed all multiple errors at once
DECLARE @EFTERROR VARCHAR(MAX)
SET @EFTERROR = ''
-- !need to check
-- !1 if the Bank EFT details are entered!
SELECT @EFTERROR = @EFTERROR +
COALESCE([NOM].[DESC], [NOM].[CODE], '') +
': Bank EFT details need to be entered!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[EFTYorN] = 'Y'
AND (ISNULL([NOM].[IBAN], '') = ''
OR ISNULL([NOM].[ACCOUNTNAME], '') = ''
OR ISNULL([NOM].[SORTCODE], '') = ''
OR ISNULL([NOM].[ACCOUNTNO], '') = ''
OR ISNULL([NOM].[BIC], '') = '')
SELECT @EFTERROR = @EFTERROR +
COALESCE([NOM].[DESC], [NOM].[CODE], '') +
': Bank EFT details need to be entered!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CLIENTBANK] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[EFTYorN] = 'Y'
AND (ISNULL([NOM].[IBAN], '') = ''
OR ISNULL([NOM].[ACCOUNTNAME], '') = ''
OR ISNULL([NOM].[SORTCODE], '') = ''
OR ISNULL([NOM].[ACCOUNTNO], '') = ''
OR ISNULL([NOM].[BIC], '') = '')
IF ISNULL(@EFTERROR, '') <> ''
BEGIN
RAISERROR(@EFTERROR, 16, 99)
RETURN
END
-- Make sure transaction is in correct year and period
UPDATE [BAH]
SET [BAH].[YEAR] = @CURYEAR,
[BAH].[PERNO] = @CURPER + CASE WHEN @POSTFWD = 'Y' THEN 1 ELSE 0 END
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Check Money Laundering on all matters
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] = 'Money Laundering_MoneyLaunderingCheck'
AND [SET].[KeyValue] IN ('1', 'true', 'Y'))
BEGIN
DECLARE @CHECKAMLMATTERS VARCHAR(MAX)
SELECT @CHECKAMLMATTERS = ISNULL(@CHECKAMLMATTERS, '') +
CASE WHEN @CHECKAMLMATTERS IS NULL
THEN ''
ELSE ', ' END + [CNT].[Code]
FROM [dbo].[Contacts] AS [CNT]
INNER JOIN (SELECT DISTINCT [MAT].[ClientCode]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [BatchContacts]
ON [BatchContacts].[ClientCode] = [CNT].[Code]
WHERE ISNULL([CNT].[Approved], 0) = 0
IF ISNULL(@CHECKAMLMATTERS, '') <> ''
BEGIN
SET @CHECKAMLMATTERS = 'The following clients are not approved for AML: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CHECKAMLMATTERS, 16, 99)
RETURN
END
END
UPDATE [BAD]
SET [BAD].[YEAR] = [BAH].[YEAR],
[BAD].[PERNO] = [BAH].[PERNO],
[BAD].[DATE] = [BAH].[DATE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- ! If it should be on the Matter Ledger
INSERT INTO [dbo].[MatterLedger] (
[MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate])
SELECT RTRIM([BAD].[MATTER]), /* MATTER */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM([BAD].[NARR]), /* NARR */
0, /* VALUED */
0, /* VALUEO */
ISNULL([BAD].[VALUE], 0) * -1, /* VALUEC */
[BAD].[FEE], /* FEE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
LEFT([BAD].[MATTER], 6), /* CLIENT */
CASE WHEN [NOM].[DepositYN] <> 'Y'
THEN ISNULL([BAD].[VALUE], 0) * -1
ELSE 0 END, /* VALUECC */
CASE WHEN [NOM].[DepositYN] = 'Y'
THEN ISNULL([BAD].[VALUE], 0) * -1
ELSE 0 END, /* VALUECD */
'', /* DEPOSITTYPE */
0, /* CURVALUED */
0, /* CURVALUEO */
ISNULL([BAD].[CURRENCYVALUE], 0) * -1, /* CURVALUEC */
CASE WHEN [NOM].[DEPOSITYN] <> 'Y'
THEN ISNULL([BAD].[CURRENCYVALUE], 0) * -1
ELSE 0 END, /* CURVALUECC */
CASE WHEN [NOM].[DEPOSITYN] = 'Y'
THEN ISNULL([BAD].[CURRENCYVALUE], 0) * -1
ELSE 0 END, /* CURVALUECD */
'', /* BILLED */
0, /* BILLINGYEAR */
0, /* BILLINGPERIOD */
NULL, /* BILLINGDATE */
0, /* BilledOutlayValue */
0, /* InvoiceNo */
0, /* IncludeInBill */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Update matter's last act
UPDATE [MAT]
SET [MAT].[LastActType] = CASE [BAD].[OUTLAY]
WHEN 'D' THEN 'Debtor Rec'
WHEN 'O' THEN 'Outlay Rec'
WHEN 'C' THEN 'Client Rec'
ELSE [MAT].[LastActType] END,
[MAT].[LastAct] = @TODAY,
[MAT].[LastActWho] = @HANDLER
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
INNER JOIN [dbo].[matters] AS [MAT]
ON [BAD].[MATTER] = [MAT].[Code]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- ! Update Nominal for Detail Lines
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM(@CLCONTROL), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM(LEFT([BAD].[NARR], 80)), /* NARR */
RTRIM([BAD].[MATTER]), /* MATTER */
RTRIM([BAD].[SUPP]), /* SUPP */
RTRIM([BAD].[FEE]), /* FEE */
(ISNULL([BAD].[VALUE], 0) - ISNULL([BAD].[VATVAL], 0)) * -1, /* VALUE */
(ISNULL([BAD].[CURRENCYVALUE], 0) - ISNULL([BAD].[CURRENCYVAT], 0)) * -1, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- ! If it should be on the Matter Ledger
INSERT INTO [dbo].[MatterLedger] (
[MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate])
SELECT RTRIM([BAD].[MATTER]), /* MATTER */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM([BAD].[NARR]), /* NARR */
CASE WHEN [BAD].[OUTLAY] = 'D'
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUED */
CASE WHEN [BAD].[OUTLAY] = 'O'
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUEO */
CASE WHEN [BAD].[OUTLAY] = 'C'
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUEC */
[BAD].[FEE], /* FEE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
LEFT([BAD].[MATTER], 6), /* CLIENT */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND @CLIENTDEPOSIT = 0
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUECC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND @CLIENTDEPOSIT = 1
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUECD */
'', /* DEPOSITTYPE */
CASE WHEN [BAD].[OUTLAY] = 'D'
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUED */
CASE WHEN [BAD].[OUTLAY] = 'O'
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUEO */
CASE WHEN [BAD].[OUTLAY] = 'C'
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUEC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND @CLIENTDEPOSIT = 0
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUECC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND @CLIENTDEPOSIT = 1
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUECD */
'', /* BILLED */
0, /* BILLINGYEAR */
0, /* BILLINGPERIOD */
NULL, /* BILLINGDATE */
0, /* BilledOutlayValue */
0, /* InvoiceNo */
0, /* IncludeInBill */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] <> 'N'
-- ! 4/10/00 Update Debtled for bank trans
INSERT INTO [dbo].[DebtorsLedger] (
[MATTER],
[TYPE],
[CLIENT],
[DATE],
[REF],
[BATCHNO],
[PREF],
[NARR],
[ORIGINAL],
[OSVALUE],
[ORFEES],
[OROUTLAY],
[ORVAT],
[OSFEES],
[OSOUTLAY],
[OSVAT],
[VATCODE],
[PER],
[YEAR],
[FEECODE],
[ClearedDate])
SELECT RTRIM([BAD].[MATTER]), /* MATTER */
'T', /* TYPE */
LEFT([BAD].[MATTER], 6), /* CLIENT */
[BAH].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
RTRIM([BAD].[NARR]), /* NARR */
ISNULL([BAD].[VALUE], 0), /* ORIGINAL */
ISNULL([BAD].[VALUE], 0), /* OSVALUE */
0, /* ORFEES */
0, /* OROUTLAY */
0, /* ORVAT */
0, /* OSFEES */
0, /* OSOUTLAY */
0, /* OSVAT */
[BAD].[VATCODE], /* VATCODE */
[BAH].[PERNO], /* PER */
[BAD].[YEAR], /* YEAR */
[BAD].[FEE], /* FEECODE */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] = 'D'
-- Check if client balance will be overdrawn with this posting
-- Or if the balance dips below the minimum amount
DECLARE @MATTERSCLIENTBALANCES TABLE (
[Code] VARCHAR(20) PRIMARY KEY,
[ClientMin] DECIMAL(19, 2),
[ClientCur] DECIMAL(19, 2),
[ClientDep] DECIMAL(19, 2))
;WITH [CTE_MAT] ([Code], [ClientMin]) AS (
SELECT DISTINCT [MAT].[Code], ISNULL([MAT].[ClientMin], 0)
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO),
[CTE_MTL] ([Code], [ClientMin], [ClientCur], [ClientDep]) AS (
SELECT LTRIM(RTRIM([CTE_MAT].[Code])),
[CTE_MAT].[ClientMin],
SUM(ISNULL([MTL].[VALUECC], 0)),
SUM(ISNULL([MTL].[VALUECD], 0))
FROM [CTE_MAT]
LEFT OUTER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MTL].[MATTER] = [CTE_MAT].[Code]
GROUP BY LTRIM(RTRIM([CTE_MAT].[Code])),
[CTE_MAT].[ClientMin])
INSERT INTO @MATTERSCLIENTBALANCES (
[Code],
[ClientMin],
[ClientCur],
[ClientDep])
SELECT [CTE_MTL].[Code],
[CTE_MTL].[ClientMin] * -1,
[CTE_MTL].[ClientCur],
[CTE_MTL].[ClientDep]
FROM [CTE_MTL]
DECLARE @OVERDRAWNMATTERS VARCHAR(MAX)
SELECT @OVERDRAWNMATTERS = ISNULL(@OVERDRAWNMATTERS, '') +
CASE WHEN @OVERDRAWNMATTERS IS NULL
THEN ''
ELSE ', ' END + [TMP].[Code]
FROM @MATTERSCLIENTBALANCES AS [TMP]
WHERE [TMP].[ClientCur] > 0
--OR [TMP].[ClientDep] > 0 -- Commented out in clarion for some reason
IF ISNULL(@OVERDRAWNMATTERS, '') <> ''
BEGIN
IF @SHOWNOBAR <> 1
BEGIN
SET @OVERDRAWNMATTERS = 'The following matters will be overdrawn: ' + @OVERDRAWNMATTERS + '. Cannot post.'
RAISERROR (@OVERDRAWNMATTERS, 16, 99)
RETURN
END
END
-- ! Update Nominal for Detail Lines
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM([BAD].[CODE]), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM(LEFT([BAD].[NARR], 80)), /* NARR */
RTRIM([BAD].[MATTER]), /* MATTER */
RTRIM([BAD].[SUPP]), /* SUPP */
RTRIM([BAD].[FEE]), /* FEE */
(ISNULL([BAD].[VALUE], 0) - ISNULL([BAD].[VATVAL], 0)), /* VALUE */
(ISNULL([BAD].[CURRENCYVALUE], 0) - ISNULL([BAD].[CURRENCYVAT], 0)), /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- ! Update Nominal for Batch Header
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM([BAH].[CODE]), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAH].[REF]), /* REF */
RTRIM(LEFT([BAH].[NARR], 80)), /* NARR */
RTRIM([BAH].[MATTER]), /* MATTER */
RTRIM([BAH].[SUPP]), /* SUPP */
RTRIM([BAH].[FEE]), /* FEE */
ISNULL([BAH].[VALUE], 0), /* VALUE */
ISNULL([BAH].[CURRENCYVALUE], 0), /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- ! Update Nominal for Batch Header
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM([BAH].[CLIENTBANK]), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAH].[REF]), /* REF */
RTRIM(LEFT([BAH].[NARR], 80)), /* NARR */
RTRIM([BAH].[MATTER]), /* MATTER */
RTRIM([BAH].[SUPP]), /* SUPP */
RTRIM([BAH].[FEE]), /* FEE */
ISNULL([BAH].[VALUE], 0) * -1, /* VALUE */
ISNULL([BAH].[CURRENCYVALUE], 0) * -1, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- After we're done try to recalculate only the relevant balances
IF OBJECT_ID(N'KAAS_RebuildBalances', N'P') IS NOT NULL
BEGIN
/* Get list of affected matters, suppliers, and nominals to rebuild */
DECLARE @REBUILDXML NVARCHAR(MAX)
SET @REBUILDXML = N''
SELECT @REBUILDXML = @REBUILDXML + [A].[MATTER]
FROM (SELECT N'' AS [MATTER]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAH].[MATTER]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [MATTER]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + [A].[CODE]
FROM (SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CLIENTBANK] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAD].[CODE] = [NOM].[CODE]
WHERE [BAD].[BATCHNO] = @BATCHNO
--UNION
--SELECT N''
UNION
SELECT N'') AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + N''
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Suppliers] AS [SUP]
ON [BAH].[SUPP] = [SUP].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
SET @REBUILDXML = @REBUILDXML + N''
EXEC [dbo].[KAAS_RebuildBalances] @REBUILDXML
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_UpdatePostingSAMInvoice'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdatePostingSAMInvoice]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdatePostingSAMInvoice] (
@BATCHNO INT,
@POSTFWD VARCHAR(1),
@HANDLER VARCHAR(20))
AS
/*******************************************************************************************************
* Journal Posting Logic *
* *
* Stored Procedure Name : [dbo].[KAAS_UpdatePostingSAMInvoice] *
* *
* Modification History: *
* 2022-01-13 Balamurugan C Created *
* 2022-02-21 Balamurugan C Modified - Changed condition as per SAM *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
* 2022-07-15 John Ginnane Refactored the entire procedure *
* 2022-10-17 Ghayathri.S.V Modified - Updated all the cleared date values based on *
batch header record *
* 2024-06-24 Balamurugan.C Modified - If it is open invoice place the *
draft number in respective matter and open invoice *
flag condition *
* 2024-11-14 Aakif Modified - Removed hardcoded BatchNo *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO)
BEGIN
RAISERROR ('Transaction does not exist.', 16, 99)
RETURN
END
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[POSTED] = 'Y')
BEGIN
RAISERROR ('Transaction is already posted.', 16, 99)
RETURN
END
BEGIN TRY
BEGIN TRAN
UPDATE [BAH]
SET [BAH].[POSTED] = 'Y',
[BAH].[POSTFWD] = 'N'
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Make sure all matters are open
DECLARE @CLOSEDMATTERS VARCHAR(MAX)
SELECT @CLOSEDMATTERS = ISNULL(@CLOSEDMATTERS, '') +
CASE WHEN @CLOSEDMATTERS IS NULL
THEN ''
ELSE ', ' END + [MAT].[Code]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO
AND [MAT].[Closed] = 'Y'
IF ISNULL(@CLOSEDMATTERS, '') <> ''
BEGIN
SET @CLOSEDMATTERS = 'The following matters are closed: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CLOSEDMATTERS, 16, 99)
RETURN
END
DECLARE @CURYEAR INT
DECLARE @CURPER INT
DECLARE @DEBTORS VARCHAR(10)
DECLARE @OUTLAY VARCHAR(10)
DECLARE @VATNOMINAL VARCHAR(10)
DECLARE @TODAY DATETIME
DECLARE @THIRDPARTY BIT
DECLARE @SHOWNOBAR BIT
DECLARE @MoneyLaunderingCheck VARCHAR(1)
DECLARE @MatterOutlayBudgetCheckON VARCHAR(1)
DECLARE @INVCR INT
DECLARE @EICONVERT DECIMAL(19, 6)
DECLARE @IsBranchingEnabled BIT
DECLARE @TIMECOSTING VARCHAR(1)
SELECT @CURYEAR = [CON].[YEAR],
@CURPER = [CON].[CURPER],
@DEBTORS = [CON].[DEBTORS],
@OUTLAY = [CON].[OUTLAY],
@VATNOMINAL = [CON].[VAT],
@SHOWNOBAR = CASE WHEN [CON].[NOBAR] = 'Y' THEN 1 ELSE 0 END,
-- Get today's DATE and not TIME. This is to make sure it stil works with Clarion apps
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0),
@INVCR = 1,
@EICONVERT = 0.787564, -- This is hard coded in clarion code
@IsBranchingEnabled = CASE WHEN ISNULL([CON].[INDICATOR22], '') = 'Y' THEN 1 ELSE 0 END,
@TIMECOSTING = ISNULL([CON].[TIMECOSTING], '')
FROM [dbo].[control] AS [CON]
SELECT @MatterOutlayBudgetCheckON = CASE WHEN [SET].[KeyName] = 'MatterOutlayBudgetCheckON'
THEN [SET].[KeyValue]
ELSE @MatterOutlayBudgetCheckON END,
@MoneyLaunderingCheck = CASE WHEN [SET].[KeyName] = 'Money Laundering_MoneyLaunderingCheck'
THEN [SET].[KeyValue]
ELSE @MoneyLaunderingCheck END
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] IN ('MatterOutlayBudgetCheckON',
'Money Laundering_MoneyLaunderingCheck')
SELECT @MatterOutlayBudgetCheckON = ISNULL(@MatterOutlayBudgetCheckON, '')
SELECT @INVCR = CASE WHEN [BAH].[INVCR] = 'C' THEN -1 ELSE 1 END
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
UPDATE [BAH]
SET [BAH].[YEAR] = @CURYEAR,
[BAH].[PERNO] = @CURPER + CASE WHEN @POSTFWD = 'Y' THEN 1 ELSE 0 END,
[BAH].[POSTED] = 'Y',
[BAH].[POSTFWD] = 'N'
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
UPDATE [BAD]
SET [BAD].[YEAR] = [BAH].[YEAR],
[BAD].[PERNO] = [BAH].[PERNO],
[BAD].[DATE] = [BAH].[DATE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Check Money Laundering on all matters
IF @MoneyLaunderingCheck = 'Y'
BEGIN
DECLARE @CHECKAMLMATTERS VARCHAR(MAX)
SELECT @CHECKAMLMATTERS = ISNULL(@CHECKAMLMATTERS, '') +
CASE WHEN @CHECKAMLMATTERS IS NULL
THEN ''
ELSE ', ' END + [CNT].[Code]
FROM [dbo].[Contacts] AS [CNT]
INNER JOIN (SELECT DISTINCT [MAT].[ClientCode]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [BatchContacts]
ON [BatchContacts].[ClientCode] = [CNT].[Code]
WHERE ISNULL([CNT].[Approved], 0) = 0
IF ISNULL(@CHECKAMLMATTERS, '') <> ''
BEGIN
SET @CHECKAMLMATTERS = 'The following clients are not approved for AML: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CHECKAMLMATTERS, 16, 99)
RETURN
END
END
-- ! Update Matter (if Outlay on invoice)
INSERT INTO [dbo].[MatterLedger] (
[MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate])
SELECT RTRIM([BAH].[MATTER]), /* MATTER */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAH].[REF]), /* REF */
'To Invoice ' + RTRIM([BAH].[REF]), /* NARR */
0, /* VALUED */
ISNULL([BAH].[OUTLAYTOT], 0) * -1 * @INVCR, /* VALUEO */
0, /* VALUEC */
'', /* FEE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
LEFT([BAH].[MATTER], 6), /* CLIENT */
0, /* VALUECC */
0, /* VALUECD */
'', /* DEPOSITTYPE */
0, /* CURVALUED */
CASE WHEN [BAH].[CURRENCY] = 'I'
THEN [BAH].[OUTLAYTOT] / @EICONVERT * -1 * @INVCR
WHEN [BAH].[CURRENCY] = 'E'
THEN [BAH].[OUTLAYTOT] * @EICONVERT * -1 * @INVCR
ELSE 0 END, /* CURVALUEO */
0, /* CURVALUEC */
0, /* CURVALUECC */
0, /* CURVALUECD */
'', /* BILLED */
0, /* BILLINGYEAR */
0, /* BILLINGPERIOD */
NULL, /* BILLINGDATE */
0, /* BilledOutlayValue */
0, /* InvoiceNo */
0, /* IncludeInBill */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[OUTLAYTOT] <> 0
AND [BAH].[SINGLELINE] = 'Y'
-- ! Update Outlay Nominal for Detail Lines
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT @OUTLAY, /* CODE */
CASE WHEN @IsBranchingEnabled = 1
THEN ISNULL(RTRIM([BAH].[BRANCH]), '')
ELSE '' END, /* BRANCH */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
ISNULL(RTRIM([BAH].[REF]), ''), /* REF */
'To Invoice ' + ISNULL(RTRIM([BAH].[REF]), ''), /* NARR */
ISNULL(RTRIM([BAH].[MATTER]), ''), /* MATTER */
'', /* SUPP */
'', /* FEE */
[BAH].[OUTLAYTOT] * -1 * @INVCR, /* VALUE */
[MTL].[CURVALUEO] * -1 * @INVCR, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MTL].[BATCHNO] = [BAH].[BATCHNO]
AND [MTL].[PREF] = [BAH].[PREF]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[OUTLAYTOT] <> 0
AND [BAH].[SINGLELINE] = 'Y'
-- ! If it should be on the Matter Ledger
INSERT INTO [dbo].[MatterLedger] (
[MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate])
SELECT ISNULL(RTRIM([BAH].[MATTER]), ''), /* MATTER */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAD].[DATE], /* DATE */
ISNULL(RTRIM([BAD].[REF]), ''), /* REF */
CASE WHEN ISNULL(RTRIM(LTRIM([BAH].[INVCR])), '') = 'C'
THEN 'From Cr. Note ' +
ISNULL(RTRIM(LTRIM([BAH].[REF])), '')
ELSE 'To Inv ' +
ISNULL(RTRIM(LTRIM([BAH].[REF])), '') +
' ' +
ISNULL(RTRIM(LTRIM([BAD].[NARR])), '') END, /* NARR */
0, /* VALUED */
ISNULL([BAD].[VALUE], 0) * -1 * @INVCR, /* VALUEO */
0, /* VALUEC */
ISNULL(RTRIM(LTRIM([BAD].[FEE])), ''), /* FEE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
LEFT([BAH].[MATTER], 6), /* CLIENT */
0, /* VALUECC */
0, /* VALUECD */
'', /* DEPOSITTYPE */
0, /* CURVALUED */
ISNULL([BAD].[CURRENCYVALUE], 0) * -1 * @INVCR, /* CURVALUEO */
0, /* CURVALUEC */
0, /* CURVALUECC */
0, /* CURVALUECD */
'', /* BILLED */
0, /* BILLINGYEAR */
0, /* BILLINGPERIOD */
NULL, /* BILLINGDATE */
ISNULL([BAD].[VALUE], 0) * -1 * @INVCR, /* BilledOutlayValue */
0, /* InvoiceNo */
0, /* IncludeInBill */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND ([BAD].[OUTLAY] = 'O'
AND [BAH].[SINGLELINE] <> 'Y')
-- ! Update Nominal for Detail Lines
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT ISNULL(RTRIM([BAD].[CODE]), ''), /* CODE */
CASE WHEN @IsBranchingEnabled = 1 THEN [BAH].[BRANCH] ELSE '' END, /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAD].[DATE], /* DATE */
ISNULL(RTRIM([BAD].[REF]), ''), /* REF */
ISNULL(RTRIM([BAD].[NARR]), ''), /* NARR */
ISNULL(RTRIM([BAH].[MATTER]), ''), /* MATTER */
'', /* SUPP */
ISNULL(RTRIM([BAD].[FEE]), ''), /* FEE */
ISNULL([BAD].[VALUE], 0) * -1 * @INVCR, /* VALUE */
ISNULL([BAD].[CURRENCYVALUE], 0) * -1 * @INVCR, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND ([BAD].[OUTLAY] = 'F'
OR ([BAD].[OUTLAY] = 'O'
AND [BAH].[SINGLELINE] <> 'Y'))
-- ! Update Nominal for Detail Lines VAT
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT ISNULL(RTRIM(@VATNOMINAL), ''), /* CODE */
CASE WHEN @IsBranchingEnabled = 1 THEN [BAH].[BRANCH] ELSE '' END, /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAD].[DATE], /* DATE */
ISNULL(RTRIM([BAD].[REF]), ''), /* REF */
'VAT on Invoice/Cr Note ' + ISNULL(RTRIM([BAD].[REF]), ''), /* NARR */
ISNULL(RTRIM([BAH].[MATTER]), ''), /* MATTER */
'', /* SUPP */
ISNULL(RTRIM([BAD].[FEE]), ''), /* FEE */
ISNULL([BAD].[VATVAL], 0) * -1 * @INVCR, /* VALUE */
ISNULL([BAD].[CURRENCYVAT], 0) * -1 * @INVCR, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[VATVAL] <> 0
AND ([BAD].[OUTLAY] = 'F'
OR ([BAD].[OUTLAY] = 'O'
AND [BAH].[SINGLELINE] <> 'Y'))
-- ! Update Nominal for Batch Header
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT ISNULL(RTRIM(@DEBTORS), ''), /* CODE */
CASE WHEN @IsBranchingEnabled = 1 THEN [BAH].[BRANCH] ELSE '' END, /* BRANCH */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
ISNULL(RTRIM([BAH].[REF]), ''), /* REF */
ISNULL(RTRIM([BAH].[NARR]), ''), /* NARR */
ISNULL(RTRIM([BAH].[MATTER]), ''), /* MATTER */
'', /* SUPP */
ISNULL(RTRIM([BAH].[FEE]), ''), /* FEE */
ISNULL([BAH].[VALUE], 0) * @INVCR, /* VALUE */
ISNULL([BAH].[CURRENCYVALUE], 0) * @INVCR, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
DECLARE @MAL_NARR VARCHAR(80)
SELECT @MAL_NARR = CASE WHEN ISNULL(RTRIM(LTRIM([BAH].[INVCR])), '') = 'C'
THEN 'Cr. Note:'
ELSE 'Invoice:' END +
' Fees:' + CONVERT(VARCHAR(20), ISNULL([BAH].[FEETOT], 0)) +
' Outlay:' + CONVERT(VARCHAR(20), ISNULL([BAH].[OUTLAYTOT], 0)) +
' VAT:' + CONVERT(VARCHAR(20), ISNULL([BAH].[VATTOT], 0))
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- !Update Matter Debtors Ledger
INSERT INTO [dbo].[MatterLedger] (
[MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate])
SELECT ISNULL(RTRIM([BAH].[MATTER]), ''), /* MATTER */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
ISNULL(RTRIM([BAH].[REF]), ''), /* REF */
@MAL_NARR, /* NARR */
ISNULL([BAH].[VALUE], 0) * @INVCR, /* VALUED */
0, /* VALUEO */
0, /* VALUEC */
ISNULL(RTRIM(LTRIM([BAH].[FEE])), ''), /* FEE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
LEFT([BAH].[MATTER], 6), /* CLIENT */
0, /* VALUECC */
0, /* VALUECD */
'', /* DEPOSITTYPE */
ISNULL([BAH].[CURRENCYVALUE], 0) * @INVCR, /* CURVALUED */
0, /* CURVALUEO */
0, /* CURVALUEC */
0, /* CURVALUECC */
0, /* CURVALUECD */
'', /* BILLED */
0, /* BILLINGYEAR */
0, /* BILLINGPERIOD */
NULL, /* BILLINGDATE */
0, /* BilledOutlayValue */
0, /* InvoiceNo */
0, /* IncludeInBill */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Update matter's last act
UPDATE [MAT]
SET [MAT].[LastActType] = 'Inv/CrNote',
[MAT].[LastAct] = @TODAY,
[MAT].[LastActWho] = @HANDLER,
[MAT].[EstFee] = 0,
[MAT].[ExpBillD] = NULL,
[MAT].[FNL_Date] = NULL,
[MAT].[FNL_Name] = '',
[MAT].[FNL_Address] = '',
[MAT].[FNL_Fees] = 0,
[MAT].[FNL_Outlay] = 0,
[MAT].[FNL_VAT] = 0,
[MAT].[FNL_Total] = 0,
[MAT].[ExpPayD] = DATEADD(DAY, 30, [BAH].[DATE])
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [BAH].[MATTER] = [MAT].[Code]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- !here We need to have the Bill Fee total JUST the Normal FEEs ie do not include the Misc Outlay
-- !we will get this from the billDetails Type = 'F'...
DECLARE @BHFEESTOT DECIMAL(19, 2)
SET @BHFEESTOT = 0
SELECT @BHFEESTOT = CASE WHEN ISNULL([BAH].[DRAFTBILLNO], 0) <> 0
THEN ISNULL([BD].[Value], 0)
ELSE ISNULL([BAH].[FEETOT], 0) END -- !just use the total as before from the batchHeader.
FROM [dbo].[BatchH] AS [BAH]
OUTER APPLY (SELECT SUM(ISNULL([BD].[NET], 0)) AS [Value]
FROM [dbo].[BillDetails] AS [BD]
WHERE [BD].[TYPE] = 'F'
AND [BD].[DRAFTNO] = [BAH].[DraftBillNo]) AS [BD]
WHERE [BAH].[BATCHNO] = @BATCHNO
INSERT INTO [dbo].[TimeEntry] (
[Matter],
[FeeEarn],
[Date],
[Time],
[Rate],
[Charge],
[Charged],
[Units],
[Task],
[TimeOrCharge],
[Comment],
[Billed],
[NCCode],
[Docket],
[Team],
[TrackRef],
[Rec_Irr],
[ShouldHave],
[InvoiceNo],
[Period],
[Year],
[BillingPeriod],
[BillingYear],
[OpenInv],
[ActionID],
[StageCode],
[BillingDate],
[BilledDate],
[BilledAmount],
[AxleNumber],
[WriteOffDT],
[WriteOffID],
[IncludeInBill],
[Leave],
[MatterLevel],
[FEERate],
[ChargedMins],
[FEECost],
[TaskLevel],
[WriteOff],
[Branch],
[EntryDate],
[ModifyDate])
SELECT LTRIM(RTRIM([BAH].[MATTER])), /* Matter */
LTRIM(RTRIM([MAT].[FECode])), /* FeeEarn */
[BAH].[WRITEDOWN], /* Date */
0, /* Time */
0, /* Rate */
CASE WHEN [BAH].[SUPP] = 'Y'
OR [BAH].[INVCR] = 'I'
THEN @BHFEESTOT * -1
ELSE @BHFEESTOT END, /* Charge */
CASE WHEN [BAH].[SUPP] = 'Y'
THEN @BHFEESTOT * -1
ELSE @BHFEESTOT END, /* Charged */
1, /* Units */
CASE WHEN [BAH].[INVCR] = 'C'
THEN 'CREDIT'
ELSE 'BILLED' END, /* Task */
'B', /* TimeOrCharge */
CASE WHEN ISNULL([BAH].[SUPP], '') = 'Y'
THEN 'Open Invoice: (Total: ' + CONVERT(VARCHAR(20), ISNULL([BAH].[VALUE], 0)) +
', Billed Fees:' + CONVERT(VARCHAR(20), @BHFEESTOT) + ')'
WHEN ISNULL([BAH].[INVCR], '') = 'C'
THEN 'Cr. Note Fees: ' + CONVERT(VARCHAR(20), @BHFEESTOT)
ELSE 'Billed Fees: ' + CONVERT(VARCHAR(20), @BHFEESTOT) END, /* Comment */
0, /* Billed */
'', /* NCCode */
0, /* Docket */
ISNULL(LTRIM(RTRIM([HAN].[TEAM])), ''), /* Team */
0, /* TrackRef */
'C', /* Rec_Irr */
0, /* ShouldHave */
CONVERT(INT, [BAH].[REF]), /* InvoiceNo */ -- This is extremely risky
[BAH].[PERNO], /* Period */
[BAH].[YEAR], /* Year */
0, /* BillingPeriod */
0, /* BillingYear */
CASE WHEN ISNULL([BAH].[SUPP], '') = 'Y'
THEN 'Y'
ELSE 'N' END, /* OpenInv */
0, /* ActionID */
'', /* StageCode */
[BAH].[DATE], /* BillingDate */
[BAH].[DATE], /* BilledDate */
0, /* BilledAmount */
0, /* AxleNumber */
NULL, /* WriteOffDT */
NULL, /* WriteOffID */
0, /* IncludeInBill */
NULL, /* Leave */
NULL, /* MatterLevel */
NULL, /* FEERate */
NULL, /* ChargedMins */
NULL, /* FEECost */
NULL, /* TaskLevel */
NULL, /* WriteOff */
NULL, /* Branch */
@TODAY, /* EntryDate */
@TODAY /* ModifyDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAH].[MATTER]
INNER JOIN [dbo].[Handlers] AS [HAN]
ON [HAN].[CODE] = [MAT].[FECode]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- !Update Debtors Ledger
INSERT INTO [dbo].[DebtorsLedger] (
[MATTER],
[TYPE],
[CLIENT],
[DATE],
[REF],
[BATCHNO],
[PREF],
[NARR],
[ORIGINAL],
[OSVALUE],
[ORFEES],
[OROUTLAY],
[ORVAT],
[OSFEES],
[OSOUTLAY],
[OSVAT],
[VATCODE],
[PER],
[YEAR],
[FEECODE],
[ClearedDate])
SELECT LTRIM(RTRIM([BAH].[MATTER])), /* MATTER */
'I', /* TYPE */
[MAT].[ClientCode], /* CLIENT */
[BAH].[DATE], /* DATE */
LTRIM(RTRIM([BAH].[REF])), /* REF */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
@MAL_NARR, /* NARR */
[BAH].[VALUE] * @INVCR, /* ORIGINAL */
[BAH].[VALUE] * @INVCR, /* OSVALUE */
[BAH].[FEETOT] * @INVCR, /* ORFEES */
[BAH].[OUTLAYTOT] * @INVCR, /* OROUTLAY */
[BAH].[VATTOT] * @INVCR, /* ORVAT */
[BAH].[FEETOT] * @INVCR, /* OSFEES */
[BAH].[OUTLAYTOT] * @INVCR, /* OSOUTLAY */
[BAH].[VATTOT] * @INVCR, /* OSVAT */
ISNULL([BAD].[VATCODE], ''), /* VATCODE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
'', /* FEECODE */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [BAH].[MATTER] = [MAT].[Code]
OUTER APPLY (SELECT TOP 1 ISNULL([BAD].[VATCODE], '') AS [VATCODE]
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[BATCHNO] = [BAH].[BATCHNO]
AND [BAD].[OUTLAY] = 'F') AS [BAD]
WHERE [BAH].[BATCHNO] = @BATCHNO
INSERT INTO [dbo].[CostTransGathering] (
[DATE],
[MATTER],
[VALUE],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF])
SELECT [BAH].[DATE] , /* DATE */
LTRIM(RTRIM([BAH].[MATTER])), /* MATTER */
[BAH].[VALUE], /* VALUE */
LTRIM(RTRIM([BAH].[CURRENCY])), /* ENTRYCURRENCY */
[BAH].[CURRENCYVALUE], /* CURRENCYVALUE */
0, /* CURRENCYVAT */
0, /* HEADPREF */
0, /* HEADBATCH */
[BAH].[BATCHNO], /* ALLOCBATCH */
[BAH].[PREF], /* ALLOCPREF */
LTRIM(RTRIM([BAH].[REF])), /* ALLOCREF */
[BAH].[VALUE], /* ALLOCVALUE */
'N' /* ALLOCWRITEOFF */
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[THIRDPARTY] = 'Y'
-- !if OPEN Invoice then place Invoice number in the matters record 25/09/02 CS
IF @TIMECOSTING = 'Y'
BEGIN
UPDATE [MAT]
SET [MAT].[OpenInvoiceNo] = [BIH].[BILLNO]
FROM [dbo].[matters] AS [MAT]
INNER JOIN [dbo].[BatchH] AS [BAH]
ON [MAT].[Code] = [BAH].[MATTER]
INNER JOIN [dbo].[BillHeader] AS [BIH]
ON [BIH].[MATTER] = [BAH].[MATTER]
AND [BIH].[OPENINVOICE] = 'Y'
AND CONVERT(VARCHAR(10), [BIH].[BILLNO]) = [BAH].[REF]
AND [BIH].[DRAFTNO] = [BAH].[DraftBillNo]
WHERE [BAH].[BATCHNO] = @BATCHNO
END
-- !New place due to rollbacks and commits in SQL procedures... #80
-- ! Update Time and Outlay for this invoice
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[INVCR] = 'I')
BEGIN
EXEC [dbo].[ky_BGProcess] @BATCHNO
-- !check for errors
IF ISNULL((SELECT COUNT(1)
FROM [dbo].[BGControl] AS [BGC]
WHERE [BGC].[BATCHNO] = @BATCHNO), 0) = 0
BEGIN
RAISERROR ('No BG Control Error', 16, 99)
END
-- ! If this is a Composite Bill in to post the composite JOurnal
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [BAH].[MATTER] = [MAT].[Code]
WHERE [MAT].[CompBillingMatter] = [MAT].[Code]
AND [BAH].[BATCHNO] = @BATCHNO)
BEGIN
EXEC [dbo].[ky_BGTransfer] @BATCHNO
END
END
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[INVCR] = 'C')
BEGIN
DECLARE @CREDITINVOICENO INT
SELECT @CREDITINVOICENO = ISNULL([BAH].[CreditInvoiceNo], 0)
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
IF @CREDITINVOICENO <> 0
BEGIN
EXEC [dbo].[ky_BGReset] @CREDITINVOICENO
END
-- ! If this is a Composite Bill in to post the composite JOurnal
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [BAH].[MATTER] = [MAT].[Code]
WHERE [MAT].[CompBillingMatter] = [MAT].[Code]
AND [BAH].[BATCHNO] = @BATCHNO)
BEGIN
EXEC [dbo].[ky_BGTransfer] @BATCHNO
END
-- !new stuff if user does not user Billing wizard AT ALL !#81 took out as credit notes get a NEW bill No in the BAH:Ref field....
-- !check BGControl for Batch..
-- !this HAS to be the invoice Number to credit!
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[DraftBillNo] = 0
AND [BAH].[CreditInvoiceNo] <> 0) AND
NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[BGControl] AS [BGC]
WHERE [BGC].[BATCHNO] = @BATCHNO)
BEGIN
UPDATE [TIE]
SET [TIE].[InvoiceNo] = 0,
[TIE].[BilledAmount] = 0,
[TIE].[BillingPeriod] = 0,
[TIE].[BillingYear] = 0
FROM [dbo].[TimeEntry] AS [TIE]
INNER JOIN [dbo].[BatchH] AS [BAH]
ON [BAH].[BATCHNO] = @BATCHNO
AND [TIE].[Matter] = [BAH].[MATTER]
AND [TIE].[InvoiceNo] = [BAH].[CreditInvoiceNo]
AND [TIE].[TimeOrCharge] <> 'B'
AND [TIE].[Date] <= [BAH].[WRITEDOWN]
END
END
-- After we're done try to recalculate only the relevant balances
IF OBJECT_ID(N'KAAS_RebuildBalances', N'P') IS NOT NULL
BEGIN
/* Get list of affected matters, suppliers, and nominals to rebuild */
DECLARE @REBUILDXML NVARCHAR(MAX)
SET @REBUILDXML = N''
SELECT @REBUILDXML = @REBUILDXML + [A].[MATTER]
FROM (SELECT N'' AS [MATTER]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAH].[MATTER]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [MATTER]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + [A].[CODE]
FROM (SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CLIENTBANK] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAD].[CODE] = [NOM].[CODE]
WHERE [BAD].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
UNION
SELECT N'' AS [CODE]
UNION
SELECT N'' AS [CODE]) AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + N''
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Suppliers] AS [SUP]
ON [BAH].[SUPP] = [SUP].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
SET @REBUILDXML = @REBUILDXML + N''
EXEC [dbo].[KAAS_RebuildBalances] @REBUILDXML
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_UpdatePostingSAMJournal'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdatePostingSAMJournal]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdatePostingSAMJournal] (
@BATCHNO INT,
@POSTFWD VARCHAR(1),
@HANDLER VARCHAR(20))
AS
/*******************************************************************************************************
* Journal Posting Logic *
* *
* Stored Procedure Name : [dbo].[KAAS_UpdatePostingSAMJournal] *
* *
* Modification History: *
* 2022-01-13 Balamurugan C Created *
* 2022-02-21 Balamurugan C Modified - Changed condition as per SAM *
* 2022-03-09 Balamurugan C Modified - Handled TCL Statements *
* 2022-07-15 John Ginnane Refactored the entire procedure *
* 2024-03-04 Balamurugan C Added OSOutlay and OROutlay *
* 2024-05-27 Ghayathri S.V Updated the OS value logic for allocation *
* 2024-11-14 Aakif Modified - Removed hardcoded BatchNo *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO)
BEGIN
RAISERROR ('Transaction does not exist.', 16, 99)
RETURN
END
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[POSTED] = 'Y')
BEGIN
RAISERROR ('Transaction is already posted.', 16, 99)
RETURN
END
BEGIN TRY
BEGIN TRAN
UPDATE [BAH]
SET [BAH].[POSTED] = 'Y',
[BAH].[POSTFWD] = 'N'
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Make sure all matters are open
DECLARE @CLOSEDMATTERS VARCHAR(MAX)
SELECT @CLOSEDMATTERS = ISNULL(@CLOSEDMATTERS, '') +
CASE WHEN @CLOSEDMATTERS IS NULL
THEN ''
ELSE ', ' END + [MAT].[Code]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO
AND [MAT].[Closed] = 'Y'
IF ISNULL(@CLOSEDMATTERS, '') <> ''
BEGIN
SET @CLOSEDMATTERS = 'The following matters are closed: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CLOSEDMATTERS, 16, 99)
RETURN
END
DECLARE @CURYEAR INT
DECLARE @CURPER INT
DECLARE @VATNOMINAL VARCHAR(10)
DECLARE @FEESWRITEOFF VARCHAR(10)
DECLARE @TODAY DATETIME
DECLARE @THIRDPARTY BIT
DECLARE @SHOWNOBAR BIT
DECLARE @MatterLaunderingCheck VARCHAR(1)
DECLARE @MatterOutlayBudgetCheckON VARCHAR(1)
SELECT @CURYEAR = [CON].[YEAR],
@CURPER = [CON].[CURPER],
@VATNOMINAL = [CON].[VAT],
@FEESWRITEOFF = [CON].[FEESWRITEOFF],
--@CLCONTROL = [CON].[CLIENT],
@SHOWNOBAR = CASE WHEN [CON].[NOBAR] = 'Y' THEN 1 ELSE 0 END,
-- Get today's DATE and not TIME. This is to make sure it stil works with Clarion apps
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
FROM [dbo].[control] AS [CON]
SELECT @MatterOutlayBudgetCheckON = CASE WHEN [SET].[KeyName] = 'MatterOutlayBudgetCheckON'
THEN [SET].[KeyValue]
ELSE @MatterOutlayBudgetCheckON END,
@MatterLaunderingCheck = CASE WHEN [SET].[KeyName] = 'Money Laundering_MoneyLaunderingCheck'
THEN [SET].[KeyValue]
ELSE @MatterLaunderingCheck END
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] IN ('MatterOutlayBudgetCheckON',
'Money Laundering_MoneyLaunderingCheck')
SELECT @MatterOutlayBudgetCheckON = ISNULL(@MatterOutlayBudgetCheckON, '')
UPDATE [BAH]
SET [BAH].[YEAR] = @CURYEAR,
[BAH].[PERNO] = @CURPER + CASE WHEN @POSTFWD = 'Y' THEN 1 ELSE 0 END
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
UPDATE [BAD]
SET [BAD].[YEAR] = [BAH].[YEAR],
[BAD].[PERNO] = [BAH].[PERNO]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Check Money Laundering on all matters
IF @MatterLaunderingCheck = 'Y'
BEGIN
DECLARE @CHECKAMLMATTERS VARCHAR(MAX)
SELECT @CHECKAMLMATTERS = ISNULL(@CHECKAMLMATTERS, '') +
CASE WHEN @CHECKAMLMATTERS IS NULL
THEN ''
ELSE ', ' END + [CNT].[Code]
FROM [dbo].[Contacts] AS [CNT]
INNER JOIN (SELECT DISTINCT [MAT].[ClientCode]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [BatchContacts]
ON [BatchContacts].[ClientCode] = [CNT].[Code]
IF ISNULL(@CHECKAMLMATTERS, '') <> ''
BEGIN
SET @CHECKAMLMATTERS = 'The following clients are not approved for AML: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CHECKAMLMATTERS, 16, 99)
RETURN
END
END
-- ! If it should be on the Matter Ledger
INSERT INTO [dbo].[MatterLedger] (
[MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate])
SELECT RTRIM([BAD].[MATTER]), /* MATTER */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM([BAD].[NARR]), /* NARR */
CASE WHEN [BAD].[OUTLAY] = 'D'
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUED */
CASE WHEN [BAD].[OUTLAY] = 'O'
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUEO */
CASE WHEN [BAD].[OUTLAY] = 'C'
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUEC */
[BAD].[FEE], /* FEE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
LEFT([BAD].[MATTER], 6), /* CLIENT */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND [BAH].[THIRDPARTY] <> 'Y'
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUECC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND [BAH].[THIRDPARTY] = 'Y'
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUECD */
'', /* DEPOSITTYPE */
CASE WHEN [BAD].[OUTLAY] = 'D'
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUED */
CASE WHEN [BAD].[OUTLAY] = 'O'
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUEO */
CASE WHEN [BAD].[OUTLAY] = 'C'
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUEC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND [BAH].[THIRDPARTY] <> 'Y'
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUECC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND [BAH].[THIRDPARTY] = 'Y'
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUECD */
'', /* BILLED */
0, /* BILLINGYEAR */
0, /* BILLINGPERIOD */
NULL, /* BILLINGDATE */
0, /* BilledOutlayValue */
0, /* InvoiceNo */
0, /* IncludeInBill */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] <> 'N'
-- Check if outlay balance is more than the budget
IF @MatterOutlayBudgetCheckON = 'Y'
BEGIN
DECLARE @MATTERSOUTLAYBALANCES TABLE (
[Code] VARCHAR(20) PRIMARY KEY,
[OutlayBudget] DECIMAL(19, 2),
[OutlayBalance] DECIMAL(19, 2))
;WITH [CTE_MAT] ([Code], [OutlayBudget]) AS (
SELECT DISTINCT [BAD].[MATTER], [MAT].[OutlayBud]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [BAD].[MATTER] = [MAT].[Code]
WHERE [BAD].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] <> 'N'),
[CTE_MTL] ([Code], [OutlayBudget], [OutlayBal]) AS (
SELECT [CTE_MAT].[Code],
[CTE_MAT].[OutlayBudget],
SUM(ISNULL([MTL].[VALUEO], 0))
FROM [CTE_MAT]
LEFT OUTER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MTL].[MATTER] = [CTE_MAT].[Code]
GROUP BY [CTE_MAT].[Code],
[CTE_MAT].[OutlayBudget])
INSERT INTO @MATTERSOUTLAYBALANCES (
[Code],
[OutlayBudget],
[OutlayBalance])
SELECT [CTE_MTL].[Code],
[CTE_MTL].[OutlayBudget],
[CTE_MTL].[OutlayBal]
FROM [CTE_MTL]
DECLARE @OVERBUDGETMATTERS VARCHAR(MAX)
SELECT @OVERBUDGETMATTERS = ISNULL(@OVERBUDGETMATTERS, '') +
CASE WHEN @OVERBUDGETMATTERS IS NULL
THEN ''
ELSE ', ' END + [TMP].[Code]
FROM @MATTERSOUTLAYBALANCES AS [TMP]
WHERE [TMP].[OutlayBudget] <> 0
AND [TMP].[OutlayBalance] > [TMP].[OutlayBudget]
IF ISNULL(@OVERBUDGETMATTERS, '') <> ''
BEGIN
SET @OVERBUDGETMATTERS = 'The follow matters will go over their outlay budget: ' + @OVERBUDGETMATTERS + '. Cannot post.'
RAISERROR (@OVERBUDGETMATTERS, 16, 99)
RETURN
END
END
-- Update matter's last act
UPDATE [MAT]
SET [MAT].[LastActType] = CASE [BAD].[OUTLAY]
WHEN 'O' THEN 'Outlay Jnl'
WHEN 'C' THEN 'Client Jnl'
WHEN 'D' THEN 'Bill Jnl'
ELSE [MAT].[LastActType] END,
[MAT].[LastAct] = @TODAY,
[MAT].[LastActWho] = @HANDLER
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
INNER JOIN [dbo].[matters] AS [MAT]
ON [BAD].[MATTER] = [MAT].[Code]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- ! Update Nominal for Detail Lines
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT LTRIM(RTRIM([BAD].[CODE])), /* CODE */
LTRIM(RTRIM([BAH].[BRANCH])), /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
LTRIM(RTRIM([BAD].[REF])), /* REF */
LTRIM(RTRIM([BAD].[NARR])), /* NARR */
LTRIM(RTRIM([BAD].[MATTER])), /* MATTER */
LTRIM(RTRIM([BAD].[SUPP])), /* SUPP */
LTRIM(RTRIM([BAD].[FEE])), /* FEE */
ISNULL([BAD].[VALUE], 0), /* VALUE */
ISNULL([BAD].[CURRENCYVALUE], 0), /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
[BAH].[YEAR], /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- ! Update Nominal for VAT
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT LTRIM(RTRIM(@VATNOMINAL)), /* CODE */
LTRIM(RTRIM([BAH].[BRANCH])), /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
LTRIM(RTRIM([BAD].[REF])), /* REF */
'VAT on Journal' + ISNULL(LTRIM(RTRIM([BAD].[REF])), ''), /* NARR */
LTRIM(RTRIM([BAH].[MATTER])), /* MATTER */
LTRIM(RTRIM([BAD].[SUPP])), /* SUPP */
LTRIM(RTRIM([BAD].[FEE])), /* FEE */
ISNULL([BAD].[VATVAL], 0), /* VALUE */
ISNULL([BAD].[CURRENCYVAT], 0), /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
[BAH].[YEAR], /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND ISNULL([BAD].[VATVAL], 0) <> 0
AND ISNULL([BAD].[CODE], '') = ISNULL(@FEESWRITEOFF, '')
-- ! Update Supplier Stuff
INSERT INTO [dbo].[SupplierLedger] (
[SUPP],
[TYPE],
[DATE],
[REF],
[BATCHNO],
[PREF],
[NARR],
[ORIGINAL],
[OSVALUE],
[YEAR],
[PER],
[ENTRYDATE],
[THIRDPARTY],
[THIRDPARTYVALUE],
[MATTER],
[PENDINGOUTLAY])
SELECT LTRIM(RTRIM([BAD].[SUPP])), /* SUPP */
LTRIM(RTRIM([BAH].[TYPE])), /* TYPE */
[BAH].[DATE], /* DATE */
LTRIM(RTRIM([BAD].[REF])), /* REF */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
LTRIM(RTRIM([BAD].[NARR])), /* NARR */
[BAD].[VALUE], /* ORIGINAL */
[BAD].[VALUE], /* OSVALUE */
@CURYEAR, /* YEAR */
[BAH].[PERNO], /* PER */
@TODAY, /* ENTRYDATE */
'', /* THIRDPARTY */
0, /* THIRDPARTYVALUE */
'', /* MATTER */
0 /* PENDINGOUTLAY */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[SUPP] <> ''
-- !Set up Allocation records
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = ''
-- !Update Debtors Ledger
INSERT INTO [dbo].[DebtorsLedger] (
[MATTER],
[TYPE],
[CLIENT],
[DATE],
[REF],
[BATCHNO],
[PREF],
[NARR],
[ORIGINAL],
[OSVALUE],
[ORFEES],
[OROUTLAY],
[ORVAT],
[OSFEES],
[OSOUTLAY],
[OSVAT],
[VATCODE],
[PER],
[YEAR],
[FEECODE],
[ClearedDate])
SELECT LTRIM(RTRIM([BAD].[MATTER])), /* MATTER */
'J', /* TYPE */
LTRIM(RTRIM([MAT].[ClientCode])), /* CLIENT */
[BAH].[DATE], /* DATE */
LTRIM(RTRIM([BAD].[REF])), /* REF */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
LTRIM(RTRIM([BAD].[NARR])), /* NARR */
[BAD].[VALUE], /* ORIGINAL */
[BAD].[VALUE], /* OSVALUE */
0, /* ORFEES */
[BAD].[VALUE], /* OROUTLAY */
0, /* ORVAT */
0, /* OSFEES */
[BAD].[VALUE], /* OSOUTLAY */
0, /* OSVAT */
'', /* VATCODE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
'', /* FEECODE */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] = 'D'
-- I have written this procedure to handle multiple allocations simultaneously
SELECT @SQL = N'' +
(SELECT *
FROM (SELECT [BAD].[BATCHNO] AS [ReceiptBatchNo],
[BAD].[PREF] AS [ReceiptPostRef],
[BAD].[ALLOCBATCH] AS [InvoiceBatchNo],
[BAD].[ALLOCPREF] AS [InvoicePostRef],
[BAD].[VALUE] * -1 AS [AllocateValue], -- Multiplying by -1 so that the journal is positively allocated against invoice Ticket NO: 18450
'N' AS [WriteOffRemainder]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE (ISNULL([BAD].[SUPP], '') <> ''
OR ISNULL([BAD].[OUTLAY], '') = 'D')
AND [BAD].[ALLOCPREF] <> 0 -- Only check PREF because BATCHNO can be 0 for converted data
AND [BAH].[BATCHNO] = @BATCHNO) AS [Allocation]
FOR XML AUTO) +
N''
IF ISNULL(@SQL, '') <> ''
BEGIN
EXEC [dbo].[KAAS_AutoAllocateTransactions] @SQL
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[BATCHNO] = @BATCHNO
AND [BAD].[ALLOCWRITEOFF] = 'Y'
AND [BAD].[TYPE] = 'R'
AND [BAD].[OUTLAY] = 'D'
AND [BAD].[ALLOCPREF] <> 0)
BEGIN
RAISERROR ('Auto write-off Journal generated - please update', 5, 99)
END
END
-- After we're done try to recalculate only the relevant balances
IF OBJECT_ID(N'KAAS_RebuildBalances', N'P') IS NOT NULL
BEGIN
/* Get list of affected matters, suppliers, and nominals to rebuild */
DECLARE @REBUILDXML NVARCHAR(MAX)
SET @REBUILDXML = N''
SELECT @REBUILDXML = @REBUILDXML + [A].[MATTER]
FROM (SELECT N'' AS [MATTER]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAH].[MATTER]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [MATTER]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + [A].[CODE]
FROM (SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CLIENTBANK] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAD].[CODE] = [NOM].[CODE]
WHERE [BAD].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]) AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + N''
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Suppliers] AS [SUP]
ON [BAH].[SUPP] = [SUP].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
SET @REBUILDXML = @REBUILDXML + N''
EXEC [dbo].[KAAS_RebuildBalances] @REBUILDXML
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE SO.[name] = N'KAAS_UpdatePostingSAMMultiPayment'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdatePostingSAMMultiPayment]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdatePostingSAMMultiPayment] (
@BATCHNO INT,
@POSTFWD VARCHAR(1),
@HANDLER VARCHAR(10))
AS
/*******************************************************************************************************
* Update Multi Payment Posting Logic *
* *
* Stored Procedure Name : [dbo].[KAAS_UpdatePostingSAMMultiPayment] *
* *
* Modification History: *
* 2021-11-19 Balamurugan C Created *
* 2022-02-14 Balamurugan C Modified - Implemented Logic as per SAM allocation part *
* 2022-02-21 Balamurugan C Modified - Handled Current Period and Period End Date *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
* 2022-10-17 Ghayathri.S.V Modified - Removed logic setting handler name from handler table *
* instead of User Code *
* 2023-06-12 John Ginnane Refactored code *
* 2024-04-25 Balamurugan C Modified - Added Allocted Batch, Pref Ref and Value to process *
allocation for supplier ledger *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[POSTED] <> 'Y')
BEGIN
RAISERROR ('Transaction is already posted.', 16, 99)
RETURN
END
BEGIN TRY
BEGIN TRAN
-- Make sure all matters are open
DECLARE @CLOSEDMATTERS VARCHAR(MAX)
SELECT @CLOSEDMATTERS = ISNULL(@CLOSEDMATTERS, '') +
CASE WHEN @CLOSEDMATTERS IS NULL
THEN ''
ELSE ', ' END + [MAT].[Code]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO
AND [MAT].[Closed] = 'Y'
IF ISNULL(@CLOSEDMATTERS, '') <> ''
BEGIN
SET @CLOSEDMATTERS = 'The following matters are closed: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CLOSEDMATTERS, 16, 99)
RETURN
END
-- Check Money Laundering on all matters
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] = 'Money Laundering_MoneyLaunderingCheck'
AND [SET].[KeyValue] IN ('1', 'true', 'Y'))
BEGIN
DECLARE @CHECKAMLMATTERS VARCHAR(MAX)
SELECT @CHECKAMLMATTERS = ISNULL(@CHECKAMLMATTERS, '') +
CASE WHEN @CHECKAMLMATTERS IS NULL
THEN ''
ELSE ', ' END + [CNT].[Code]
FROM [dbo].[Contacts] AS [CNT]
INNER JOIN (SELECT DISTINCT [MAT].[ClientCode]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [BatchContacts]
ON [BatchContacts].[ClientCode] = [CNT].[Code]
WHERE ISNULL([CNT].[Approved], 0) = 0
IF ISNULL(@CHECKAMLMATTERS, '') <> ''
BEGIN
SET @CHECKAMLMATTERS = 'The following clients are not approved for AML: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CHECKAMLMATTERS, 16, 99)
RETURN
END
END
DECLARE @CURYEAR INT
DECLARE @CURPER INT
DECLARE @VATNOMINAL VARCHAR(10)
DECLARE @CLCONTROL VARCHAR(10)
DECLARE @TODAY DATETIME
DECLARE @THIRDPARTY BIT
DECLARE @SHOWNOBAR BIT
SELECT @CURYEAR = [CON].[YEAR],
@CURPER = [CON].[CURPER],
@VATNOMINAL = [CON].[VAT],
@CLCONTROL = [CON].[CLIENT],
@SHOWNOBAR = CASE WHEN [CON].[NOBAR] = 'Y' THEN 1 ELSE 0 END,
-- Get today's DATE and not TIME. This is to make sure it stil works with Clarion apps
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
FROM [dbo].[control] AS [CON]
SELECT @THIRDPARTY = CASE WHEN ISNULL([BAH].[THIRDPARTY], '') = 'Y'
THEN 1
ELSE 0 END
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Make sure transaction is in correct year and period
UPDATE [BAH]
SET [BAH].[YEAR] = @CURYEAR,
[BAH].[PERNO] = @CURPER + CASE WHEN @POSTFWD = 'Y' THEN 1 ELSE 0 END,
[BAH].[CLIENTAC] = CASE WHEN ISNULL([NOM].[CLIENTAC], '') <> 'Y' THEN 'N' ELSE [BAH].[CLIENTAC] END
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UPDATE [BAD]
SET [BAD].[YEAR] = [BAH].[YEAR],
[BAD].[PERNO] = [BAH].[PERNO],
[BAD].[DATE] = [BAH].[DATE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
DECLARE @PRINTCHEQUE BIT
DECLARE @MULTIBATCH INT
DECLARE @BANKAC VARCHAR(10)
DECLARE @CLIENTAC VARCHAR(10)
DECLARE @EFTYN VARCHAR(1)
SELECT @PRINTCHEQUE = CASE WHEN ISNULL([BAH].[THIRDPARTY], '') = 'Y' THEN 1 ELSE 0 END,
@MULTIBATCH = [BAH].[BATCHNO],
@BANKAC = [BAH].[CODE],
@CLIENTAC = [BAH].[CLIENTAC],
@EFTYN = ISNULL([BAH].[EFTYorN], '')
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Use table variables instead of TopSpeed (TPS) files
DECLARE @MultiBD TABLE (
[id] INT PRIMARY KEY IDENTITY(1, 1),
[BatchNo] INT,
[Type] VARCHAR(1),
[Code] VARCHAR(10),
[PRef] INT,
[Ref] VARCHAR(50),
[Date] DATETIME,
[Fee] VARCHAR(10),
[Narr] VARCHAR(500),
[Matter] VARCHAR(20),
[Supp] VARCHAR(10),
[Value] DECIMAL(19, 2),
[VATCode] VARCHAR(1),
[VATValue] DECIMAL(19, 2),
[ClientYN] VARCHAR(1),
[Outlay] VARCHAR(1),
[Pending] VARCHAR(1),
[Year] INT,
[PerNo] INT,
[EntryCurrency] VARCHAR(1),
[CurrencyValue] DECIMAL(19, 2),
[CurrencyVAT] DECIMAL(19, 2),
[OutlayCode] VARCHAR(10),
[ThirdParty] VARCHAR(1),
[Payee] VARCHAR(500),
[HeadPRef] INT,
[HeadBatch] INT,
[AllocBatch] INT,
[AllocPRef] INT,
[AllocRef] VARCHAR(10),
[AllocValue] DECIMAL(19, 2),
[AllocWriteOff] VARCHAR(1),
[PSupp] VARCHAR(10),
[CreditInvoiceNo] INT,
[DraftBillNo] INT,
[EFTFileNumber] INT,
[EFTFileName] VARCHAR(500),
[ClientCode] VARCHAR(10),
[OnceOffPayment] VARCHAR(1),
[PayClient] VARCHAR(1),
[AssociateCode] VARCHAR(10),
[EFTEmailYorN] VARCHAR(1),
[PaymentMethod] INT,
[Branch] VARCHAR(10))
INSERT INTO @MultiBD (
[BatchNo],
[Type],
[Code],
[PRef],
[Ref],
[Branch],
[Date],
[Fee],
[Narr],
[Matter],
[Supp],
[Value],
[VATCode],
[VATValue],
[ClientYN],
[Outlay],
[Pending],
[Year],
[PerNo],
[EntryCurrency],
[CurrencyValue],
[CurrencyVAT],
[OutlayCode],
[ThirdParty],
[Payee],
[HeadPRef],
[HeadBatch],
[AllocBatch],
[AllocPRef],
[AllocRef],
[AllocValue],
[AllocWriteOff],
[PSupp],
[CreditInvoiceNo],
[DraftBillNo],
[EFTFileNumber],
[EFTFileName],
[ClientCode],
[OnceOffPayment],
[PayClient],
[AssociateCode],
[EFTEmailYorN],
[PaymentMethod])
SELECT [BAD].[BATCHNO],
[BAD].[TYPE],
[BAD].[CODE],
[BAD].[PREF],
[BAD].[REF],
[BAD].[BRANCH],
[BAD].[DATE],
[BAD].[FEE],
[BAD].[NARR],
[BAD].[MATTER],
[BAD].[SUPP],
[BAD].[VALUE],
[BAD].[VATCODE],
[BAD].[VATVAL],
[BAD].[CLIENTYN],
[BAD].[OUTLAY],
[BAD].[PENDING],
[BAD].[YEAR],
[BAD].[PERNO],
[BAD].[ENTRYCURRENCY],
[BAD].[CURRENCYVALUE],
[BAD].[CURRENCYVAT],
[BAD].[OUTLAYCODE],
[BAD].[THIRDPARTY],
[BAD].[PAYEE],
[BAD].[HEADPREF],
[BAD].[HEADBATCH],
[BAD].[ALLOCBATCH],
[BAD].[ALLOCPREF],
[BAD].[ALLOCREF],
[BAD].[ALLOCVALUE],
[BAD].[ALLOCWRITEOFF],
[BAD].[PSUPP],
-- Not sure why OUTLAY and NOMINAL payments have different values but recreating it for consistency
CASE WHEN [BAD].[OUTLAY] = 'N' THEN 0 ELSE NULL END, -- CreditInvoiceNo
CASE WHEN [BAD].[OUTLAY] = 'N' THEN 0 ELSE NULL END, -- DraftBillNo
CASE WHEN [BAD].[OUTLAY] = 'N' THEN 0 ELSE NULL END, -- EFTFileNumber
CASE WHEN [BAD].[OUTLAY] = 'N' THEN '' ELSE NULL END, -- EFTFileName
CASE WHEN @EFTYN = 'Y' THEN [BAD].[ClientCode] ELSE CASE WHEN [BAD].[OUTLAY] = 'N' THEN '' ELSE NULL END END,
CASE WHEN @EFTYN = 'Y' THEN [BAD].[OnceOffPayment] ELSE 'N' END,
CASE WHEN @EFTYN = 'Y' THEN [BAD].[PayClient] ELSE 'N' END,
CASE WHEN @EFTYN = 'Y' THEN [BAD].[CaseAssCode] ELSE CASE WHEN [BAD].[OUTLAY] = 'N' THEN '' ELSE NULL END END,
CASE WHEN @EFTYN = 'Y' THEN [BAD].[EFTEmailYorN] ELSE 'N' END,
CASE WHEN [BAD].[OUTLAY] = 'N' THEN 0 ELSE NULL END -- PaymentMethod
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- In Clarion there is a function "RIDELETE:BatchH()" which
-- looks at the relationships of BatchH and attempts to
-- apply the delete, cascading to BatchDetails and other
-- tables. However we're not interested in those tables so
-- we're just going to ignore them for now
DELETE [BAD]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
DELETE [BAH]
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Create one batch for each row in @MultiBD
INSERT INTO [dbo].[BatchH] (
[BATCHNO],
[POSTFWD],
[TYPE],
[CODE],
[BRANCH],
[MATTER],
[PREF],
[REF],
[DATE],
[FEE],
[NARR],
[VALUE],
[POSTED],
[CLIENTAC],
[PERNO],
[YEAR],
[PAYEE],
[THIRDPARTY],
[SUPP],
[INVCR],
[USERCODE],
[ENTRYDATE],
[CLIENTBANK],
[CURRENCY],
[CURRENCYVALUE],
[RECNO],
[SINGLELINE],
[TEMPLATE],
[CHEQUEREQNO],
[CORRECTCOPY],
[CreditInvoiceNo],
[DraftBillNo],
[EFTSent],
[EFTDate],
[EFTFileName],
[EFTFileNumber],
[EFTYorN],
[ClientCode],
--[PayClient], --Not specified in original code
[OnceOffPayment],
[CaseAssCode],
[EFTEmailYorN],
[PaymentMethod])
SELECT [MBD].[HeadBatch], /* BATCHNO */
@POSTFWD, /* POSTFWD */
'P', /* TYPE */
@BANKAC, /* CODE */
RTRIM([MBD].[Branch]), /* BRANCH */
[MBD].[Matter], /* MATTER */
[MBD].[HeadPRef], /* PREF */
[MBD].[Ref], /* REF */
[MBD].[Date], /* DATE */
'', /* FEE */
[MBD].[Narr], /* NARR */
[MBD].[Value], /* VALUE */
'N', /* POSTED */
@CLIENTAC, /* CLIENTAC */
@CURPER, /* PERNO */
@CURYEAR, /* YEAR */
[MBD].[Payee], /* PAYEE */
[MBD].[ThirdParty], /* THIRDPARTY */
CASE WHEN @EFTYN = 'Y' THEN [MBD].[Supp] ELSE [MBD].[PSupp] END, /* SUPP */
'', /* INVCR */
@HANDLER, /* USERCODE */
@TODAY, /* ENTRYDATE */
'', /* CLIENTBANK */
[MBD].[EntryCurrency], /* CURRENCY */
[MBD].[CurrencyValue], /* CURRENCYVALUE */
0, /* RECNO */
'', /* SINGLELINE */
'', /* TEMPLATE */
0, /* CHEQUEREQNO */
'', /* CORRECTCOPY */
[MBD].[CreditInvoiceNo], /* CreditInvoiceNo */
[MBD].[DraftBillNo], /* DraftBillNo */
'N', /* EFTSent */
NULL, /* EFTDate */
[MBD].[EFTFileName], /* EFTFileName */
[MBD].[EFTFileNumber], /* EFTFileNumber */
@EFTYN, /* EFTYorN */
[MBD].[ClientCode], /* ClientCode */
--'N', /* PayClient - Not specified in original code */
[MBD].[OnceOffPayment], /* OnceOffPayment */
[MBD].[AssociateCode], /* CaseAssCode */
[MBD].[EFTEmailYorN], /* EFTEmailYorN */
[MBD].[PaymentMethod] /* PaymentMethod */
FROM @MultiBD AS [MBD]
-- Rather than checking and displaying each EFT error message
-- I'm going to check all of them and collate the outputs
-- Then the user can be informed all multiple errors at once
-- !If EFT need to check for bank account details
DECLARE @EFTERROR VARCHAR(MAX)
SET @EFTERROR = ''
-- !1: for suppliers
SELECT @EFTERROR = @EFTERROR +
COALESCE([SUP].[NAME], [SUP].[CODE], '') +
': Bank Details/EFT Email needs to be set up!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN @MultiBD AS [MBD]
ON [MBD].[HeadBatch] = [BAH].[BATCHNO]
AND [MBD].[HeadPRef] = [BAH].[PREF]
INNER JOIN [dbo].[Suppliers] AS [SUP]
ON [BAH].[SUPP] = [SUP].[CODE]
WHERE [BAH].[SUPP] <> ''
AND @EFTYN = 'Y'
AND (ISNULL([SUP].[BankSortCode], '') = ''
OR ISNULL([SUP].[BankAccNo], '') = ''
OR ISNULL([SUP].[IBAN], '') = ''
OR ISNULL([SUP].[BIC], '') = ''
OR ISNULL([SUP].[EFTEmailAddress], '') = '')
-- !2: for client
SELECT @EFTERROR = @EFTERROR +
[BAH].[ClientCode] + ISNULL(', ' + [CNT].[NAME], '') +
': Bank Details/EFT Email needs to be set up!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN @MultiBD AS [MBD]
ON [MBD].[HeadBatch] = [BAH].[BATCHNO]
AND [MBD].[HeadPRef] = [BAH].[PREF]
INNER JOIN [dbo].[Contacts] AS [CNT]
ON [BAH].[ClientCode] = [CNT].[CODE]
WHERE [BAH].[ClientCode] <> ''
AND [BAH].[PayClient] = 'Y'
AND @EFTYN = 'Y'
AND (ISNULL([CNT].[BankSortCode], '') = ''
OR ISNULL([CNT].[BankAccNo], '') = ''
OR ISNULL([CNT].[IBAN], '') = ''
OR ISNULL([CNT].[BIC], '') = ''
OR ISNULL([CNT].[EFTEmailAddress], '') = '')
-- !3: for Case Ass
SELECT @EFTERROR = @EFTERROR +
[MBD].[AssociateCode] + ISNULL(', ' + [CAN].[NAME], '') +
': Bank Details/EFT Email needs to be set up!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN @MultiBD AS [MBD]
ON [MBD].[HeadBatch] = [BAH].[BATCHNO]
AND [MBD].[HeadPRef] = [BAH].[PREF]
INNER JOIN [dbo].[CaseAssociatesNames] AS [CAN]
ON [CAN].[CODE] = [MBD].[AssociateCode]
WHERE [BAH].[OnceOffPayment] = 'Y'
AND [MBD].[AssociateCode] <> ''
AND @EFTYN = 'Y'
AND (ISNULL([CAN].[BankSortCode], '') = ''
OR ISNULL([CAN].[BankAccNo], '') = ''
OR ISNULL([CAN].[IBAN], '') = ''
OR ISNULL([CAN].[BIC], '') = ''
OR ISNULL([CAN].[EFTEmailAddress], '') = '')
IF ISNULL(@EFTERROR, '') <> ''
BEGIN
RAISERROR(@EFTERROR, 16, 99)
RETURN
END
-- In clarion there is a "deep assignment" which means that
-- any columns that are the same in both tables we copy the
-- values from one to the other
INSERT INTO [dbo].[BatchDetails] (
[BATCHNO],
[TYPE],
[CODE],
[PREF],
[REF],
[DATE],
[FEE],
[BRANCH],
[NARR],
[MATTER],
[SUPP],
[VALUE],
[VATCODE],
[VATVAL],
[CLIENTYN],
[OUTLAY],
[PENDING],
[YEAR],
[PERNO],
[ENTRYCURRENCY],
[CURRENCYVALUE],
[CURRENCYVAT],
[OUTLAYCODE],
[THIRDPARTY],
[PAYEE],
[HEADPREF],
[HEADBATCH],
[ALLOCBATCH],
[ALLOCPREF],
[ALLOCREF],
[ALLOCVALUE],
[ALLOCWRITEOFF],
[PSUPP],
[UNDETAKING],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN],
[RegisteredPost],
[PreBilledOutlay])
SELECT [BAH].[BatchNo], /* BATCHNO */
'P', /* TYPE */
RTRIM([MBD].[Code]), /* CODE */
[MBD].[PRef], /* PREF */
[MBD].[Ref], /* REF */
[MBD].[Date], /* DATE */
[MBD].[Fee], /* FEE */
RTRIM([MBD].[Branch]), /* BRANCH */
[MBD].[Narr], /* NARR */
[MBD].[Matter], /* MATTER */
[MBD].[Supp], /* SUPP */
[MBD].[Value], /* VALUE */
[MBD].[VATCode], /* VATCODE */
[MBD].[VATValue], /* VATVAL */
'', /* CLIENTYN */
[MBD].[Outlay], /* OUTLAY */
'', /* PENDING */
[MBD].[Year], /* YEAR */
[MBD].[PerNo], /* PERNO */
[MBD].[EntryCurrency], /* ENTRYCURRENCY */
[MBD].[CurrencyValue], /* CURRENCYVALUE */
[MBD].[CurrencyVAT], /* CURRENCYVAT */
[MBD].[OutlayCode], /* OUTLAYCODE */
[MBD].[ThirdParty], /* THIRDPARTY */
[MBD].[Payee], /* PAYEE */
[MBD].[PRef], /* HEADPREF */
[MBD].[BatchNo], /* HEADBATCH */
[MBD].[AllocBatch], /* ALLOCBATCH */
[MBD].[AllocPref], /* ALLOCPREF */
[MBD].[AllocRef], /* ALLOCREF */
[MBD].[AllocValue], /* ALLOCVALUE */
'', /* ALLOCWRITEOFF */
[MBD].[PSUPP], /* PSUPP */
'', /* UNDETAKING */
ISNULL([MBD].[AssociateCode], ''), /* CaseAssCode */
'N', /* OnceOffPayment */
'N', /* PayClient */
'N', /* ClientCode */
'N', /* EFTEmailYorN */
0, /* RegisteredPost */
0 /* PreBilledOutlay */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN @MultiBD AS [MBD]
ON [BAH].[BATCHNO] = [MBD].[HeadBatch]
AND [BAH].[PREF] = [MBD].[HeadPRef]
-- Now we can just call "post payment" procedure
DECLARE @POSTBATCHNO INT
DECLARE @I INT
SET @I = 0
WHILE @I <= ISNULL((SELECT MAX([id]) FROM @MultiBD), 0)
BEGIN
SET @POSTBATCHNO = NULL
SELECT @POSTBATCHNO = [TMP].[HeadBatch]
FROM @MultiBD AS [TMP]
WHERE [TMP].[id] = @I
IF @POSTBATCHNO IS NOT NULL
BEGIN
PRINT('Sub batch no: ' + ISNULL(CONVERT(VARCHAR(10), @POSTBATCHNO), 'NULL'))
EXEC [dbo].[KAAS_UpdatePostingSAMPayment] @POSTBATCHNO, @POSTFWD, @HANDLER
END
SET @I = @I + 1
END
-- After we're done try to recalculate only the relevant balances
IF OBJECT_ID(N'KAAS_RebuildBalances', N'P') IS NOT NULL
BEGIN
/* Get list of affected matters, suppliers, and nominals to rebuild */
DECLARE @REBUILDXML NVARCHAR(MAX)
SET @REBUILDXML = N''
SELECT @REBUILDXML = @REBUILDXML + [A].[MATTER]
FROM (SELECT N'' AS [MATTER]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAH].[MATTER]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [MATTER]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + [A].[CODE]
FROM (SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CLIENTBANK] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAD].[CODE] = [NOM].[CODE]
WHERE [BAD].[BATCHNO] = @BATCHNO
UNION
SELECT N''
UNION
SELECT N'') AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + N''
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Suppliers] AS [SUP]
ON [BAH].[SUPP] = [SUP].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
SET @REBUILDXML = @REBUILDXML + N''
EXEC [dbo].[KAAS_RebuildBalances] @REBUILDXML
END
COMMIT TRAN
END TRY
BEGIN CATCH
PRINT('UpdatePostingSAMMultiPayment CATCH')
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = N'KAAS_UpdatePostingSAMPayment'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdatePostingSAMPayment]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdatePostingSAMPayment] (
@BATCHNO INT,
@POSTFWD VARCHAR(1),
@HANDLER VARCHAR(10))
AS
/*******************************************************************************************************
* Payment Posting Logic *
* *
* Stored Procedure Name : [dbo].[KAAS_UpdatePostingSAMPayment] *
* *
* Modification History: *
* 2022-01-13 Balamurugan C Created *
* 2022-02-01 Balamurugan C Modified - Added Cast of Date statement for Batch Header *
* and Detail Date field *
* 2022-02-21 Balamurugan C Modified - Handled Current Period and Period End Date *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
* 2022-06-17 John Ginnane Refactored the entire procedure *
* 2022-10-17 Ghayathri.S.V Modified - Depostit Type data in matter ledger *
* 2023-08-16 John Ginnane Trim codes *
* 2024-11-14 Aakif Modified - Removed hardcoded BatchNo *
********************************************************************************************************/
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO)
BEGIN
RAISERROR ('Transaction does not exist.', 16, 99)
RETURN
END
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[POSTED] = 'Y')
BEGIN
RAISERROR ('Transaction is already posted.', 16, 99)
RETURN
END
BEGIN TRY
BEGIN TRAN
UPDATE [BAH]
SET [BAH].[POSTED] = 'Y'
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Make sure all matters are open
DECLARE @CLOSEDMATTERS VARCHAR(MAX)
SELECT @CLOSEDMATTERS = ISNULL(@CLOSEDMATTERS, '') +
CASE WHEN @CLOSEDMATTERS IS NULL
THEN ''
ELSE ', ' END + [MAT].[Code]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO
AND [MAT].[Closed] = 'Y'
IF ISNULL(@CLOSEDMATTERS, '') <> ''
BEGIN
SET @CLOSEDMATTERS = 'The following matters are closed: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CLOSEDMATTERS, 16, 99)
RETURN
END
DECLARE @CURYEAR INT
DECLARE @CURPER INT
DECLARE @VATNOMINAL VARCHAR(10)
DECLARE @CLCONTROL VARCHAR(10)
DECLARE @TODAY DATETIME
DECLARE @THIRDPARTY BIT
DECLARE @SHOWNOBAR BIT
SELECT @CURYEAR = [CON].[YEAR],
@CURPER = [CON].[CURPER],
@VATNOMINAL = [CON].[VAT],
@CLCONTROL = [CON].[CLIENT],
@SHOWNOBAR = CASE WHEN [CON].[NOBAR] = 'Y' THEN 1 ELSE 0 END,
-- Get today's DATE and not TIME. This is to make sure it stil works with Clarion apps
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
FROM [dbo].[control] AS [CON]
SELECT @THIRDPARTY = CASE WHEN ISNULL([BAH].[THIRDPARTY], '') = 'Y'
THEN 1
ELSE 0 END
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Rather than checking and displaying each EFT error message
-- I'm going to check all of them and collate the outputs
-- Then the user can be informed all multiple errors at once
DECLARE @EFTERROR VARCHAR(MAX)
SET @EFTERROR = ''
-- !need to check
-- !1 if the Bank EFT details are entered!
SELECT @EFTERROR = @EFTERROR +
COALESCE([NOM].[DESC], [NOM].[CODE], '') +
': Bank EFT details need to be entered!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[EFTYorN] = 'Y'
AND (ISNULL([NOM].[IBAN], '') = ''
OR ISNULL([NOM].[ACCOUNTNAME], '') = ''
OR ISNULL([NOM].[SORTCODE], '') = ''
OR ISNULL([NOM].[ACCOUNTNO], '') = ''
OR ISNULL([NOM].[BIC], '') = '')
-- !client as a Payee
SELECT @EFTERROR = @EFTERROR +
[CNT].[CODE] + ': ' + ISNULL(RTRIM([CNT].[NAME]), '') +
': Client EFT details needs to be entered!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[Contacts] AS [CNT]
ON [BAH].[ClientCode] = [CNT].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[EFTYorN] = 'Y'
AND [BAH].[PayClient] = 'Y'
AND (ISNULL([CNT].[IBAN], '') = ''
OR ISNULL([CNT].[BankSortCode], '') = ''
OR ISNULL([CNT].[BankAccNo], '') = ''
OR ISNULL([CNT].[BIC], '') = '')
SELECT @EFTERROR = @EFTERROR +
[CNT].[CODE] + ': ' + ISNULL(RTRIM([CNT].[NAME]), '') +
': Client EFT email address needs to be entered!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[Contacts] AS [CNT]
ON [BAH].[ClientCode] = [CNT].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[EFTYorN] = 'Y'
AND [BAH].[PayClient] = 'Y'
AND ISNULL([CNT].[EFTEmailAddress], '') = ''
--!Supplier as a Payee
SELECT @EFTERROR = @EFTERROR +
[SUP].[CODE] + ': ' + ISNULL(RTRIM([SUP].[NAME]), '') +
': Supplier EFT details needs to be entered!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[Suppliers] AS [SUP]
ON [BAH].[SUPP] = [SUP].[Code]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[SUPP] <> ''
AND [BAH].[EFTYorN] = 'Y'
AND (ISNULL([SUP].[IBAN], '') = ''
OR ISNULL([SUP].[BankSortCode], '') = ''
OR ISNULL([SUP].[BankAccNo], '') = ''
OR ISNULL([SUP].[BIC], '') = '')
SELECT @EFTERROR = @EFTERROR +
[SUP].[CODE] + ': ' + ISNULL(RTRIM([SUP].[NAME]), '') +
': Supplier EFT email address needs to be entered!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[Suppliers] AS [SUP]
ON [BAH].[SUPP] = [SUP].[Code]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[SUPP] <> ''
AND [BAH].[EFTEmailYorN] = 'Y'
AND ISNULL([SUP].[EFTEmailAddress], '') = ''
--!Case Associate as Payee
SELECT @EFTERROR = @EFTERROR +
'Case Associate: ' +
ISNULL(RTRIM([CAN].[NAME]), [CAN].[CODE]) +
' bank EFT detailed need to be entered!'
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[CaseAssociatesNames] AS [CAN]
ON [CAN].[CODE] = [BAH].[CaseAssCode]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[CaseAssCode] <> ''
AND [BAH].[OnceOffPayment] = 'Y'
AND (ISNULL([CAN].[IBAN], '') = ''
OR ISNULL([CAN].[BankName], '') = ''
OR ISNULL([CAN].[BankSortCode], '') = ''
OR ISNULL([CAN].[BankAccNo], '') = ''
OR ISNULL([CAN].[BIC], '') = '')
SELECT @EFTERROR = @EFTERROR +
'Case Associate: ' +
ISNULL(RTRIM([CAN].[NAME]), [CAN].[CODE]) +
' EFT email address needs to be entered!'
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[CaseAssociatesNames] AS [CAN]
ON [CAN].[CODE] = [BAH].[CaseAssCode]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[CaseAssCode] <> ''
AND [BAH].[OnceOffPayment] = 'Y'
AND [BAH].[EFTEmailYorN] = 'Y'
AND ISNULL([CAN].[EFTEmailAddress], '') = ''
IF ISNULL(@EFTERROR, '') <> ''
BEGIN
RAISERROR(@EFTERROR, 16, 99)
RETURN
END
-- Somehow print cheque?
-- Make sure transaction is in correct year and period
UPDATE [BAH]
SET [BAH].[YEAR] = @CURYEAR,
[BAH].[PERNO] = @CURPER + CASE WHEN @POSTFWD = 'Y' THEN 1 ELSE 0 END
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
UPDATE [BAD]
SET [BAD].[YEAR] = [BAH].[YEAR],
[BAD].[PERNO] = [BAH].[PERNO]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Check Money Laundering on all matters
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] = 'Money Laundering_MoneyLaunderingCheck'
AND [SET].[KeyValue] IN ('1', 'true', 'Y'))
BEGIN
DECLARE @CHECKAMLMATTERS VARCHAR(MAX)
SELECT @CHECKAMLMATTERS = ISNULL(@CHECKAMLMATTERS, '') +
CASE WHEN @CHECKAMLMATTERS IS NULL
THEN ''
ELSE ', ' END + [CNT].[Code]
FROM [dbo].[Contacts] AS [CNT]
INNER JOIN (SELECT DISTINCT [MAT].[ClientCode]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [BatchContacts]
ON [BatchContacts].[ClientCode] = [CNT].[Code]
WHERE ISNULL([CNT].[Approved], 0) = 0
IF ISNULL(@CHECKAMLMATTERS, '') <> ''
BEGIN
SET @CHECKAMLMATTERS = 'The following clients are not approved for AML: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CHECKAMLMATTERS, 16, 99)
RETURN
END
END
-- ! If it should be on the Matter Ledger
INSERT INTO [dbo].[MatterLedger] (
[MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate])
SELECT RTRIM([BAD].[MATTER]), /* MATTER */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM([BAD].[NARR]), /* NARR */
0, /* VALUED */
CASE WHEN [BAD].[OUTLAY] = 'O'
THEN ISNULL([BAD].[VALUE], 0) - ISNULL([BAD].[VATVAL], 0)
ELSE 0 END, /* VALUEO */
CASE WHEN [BAD].[OUTLAY] = 'C'
THEN ISNULL([BAD].[VALUE], 0) - ISNULL([BAD].[VATVAL], 0)
ELSE 0 END, /* VALUEC */
ISNULL([BAD].[FEE], ''), /* FEE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
LEFT([BAD].[MATTER], 6), /* CLIENT */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND [NOM].[DepositYN] <> 'Y'
THEN ISNULL([BAD].[VALUE], 0) - ISNULL([BAD].[VATVAL], 0)
ELSE 0 END, /* VALUECC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND [NOM].[DepositYN] = 'Y'
THEN ISNULL([BAD].[VALUE], 0) - ISNULL([BAD].[VATVAL], 0)
ELSE 0 END, /* VALUECD */
CASE WHEN [BAD].[OUTLAY] = 'C'
THEN [NOM].[DEPOSITTYPE]
ELSE '' END, /* DEPOSITTYPE */
0, /* CURVALUED */
CASE WHEN [BAD].[OUTLAY] = 'O'
THEN ISNULL([BAD].[CURRENCYVALUE], 0) - ISNULL([BAD].[CURRENCYVAT], 0)
ELSE 0 END, /* CURVALUEO */
CASE WHEN [BAD].[OUTLAY] = 'C'
THEN ISNULL([BAD].[CURRENCYVALUE], 0) - ISNULL([BAD].[CURRENCYVAT], 0)
ELSE 0 END, /* CURVALUEC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND [NOM].[DEPOSITYN] <> 'Y'
THEN ISNULL([BAD].[CURRENCYVALUE], 0) - ISNULL([BAD].[CURRENCYVAT], 0)
ELSE 0 END, /* CURVALUECC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND [NOM].[DEPOSITYN] = 'Y'
THEN ISNULL([BAD].[CURRENCYVALUE], 0) - ISNULL([BAD].[CURRENCYVAT], 0)
ELSE 0 END, /* CURVALUECD */
'', /* BILLED */
0, /* BILLINGYEAR */
0, /* BILLINGPERIOD */
NULL, /* BILLINGDATE */
0, /* BilledOutlayValue */
0, /* InvoiceNo */
0, /* IncludeInBill */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] <> 'N'
-- Check if client balance will be overdrawn with this posting
-- Or if the balance dips below the minimum amount
DECLARE @MATTERSCLIENTBALANCES TABLE (
[Code] VARCHAR(20) PRIMARY KEY,
[ClientMin] DECIMAL(19, 2),
[ClientCur] DECIMAL(19, 2),
[ClientDep] DECIMAL(19, 2))
;WITH [CTE_MAT] ([Code], [ClientMin]) AS (
SELECT DISTINCT [MAT].[Code], ISNULL([MAT].[ClientMin], 0)
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO),
[CTE_MTL] ([Code], [ClientMin], [ClientCur], [ClientDep]) AS (
SELECT LTRIM(RTRIM([CTE_MAT].[Code])),
[CTE_MAT].[ClientMin],
SUM(ISNULL([MTL].[VALUECC], 0)),
SUM(ISNULL([MTL].[VALUECD], 0))
FROM [CTE_MAT]
LEFT OUTER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MTL].[MATTER] = [CTE_MAT].[Code]
GROUP BY LTRIM(RTRIM([CTE_MAT].[Code])),
[CTE_MAT].[ClientMin])
INSERT INTO @MATTERSCLIENTBALANCES (
[Code],
[ClientMin],
[ClientCur],
[ClientDep])
SELECT [CTE_MTL].[Code],
[CTE_MTL].[ClientMin] * -1,
[CTE_MTL].[ClientCur],
[CTE_MTL].[ClientDep]
FROM [CTE_MTL]
DECLARE @OVERDRAWNMATTERS VARCHAR(MAX)
SELECT @OVERDRAWNMATTERS = ISNULL(@OVERDRAWNMATTERS, '') +
CASE WHEN @OVERDRAWNMATTERS IS NULL
THEN ''
ELSE ', ' END + [TMP].[Code]
FROM @MATTERSCLIENTBALANCES AS [TMP]
WHERE [TMP].[ClientCur] > 0
OR [TMP].[ClientDep] > 0
IF ISNULL(@OVERDRAWNMATTERS, '') <> ''
BEGIN
IF @SHOWNOBAR <> 1
BEGIN
SET @OVERDRAWNMATTERS = 'The following matters will be overdrawn: ' + @OVERDRAWNMATTERS + '. Cannot post.'
RAISERROR (@OVERDRAWNMATTERS, 16, 99)
RETURN
END
ELSE
BEGIN
SET @OVERDRAWNMATTERS = 'As a result of this transfer, the client a/c is overdrawn on the following matters: ' + @OVERDRAWNMATTERS + '.'
RAISERROR (@OVERDRAWNMATTERS, 5, 99)
END
END
DECLARE @CLIENTRESERVEDOVERDRAWN VARCHAR(MAX)
SELECT @CLIENTRESERVEDOVERDRAWN = ISNULL(@CLIENTRESERVEDOVERDRAWN, '') +
CASE WHEN @CLIENTRESERVEDOVERDRAWN IS NULL
THEN ''
ELSE ', ' END + [TMP].[Code]
FROM @MATTERSCLIENTBALANCES AS [TMP]
WHERE (ISNULL([TMP].[ClientCur], 0) + ISNULL([TMP].[ClientDep], 0)) > [TMP].[ClientMin]
IF ISNULL(@CLIENTRESERVEDOVERDRAWN, '') <> ''
BEGIN
SET @CLIENTRESERVEDOVERDRAWN = 'As a result of this transfer, the client a/c reserve limit is overdrawn on the following matters: ' + @CLIENTRESERVEDOVERDRAWN + '.'
RAISERROR (@CLIENTRESERVEDOVERDRAWN, 5, 99)
END
-- Update matter's last act
UPDATE [MAT]
SET [MAT].[LastActType] = CASE [BAD].[OUTLAY]
WHEN 'O' THEN 'Outlay Pmt'
WHEN 'C' THEN 'Client Pmt'
ELSE [MAT].[LastActType] END,
[MAT].[LastAct] = @TODAY,
[MAT].[LastActWho] = @HANDLER
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
INNER JOIN [dbo].[matters] AS [MAT]
ON [BAD].[MATTER] = [MAT].[Code]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- ! Update Nominal for Detail Lines
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM([BAD].[CODE]), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM(LEFT([BAD].[NARR], 80)), /* NARR */
RTRIM([BAD].[MATTER]), /* MATTER */
RTRIM([BAD].[SUPP]), /* SUPP */
RTRIM([BAD].[FEE]), /* FEE */
ISNULL([BAD].[VALUE], 0) - ISNULL([BAD].[VATVAL], 0), /* VALUE */
ISNULL([BAD].[CURRENCYVALUE], 0) - ISNULL([BAD].[CURRENCYVAT], 0), /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- ! Update Nominal for VAT
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM(@VATNOMINAL), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM([BAD].[NARR]), /* NARR */
RTRIM([BAD].[MATTER]), /* MATTER */
RTRIM([BAD].[SUPP]), /* SUPP */
RTRIM([BAD].[FEE]), /* FEE */
ISNULL([BAD].[VATVAL], 0), /* VALUE */
ISNULL([BAD].[CURRENCYVAT], 0), /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND ISNULL([BAD].[VATVAL], 0) <> 0
-- ! Update Supplier Stuff
INSERT INTO [dbo].[SupplierLedger] (
[SUPP],
[TYPE],
[DATE],
[REF],
[BATCHNO],
[PREF],
[NARR],
[ORIGINAL],
[OSVALUE],
[YEAR],
[PER],
[ENTRYDATE],
[THIRDPARTY],
[THIRDPARTYVALUE],
[MATTER],
[PENDINGOUTLAY])
SELECT RTRIM([BAD].[SUPP]), /* SUPP */
RTRIM([BAH].[TYPE]), /* TYPE */
[BAH].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
RTRIM([BAD].[NARR]), /* NARR */
[BAD].[VALUE], /* ORIGINAL */
[BAD].[VALUE], /* OSVALUE */
@CURYEAR, /* YEAR */
[BAH].[PERNO], /* PER */
@TODAY, /* ENTRYDATE */
'', /* THIRDPARTY */
0, /* THIRDPARTYVALUE */
'', /* MATTER */
0 /* PENDINGOUTLAY */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[SUPP] <> ''
-- !Set up Allocation records
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = ''
-- I have written this procedure to handle multiple allocations simultaneously
SELECT @SQL = N'' +
(SELECT *
FROM (SELECT [BAD].[BATCHNO] AS [ReceiptBatchNo],
[BAD].[PREF] AS [ReceiptPostRef],
[BAD].[ALLOCBATCH] AS [InvoiceBatchNo],
[BAD].[ALLOCPREF] AS [InvoicePostRef],
[BAD].[VALUE] AS [AllocateValue],
CASE WHEN ISNULL([BAD].[ALLOCWRITEOFF], '') <> 'Y'
THEN 'N'
ELSE 'Y' END AS [WriteOffRemainder]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE ISNULL([BAD].[SUPP], '') <> ''
AND [BAD].[ALLOCPREF] <> 0 -- Only check PREF because BATCHNO can be 0 for converted data
AND [BAH].[BATCHNO] = @BATCHNO) AS [Allocation]
FOR XML AUTO) +
N''
IF ISNULL(@SQL, '') <> ''
BEGIN
EXEC [dbo].[KAAS_AutoAllocateTransactions] @SQL
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[BATCHNO] = @BATCHNO
AND [BAD].[ALLOCWRITEOFF] = 'Y'
AND [BAD].[TYPE] = 'R'
AND [BAD].[OUTLAY] = 'D'
AND [BAD].[ALLOCPREF] <> 0)
BEGIN
RAISERROR ('Auto write-off Journal generated - please update', 5, 99)
END
END
-- ! Update Nominal Header Record
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM([BAH].[CODE]), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAH].[REF]), /* REF */
RTRIM([BAH].[NARR]), /* NARR */
RTRIM([BAH].[MATTER]), /* MATTER */
CASE WHEN [BAH].[EFTYorN] = 'Y'
AND [BAH].[OnceOffPayment] = 'Y'
THEN ''
ELSE RTRIM([BAH].[SUPP]) END, /* SUPP */
RTRIM([BAH].[FEE]), /* FEE */
ISNULL([BAH].[VALUE], 0) * -1, /* VALUE */
ISNULL([BAH].[CURRENCYVALUE], 0) * -1, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- !#74 Supplier Remittance
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Suppliers] AS [SUP]
ON [BAH].[SUPP] = [SUP].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[POSTED] = 'Y'
AND [BAH].[VALUE] > 0
AND [BAH].[SUPP] <> '')
AND EXISTS (SELECT TOP 1 1
FROM [dbo].[Settings] AS [SET]
WHERE [SET].[KeyName] = 'SupplierRemittance_On'
AND [SET].[KeyValue] = 'Y')
AND EXISTS (SELECT TOP 1 1
FROM [dbo].[Allocations] AS [ALO]
WHERE [ALO].[BATCHNO] = @BATCHNO)
BEGIN
SELECT 'RunReportToCase' AS [Function],
'SupplierRemittance' AS [Report],
0 AS [Confirm],
@BATCHNO AS [P1]
END
-- After we're done try to recalculate only the relevant balances
IF OBJECT_ID(N'KAAS_RebuildBalances', N'P') IS NOT NULL
BEGIN
/* Get list of affected matters, suppliers, and nominals to rebuild */
DECLARE @REBUILDXML NVARCHAR(MAX)
SET @REBUILDXML = N''
SELECT @REBUILDXML = @REBUILDXML + [A].[MATTER]
FROM (SELECT N'' AS [MATTER]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAH].[MATTER]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [MATTER]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + [A].[CODE]
FROM (SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CLIENTBANK] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAD].[CODE] = [NOM].[CODE]
WHERE [BAD].[BATCHNO] = @BATCHNO
UNION
SELECT N''
UNION
SELECT N'') AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + N''
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Suppliers] AS [SUP]
ON [BAH].[SUPP] = [SUP].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
SET @REBUILDXML = @REBUILDXML + N''
EXEC [dbo].[KAAS_RebuildBalances] @REBUILDXML
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] AS [SO]
WHERE [SO].[name] = N'KAAS_UpdatePostingSAMPurchaseBill'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdatePostingSAMPurchaseBill]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdatePostingSAMPurchaseBill] (
@BATCHNO INT,
@POSTFWD VARCHAR(1),
@HANDLER VARCHAR(10))
AS
/******************************************************************************************************************
* Update Purchase Bill Posting Logic *
* *
* Stored Procedure Name : [dbo].[KAAS_UpdatePostingSAMPurchaseBill] *
* *
* Modification History: *
* 2021-11-17 Balamurugan C Created *
* 2022-02-17 John Ginnane Refactored code *
* 2022-06-16 John Ginnane Added error handling *
* 2022-10-17 Ghayathri.S.V Modified - Fee and Matter data in Matter Ledger and *
Nominal Ledger respectively. *
* 2024-01-22 Revathy.D Handled creating multiple records in supplier ledger *
Ticket Id- 17680 *
* 2024-01-23 Revathy.D Finely tuned the join - 17680 *
* 2024-02-29 Balamurugan.C Changed outlaypending column to pending outlay from control *
* 2024-06-07 John Ginnane #18501 - When inserting the @CREDITORs row into the [dbo].[NominalLedger] we *
* now set the [MATTER] to the [dbo].[BatchDetails] if there is only one value *
* Same with [dbo].[SupplierLedger] *
* 2024-11-14 Aakif Modified - Removed hardcoded BatchNo *
*******************************************************************************************************************/
BEGIN
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[POSTED] <> 'Y')
BEGIN
RAISERROR ('Transaction is already posted.', 16, 99)
RETURN
END
BEGIN TRY
BEGIN TRAN
-- Make sure all matters are open
DECLARE @CLOSEDMATTERS VARCHAR(MAX)
SELECT @CLOSEDMATTERS = ISNULL(@CLOSEDMATTERS, '') +
CASE WHEN @CLOSEDMATTERS IS NULL
THEN ''
ELSE ', ' END + [MAT].[Code]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO
AND [MAT].[Closed] = 'Y'
IF ISNULL(@CLOSEDMATTERS, '') <> ''
BEGIN
SET @CLOSEDMATTERS = 'The following matters are closed: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CLOSEDMATTERS, 16, 99)
RETURN
END
DECLARE @CURYEAR INT
DECLARE @CURPER INT
DECLARE @PENDINGOUTLAY VARCHAR(10)
DECLARE @VATNOMINAL VARCHAR(10)
DECLARE @CREDITORS VARCHAR(10)
DECLARE @INVCR INT
DECLARE @TODAY DATETIME
SELECT @CURYEAR = [CON].[YEAR],
@CURPER = [CON].[CURPER],
@PENDINGOUTLAY = [CON].[PENDINGOUTLAY],
@VATNOMINAL = [CON].[VAT],
@CREDITORS = [CON].[CREDITOR],
@INVCR = 1,
-- Get today's DATE and not TIME. This is to make sure it stil works with Clarion apps
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
FROM [dbo].[control] AS [CON]
SELECT @INVCR = CASE WHEN [BAH].[INVCR] = 'C' THEN -1 ELSE @INVCR END
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Make sure transaction is in correct year and period
UPDATE [BAH]
SET [BAH].[YEAR] = @CURYEAR,
[BAH].[PERNO] = @CURPER + CASE WHEN @POSTFWD = 'Y' THEN 1 ELSE 0 END
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
UPDATE [BAD]
SET [BAD].[YEAR] = [BAH].[YEAR],
[BAD].[PERNO] = [BAH].[PERNO]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Matter Ledger
INSERT INTO [dbo].[MatterLedger] (
[MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate])
SELECT [BAD].[MATTER], /* MATTER */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAD].[DATE], /* DATE */
[BAD].[REF], /* REF */
[BAD].[NARR], /* NARR */
0, /* VALUED */
[BAD].[VALUE] * @INVCR, /* VALUEO */
0, /* VALUEC */
[BAD].[FEE], /* FEE */
[BAD].[PERNO], /* PER */
[BAD].[YEAR], /* YEAR */
@TODAY, /* ENTRYDATE */
LEFT([BAD].[MATTER], 6), /* CLIENT */
0, /* VALUECC */
0, /* VALUECD */
'', /* DEPOSITTYPE */
0, /* CURVALUED */
[BAD].[CURRENCYVALUE] * @INVCR, /* CURVALUEO */
0, /* CURVALUEC */
0, /* CURVALUECC */
0, /* CURVALUECD */
'', /* BILLED */
0, /* BILLINGYEAR */
0, /* BILLINGPERIOD */
NULL, /* BILLINGDATE */
0, /* BilledOutlayValue */
0, /* InvoiceNo */
0, /* IncludeInBill */
NULL /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] = 'O'
-- Pending Outlay
IF @PENDINGOUTLAY = 'Y'
BEGIN
INSERT INTO [dbo].[PendingOutlay] (
[MATTER],
[DATE],
[SUPPLIER],
[REF],
[NARRATIVE],
[VALUE])
SELECT [BAD].[MATTER],
[BAD].[DATE],
[BAH].[SUPP],
[BAD].[REF],
[BAD].[NARR],
[BAD].[VALUE] * @INVCR
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] = 'O'
END
-- Log last activity
UPDATE [MAT]
SET [MAT].[LastAct] = @TODAY,
[MAT].[LastActType] = 'Outlay Inv',
[MAT].[LastActWho] = @HANDLER
FROM [dbo].[matters] AS [MAT]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAD].[MATTER] = [MAT].[Code]
WHERE [BAD].[BATCHNO] = @BATCHNO
-- NominalLedger entry for BatchDetails
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT [BAD].[CODE], /* CODE */
[BAH].[BRANCH], /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAD].[DATE], /* DATE */
[BAD].[REF], /* REF */
[BAD].[NARR], /* NARR */
[BAD].[MATTER], /* MATTER */
[BAD].[SUPP], /* SUPP */
[BAD].[FEE], /* FEE */
[BAD].[VALUE] * @INVCR, /* VALUE */
[BAD].[CURRENCYVALUE] * @INVCR, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
NULL /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- NominalLedger entry for VAT details
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT @VATNOMINAL, /* CODE */
[BAH].[BRANCH], /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAD].[DATE], /* DATE */
[BAD].[REF], /* REF */
[BAD].[NARR], /* NARR */
[BAD].[MATTER], /* MATTER */
[BAD].[SUPP], /* SUPP */
[BAD].[FEE], /* FEE */
[BAD].[VATVAL] * @INVCR, /* VALUE */
[BAD].[CURRENCYVAT] * @INVCR, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
NULL /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[VATVAL] <> 0
-- Nominal Ledger entry for BatchH
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT @CREDITORS, /* CODE */
[BAH].[BRANCH], /* BRANCH */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
[BAH].[REF], /* REF */
[BAH].[NARR], /* NARR */
-- See #18501
-- Populate with batch details MATTER if there's only one distinct value
CASE WHEN ISNULL([BAD].[MatterCount], 0) = 1
THEN ISNULL([BAD].[MatterCode], '')
ELSE '' END, /* MATTER */
[BAH].[SUPP], /* SUPP */
[BAH].[FEE], /* FEE */
[BAH].[VALUE] * -1 * @INVCR, /* VALUE */
[BAH].[CURRENCYVALUE] * -1 * @INVCR, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
NULL /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
OUTER APPLY (SELECT COUNT(DISTINCT ISNULL([BAD].[MATTER], '')) AS [MatterCount],
MIN([BAD].[MATTER]) AS [MatterCode]
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[BATCHNO] = [BAH].[BATCHNO]) AS [BAD]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- SupplierLedger entry
INSERT INTO [dbo].[SupplierLedger] (
[SUPP],
[TYPE],
[DATE],
[REF],
[BATCHNO],
[PREF],
[NARR],
[ORIGINAL],
[OSVALUE],
[YEAR],
[PER],
[ENTRYDATE],
[THIRDPARTY],
[THIRDPARTYVALUE],
[MATTER],
[PENDINGOUTLAY])
SELECT [BAH].[SUPP], /* SUPP */
'B', /* TYPE */
[BAH].[DATE], /* DATE */
[BAH].[REF], /* REF */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
[BAH].[NARR], /* NARR */
[BAH].[VALUE] * -1 * @INVCR, /* ORIGINAL */
[BAH].[VALUE] * -1 * @INVCR, /* OSVALUE */
@CURYEAR, /* YEAR */
[BAH].[PERNO], /* PER */
@TODAY, /* ENTRYDATE */
'', /* THIRDPARTY */
0, /* THIRDPARTYVALUE */
-- See #18501
-- Populate with batch details MATTER if there's only one distinct value
CASE WHEN ISNULL([BAD2].[MatterCount], 0) = 1
THEN ISNULL([BAD2].[MatterCode], '')
ELSE '' END, /* MATTER */
ISNULL([BAD].[Pending], 0) /* PENDINGOUTLAY */
FROM [dbo].[BatchH] AS [BAH]
OUTER APPLY (SELECT SUM([BAD].[VALUE] * @INVCR) AS [Pending]
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[BATCHNO] = [BAH].[BATCHNO]
AND [BAD].[OUTLAY] = 'O'
AND @PENDINGOUTLAY = 'Y') AS [BAD]
OUTER APPLY (SELECT COUNT(DISTINCT ISNULL([BAD].[MATTER], '')) AS [MatterCount],
MIN([BAD].[MATTER]) AS [MatterCode]
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[BATCHNO] = [BAH].[BATCHNO]) AS [BAD2]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Finally we mark the transaction as posted
UPDATE [BAH]
SET [BAH].[POSTED] = 'Y',
[BAH].[POSTFWD] = 'N'
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- After we're done try to recalculate only the relevant balances
IF OBJECT_ID(N'KAAS_RebuildBalances', N'P') IS NOT NULL
BEGIN
/* Get list of affected matters, suppliers, and nominals to rebuild */
DECLARE @REBUILDXML NVARCHAR(MAX)
SET @REBUILDXML = N''
SELECT @REBUILDXML = @REBUILDXML + [A].[MATTER]
FROM (SELECT N'' AS [MATTER]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAH].[MATTER]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [MATTER]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + [A].[CODE]
FROM (SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CLIENTBANK] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAD].[CODE] = [NOM].[CODE]
WHERE [BAD].[BATCHNO] = @BATCHNO
UNION
SELECT N''
UNIOn
SELECT N'') AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + N''
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Suppliers] AS [SUP]
ON [BAH].[SUPP] = [SUP].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
SET @REBUILDXML = @REBUILDXML + N''
EXEC [dbo].[KAAS_RebuildBalances] @REBUILDXML
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM [sys].[objects] SO
WHERE [SO].[name] = N'KAAS_UpdatePostingSAMReceipts'
AND [SO].[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdatePostingSAMReceipts]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdatePostingSAMReceipts] (
@BATCHNO INT,
@POSTFWD VARCHAR(1),
@HANDLER VARCHAR(10))
AS
/******************************************************************************************************
* Update Receipts Logic *
* *
* Stored Procedure Name : [dbo].[KAAS_UpdatePostingSAMReceipts] *
* *
* Modification History: *
* 2022-01-13 Balamurugan C Created *
* 2022-02-01 Balamurugan C Modified - Added Cast of Date statement for Batch Header *
* and Detail Date field *
* 2022-02-03 Balamurugan C Modifed - Allocation Logic and Transfer Client Logic *
* 2022-02-21 Balamurugan C Modified - Handled Current Period and Period End Date *
* 2022-03-09 Balamurugan.C Modified - Handled TCL Statements *
* 2022-06-02 John Ginnane Refactored code *
* 2023-05-16 Sadiq Modified Updated @CLIENTRESERVEDOVERDRAWN Raise Error message *
to return the value in SQL Exception in web api
* 2023-10-11 Vignesh M Modified - Instead of raising fatal error we raised user level
custom error for the following exception
"As a result of this transfer, the client a/c reserve limit is
overdrawn on the following matters: "
* 2024-11-14 Aakif Modified - Removed hardcoded BatchNo *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[POSTED] <> 'Y')
BEGIN
RAISERROR ('Transaction is already posted.', 16, 99)
RETURN
END
BEGIN TRY
BEGIN TRAN
-- Rather than checking and displaying each EFT error message
-- I'm going to check all of them and collate the outputs
-- Then the user can be informed all multiple errors at once
DECLARE @EFTERROR VARCHAR(MAX)
SET @EFTERROR = ''
-- !need to check
-- !1 if the Bank EFT details are entered!
SELECT @EFTERROR = @EFTERROR +
COALESCE([NOM].[DESC], [NOM].[CODE], '') +
': Bank EFT details need to be entered!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[EFTYorN] = 'Y'
AND [BAH].[THIRDPARTY] = 'Y'
AND (ISNULL([NOM].[IBAN], '') = ''
OR ISNULL([NOM].[ACCOUNTNAME], '') = ''
OR ISNULL([NOM].[SORTCODE], '') = ''
OR ISNULL([NOM].[ACCOUNTNO], '') = ''
OR ISNULL([NOM].[BIC], '') = '')
-- !need to check
-- !1 if the Bank EFT details are entered!
SELECT @EFTERROR = @EFTERROR +
COALESCE([NOM].[DESC], [NOM].[CODE], '') +
': Client EFT details needs to be entered!' + CHAR(13) + CHAR(10)
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CLIENTBANK] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAH].[EFTYorN] = 'Y'
AND [BAH].[THIRDPARTY] = 'Y'
AND (ISNULL([NOM].[IBAN], '') = ''
OR ISNULL([NOM].[ACCOUNTNAME], '') = ''
OR ISNULL([NOM].[SORTCODE], '') = ''
OR ISNULL([NOM].[ACCOUNTNO], '') = ''
OR ISNULL([NOM].[BIC], '') = '')
IF ISNULL(@EFTERROR, '') <> ''
BEGIN
RAISERROR(@EFTERROR, 16, 99)
RETURN
END
-- Make sure all matters are open
DECLARE @CLOSEDMATTERS VARCHAR(MAX)
SELECT @CLOSEDMATTERS = ISNULL(@CLOSEDMATTERS, '') +
CASE WHEN @CLOSEDMATTERS IS NULL
THEN ''
ELSE ', ' END + [MAT].[Code]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO
AND [MAT].[Closed] = 'Y'
IF ISNULL(@CLOSEDMATTERS, '') <> ''
BEGIN
SET @CLOSEDMATTERS = 'The following matters are closed: ' + @CLOSEDMATTERS + '. Cannot post.'
RAISERROR (@CLOSEDMATTERS, 16, 99)
RETURN
END
DECLARE @CURYEAR INT
DECLARE @CURPER INT
DECLARE @VATNOMINAL VARCHAR(10)
DECLARE @CLCONTROL VARCHAR(10)
DECLARE @TODAY DATETIME
DECLARE @THIRDPARTY BIT
DECLARE @SHOWNOBAR BIT
SELECT @CURYEAR = [CON].[YEAR],
@CURPER = [CON].[CURPER],
@VATNOMINAL = [CON].[VAT],
@CLCONTROL = [CON].[CLIENT],
@SHOWNOBAR = CASE WHEN [CON].[NOBAR] = 'Y' THEN 1 ELSE 0 END,
-- Get today's DATE and not TIME. This is to make sure it stil works with Clarion apps
@TODAY = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
FROM [dbo].[control] AS [CON]
SELECT @THIRDPARTY = CASE WHEN ISNULL([BAH].[THIRDPARTY], '') = 'Y'
THEN 1
ELSE 0 END
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- Make sure transaction is in correct year and period
UPDATE [BAH]
SET [BAH].[YEAR] = @CURYEAR,
[BAH].[PERNO] = @CURPER + CASE WHEN @POSTFWD = 'Y' THEN 1 ELSE 0 END,
[BAH].[CLIENTAC] = CASE WHEN ISNULL([NOM].[CLIENTAC], '') <> 'Y' THEN 'N' ELSE [BAH].[CLIENTAC] END
FROM [dbo].[BatchH] AS [BAH]
LEFT OUTER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UPDATE [BAD]
SET [BAD].[YEAR] = [BAH].[YEAR],
[BAD].[PERNO] = [BAH].[PERNO],
[BAD].[DATE] = [BAH].[DATE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
DECLARE @DEPOSITAC VARCHAR(1)
DECLARE @DEPOSITTYPE VARCHAR(4)
IF @THIRDPARTY = 0
BEGIN
SELECT @DEPOSITAC = [NOM].[DEPOSITYN],
@DEPOSITTYPE = [NOM].[DEPOSITTYPE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
END
ELSE
BEGIN
SELECT @DEPOSITAC = [NOM].[DEPOSITYN],
@DEPOSITTYPE = [NOM].[DEPOSITTYPE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CLIENTBANK] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
END
IF @THIRDPARTY = 1
BEGIN
INSERT INTO [dbo].[MatterLedger] (
[MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate])
SELECT RTRIM([BAD].[MATTER]), /* MATTER */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAD].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM(LEFT([BAD].[NARR], 80)), /* NARR */
0, /* VALUED */
0, /* VALUEO */
ISNULL([BAD].[VALUE], 0), /* VALUEC */
RTRIM([BAD].[FEE]), /* FEE */
[BAD].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
LEFT([BAD].[MATTER], 6), /* CLIENT */
CASE WHEN @DEPOSITAC = 'Y' THEN 0 ELSE ISNULL([BAD].[VALUE], 0) END, /* VALUECC */
CASE WHEN @DEPOSITAC <> 'Y' THEN 0 ELSE ISNULL([BAD].[VALUE], 0) END, /* VALUECD */
@DEPOSITTYPE, /* DEPOSITTYPE */
0, /* CURVALUED */
0, /* CURVALUEO */
ISNULL([BAD].[CURRENCYVALUE], 0), /* CURVALUEC */
CASE WHEN @DEPOSITAC = 'Y' THEN 0 ELSE ISNULL([BAD].[CURRENCYVALUE], 0) END, /* CURVALUECC */
CASE WHEN @DEPOSITAC <> 'Y' THEN 0 ELSE ISNULL([BAD].[CURRENCYVALUE], 0) END, /* CURVALUECD */
'', /* BILLED */
0, /* BILLINGYEAR */
0, /* BILLINGPERIOD */
NULL, /* BILLINGDATE */
0, /* BilledOutlayValue */
0, /* InvoiceNo */
0, /* IncludeInBill */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] <> 'N'
END
INSERT INTO [dbo].[MatterLedger] (
[MATTER],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[VALUED],
[VALUEO],
[VALUEC],
[FEE],
[PER],
[YEAR],
[ENTRYDATE],
[CLIENT],
[VALUECC],
[VALUECD],
[DEPOSITTYPE],
[CURVALUED],
[CURVALUEO],
[CURVALUEC],
[CURVALUECC],
[CURVALUECD],
[BILLED],
[BILLINGYEAR],
[BILLINGPERIOD],
[BILLINGDATE],
[BilledOutlayValue],
[InvoiceNo],
[IncludeInBill],
[ClearedDate])
SELECT RTRIM([BAD].[MATTER]), /* MATTER */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAD].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM(LEFT([BAD].[NARR], 80)), /* NARR */
CASE WHEN [BAD].[OUTLAY] = 'D' THEN ISNULL([BAD].[VALUE], 0) * -1 ELSE 0 END, /* VALUED */
CASE WHEN [BAD].[OUTLAY] = 'O' THEN ISNULL([BAD].[VALUE], 0) * -1 ELSE 0 END, /* VALUEO */
CASE WHEN [BAD].[OUTLAY] = 'C' THEN ISNULL([BAD].[VALUE], 0) * -1 ELSE 0 END, /* VALUEC */
RTRIM([BAD].[FEE]), /* FEE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
LEFT([BAD].[MATTER], 6), /* CLIENT */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND @DEPOSITAC <> 'Y'
THEN ISNULL([BAD].[VALUE], 0) * -1
ELSE 0 END, /* VALUECC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND @DEPOSITAC = 'Y'
THEN ISNULL([BAD].[VALUE], 0) * -1
ELSE 0 END, /* VALUECD */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND @DEPOSITAC = 'Y'
THEN @DEPOSITTYPE
ELSE '' END, /* DEPOSITTYPE */
CASE WHEN [BAD].[OUTLAY] = 'D'
THEN ISNULL([BAD].[CURRENCYVALUE], 0) * -1
ELSE 0 END, /* CURVALUED */
CASE WHEN [BAD].[OUTLAY] = 'O'
THEN ISNULL([BAD].[CURRENCYVALUE], 0) * -1
ELSE 0 END, /* CURVALUEO */
CASE WHEN [BAD].[OUTLAY] = 'C'
THEN ISNULL([BAD].[CURRENCYVALUE], 0) * -1
ELSE 0 END, /* CURVALUEC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND @DEPOSITAC <> 'Y'
THEN ISNULL([BAD].[CURRENCYVALUE], 0) * -1
ELSE 0 END, /* CURVALUECC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND @DEPOSITAC = 'Y'
THEN ISNULL([BAD].[CURRENCYVALUE], 0) * -1
ELSE 0 END, /* CURVALUECD */
'', /* BILLED */
0, /* BILLINGYEAR */
0, /* BILLINGPERIOD */
NULL, /* BILLINGDATE */
0, /* BilledOutlayValue */
0, /* InvoiceNo */
0, /* IncludeInBill */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] <> 'N'
-- Check if client balance will be overdrawn with this posting
-- Or if the balance dips below the minimum amount
DECLARE @MATTERSCLIENTBALANCES TABLE (
[Code] VARCHAR(20) PRIMARY KEY,
[ClientMin] DECIMAL(19, 2),
[ClientCur] DECIMAL(19, 2),
[ClientDep] DECIMAL(19, 2))
;WITH [CTE_MAT] ([Code], [ClientMin]) AS (
SELECT DISTINCT [MAT].[Code], ISNULL([MAT].[ClientMin], 0)
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO),
[CTE_MTL] ([Code], [ClientMin], [ClientCur], [ClientDep]) AS (
SELECT LTRIM(RTRIM([CTE_MAT].[Code])),
[CTE_MAT].[ClientMin],
SUM(ISNULL([MTL].[VALUECC], 0)),
SUM(ISNULL([MTL].[VALUECD], 0))
FROM [CTE_MAT]
LEFT OUTER JOIN [dbo].[MatterLedger] AS [MTL]
ON [MTL].[MATTER] = [CTE_MAT].[Code]
GROUP BY LTRIM(RTRIM([CTE_MAT].[Code])),
[CTE_MAT].[ClientMin])
INSERT INTO @MATTERSCLIENTBALANCES (
[Code],
[ClientMin],
[ClientCur],
[ClientDep])
SELECT [CTE_MTL].[Code],
[CTE_MTL].[ClientMin] * -1,
[CTE_MTL].[ClientCur],
[CTE_MTL].[ClientDep]
FROM [CTE_MTL]
DECLARE @OVERDRAWNMATTERS VARCHAR(MAX)
SELECT @OVERDRAWNMATTERS = ISNULL(@OVERDRAWNMATTERS, '') +
CASE WHEN @OVERDRAWNMATTERS IS NULL
THEN ''
ELSE ', ' END + [TMP].[Code]
FROM @MATTERSCLIENTBALANCES AS [TMP]
WHERE [TMP].[ClientCur] > 0
OR [TMP].[ClientDep] > 0
IF ISNULL(@OVERDRAWNMATTERS, '') <> ''
BEGIN
IF @SHOWNOBAR <> 1
BEGIN
SET @OVERDRAWNMATTERS = 'The following matters will be overdrawn: ' + @OVERDRAWNMATTERS + '. Cannot post.'
RAISERROR (@OVERDRAWNMATTERS, 16, 99)
RETURN
END
ELSE
BEGIN
SET @OVERDRAWNMATTERS = 'As a result of this transfer, the client a/c is overdrawn on the following matters: ' + @OVERDRAWNMATTERS + '.'
RAISERROR (@OVERDRAWNMATTERS, 5, 99)
END
END
DECLARE @CLIENTRESERVEDOVERDRAWN VARCHAR(MAX)
SELECT @CLIENTRESERVEDOVERDRAWN = ISNULL(@CLIENTRESERVEDOVERDRAWN, '') +
CASE WHEN @CLIENTRESERVEDOVERDRAWN IS NULL
THEN ''
ELSE ', ' END + [TMP].[Code]
FROM @MATTERSCLIENTBALANCES AS [TMP]
WHERE (ISNULL([TMP].[ClientCur], 0) + ISNULL([TMP].[ClientDep], 0)) > [TMP].[ClientMin]
IF ISNULL(@CLIENTRESERVEDOVERDRAWN, '') <> ''
BEGIN
SET @CLIENTRESERVEDOVERDRAWN = 'As a result of this transfer, the client a/c reserve limit is overdrawn on the following matters: ' + @CLIENTRESERVEDOVERDRAWN + '.'
RAISERROR (@CLIENTRESERVEDOVERDRAWN, 5, 99)
END
-- Update matter's last act
UPDATE [MAT]
SET [MAT].[LastActType] = CASE [BAD].[OUTLAY]
WHEN 'D' THEN 'Debtor Rec'
WHEN 'O' THEN 'Outlay Rec'
WHEN 'C' THEN 'Client Rec'
ELSE [MAT].[LastActType] END,
[MAT].[LastAct] = @TODAY,
[MAT].[LastActWho] = @HANDLER
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
INNER JOIN [dbo].[matters] AS [MAT]
ON [BAD].[MATTER] = [MAT].[Code]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- "If transfer from client a/c"
-- We will rebuild all relevant matter and client balances in a procedure later
-- ! Update Nominal for Detail Lines
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM([BAD].[CODE]), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAD].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM([BAD].[NARR]), /* NARR */
RTRIM([BAD].[MATTER]), /* MATTER */
RTRIM([BAD].[SUPP]), /* SUPP */
RTRIM([BAD].[FEE]), /* FEE */
(ISNULL([BAD].[VALUE], 0) - ISNULL([BAD].[VATVAL], 0)) * -1, /* VALUE */
(ISNULL([BAD].[CURRENCYVALUE], 0) - ISNULL([BAD].[CURRENCYVAT], 0)) * -1, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- ! Update Nominal for VAT
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM(@VATNOMINAL), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAD].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM([BAD].[NARR]), /* NARR */
RTRIM([BAD].[MATTER]), /* MATTER */
RTRIM([BAD].[SUPP]), /* SUPP */
RTRIM([BAD].[FEE]), /* FEE */
ISNULL([BAD].[VATVAL], 0) * -1, /* VALUE */
ISNULL([BAD].[CURRENCYVAT], 0) * -1, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[VATVAL] <> 0
-- ! Update Nominal Client Ledger Control for Client A/c Transfer
IF @THIRDPARTY = 1
BEGIN
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM(@CLCONTROL), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
[BAD].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
RTRIM([BAD].[NARR]), /* NARR */
RTRIM([BAD].[MATTER]), /* MATTER */
RTRIM([BAD].[SUPP]), /* SUPP */
RTRIM([BAD].[FEE]), /* FEE */
ISNULL([BAD].[VALUE], 0), /* VALUE */
ISNULL([BAD].[CURRENCYVALUE], 0), /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
END
-- ! Nominal Updated for Client A/c Transfer
INSERT INTO [dbo].[DebtorsLedger] (
[MATTER],
[TYPE],
[CLIENT],
[DATE],
[REF],
[BATCHNO],
[PREF],
[NARR],
[ORIGINAL],
[OSVALUE],
[ORFEES],
[OROUTLAY],
[ORVAT],
[OSFEES],
[OSOUTLAY],
[OSVAT],
[VATCODE],
[PER],
[YEAR],
[FEECODE],
[ClearedDate])
SELECT RTRIM([BAD].[MATTER]), /* MATTER */
'R', /* TYPE */
RTRIM([MAT].[ClientCode]), /* CLIENT */
[BAD].[DATE], /* DATE */
RTRIM([BAD].[REF]), /* REF */
[BAD].[BATCHNO], /* BATCHNO */
[BAD].[PREF], /* PREF */
RTRIM(RIGHT(RTRIM([BAD].[NARR]), 80)), /* NARR */
[BAD].[VALUE] * -1, /* ORIGINAL */
CASE WHEN [BAH].[SINGLELINE] = 'Y'
AND [BAD].[ALLOCBATCH] = 0
THEN 0
ELSE ISNULL([BAD].[VALUE], 0) * -1 END, /* OSVALUE */
0, /* ORFEES */
0, /* OROUTLAY */
0, /* ORVAT */
0, /* OSFEES */
0, /* OSOUTLAY */
0, /* OSVAT */
'', /* VATCODE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
'', /* FEECODE */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
INNER JOIN [dbo].[matters] AS [MAT]
ON [BAD].[MATTER] = [MAT].[Code]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] = 'D'
-- ! If Receipt Correction
-- !no allocation
UPDATE [DTL]
SET [DTL].[OSVALUE] = 0,
[DTL].[OSFEES] = 0,
[DTL].[OSOUTLAY] = 0,
[DTL].[OSVAT] = 0
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
INNER JOIN [dbo].[DebtorsLedger] AS [DTL]
ON [BAD].[HEADBATCH] = [DTL].[BATCHNO]
AND [BAD].[HEADPREF] = [DTL].[PREF]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] = 'D'
AND [BAH].[SINGLELINE] = 'Y'
AND [BAD].[ALLOCBATCH] = 0
-- Automatically allocate receipt
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = ''
-- I have written this procedure to handle multiple allocations simultaneously
SELECT @SQL = N'' +
(SELECT *
FROM (SELECT [BAD].[BATCHNO] AS [ReceiptBatchNo],
[BAD].[PREF] AS [ReceiptPostRef],
[BAD].[ALLOCBATCH] AS [InvoiceBatchNo],
[BAD].[ALLOCPREF] AS [InvoicePostRef],
[BAD].[VALUE] AS [AllocateValue],
CASE WHEN ISNULL([BAD].[ALLOCWRITEOFF], '') <> 'Y'
THEN 'N'
ELSE 'Y' END AS [WriteOffRemainder]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[TYPE] = 'R'
AND [BAD].[OUTLAY] = 'D'
AND [BAD].[ALLOCPREF] <> 0 -- Only check PREF because BATCHNO can be 0 for converted data
AND [BAH].[BATCHNO] = @BATCHNO) AS [Allocation]
FOR XML AUTO) +
N''
IF ISNULL(@SQL, '') <> ''
BEGIN
EXEC [dbo].[KAAS_AutoAllocateTransactions] @SQL
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[BatchDetails] AS [BAD]
WHERE [BAD].[BATCHNO] = @BATCHNO
AND [BAD].[ALLOCWRITEOFF] = 'Y'
AND [BAD].[TYPE] = 'R'
AND [BAD].[OUTLAY] = 'D'
AND [BAD].[ALLOCPREF] <> 0)
BEGIN
RAISERROR ('Auto write-off Journal generated - please update', 5, 99)
END
END
-- Iterate over each batch detail and call ky_BGPaid if BAD.AllocBatch <> 0
DECLARE @ALLOCATIONS TABLE ([InvoiceBatchNo] INT)
INSERT INTO @ALLOCATIONS ([InvoiceBatchNo])
SELECT [BAD].[ALLOCBATCH]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
WHERE [BAH].[BATCHNO] = @BATCHNO
AND [BAD].[OUTLAY] = 'D'
AND [BAD].[ALLOCPREF] <> 0
DECLARE @ALLOCBATCH INT
WHILE EXISTS (SELECT TOP 1 1 FROM @ALLOCATIONS)
BEGIN
SELECT TOP 1 @ALLOCBATCH = [TMP].[InvoiceBatchNo]
FROM @ALLOCATIONS AS [TMP]
EXEC [dbo].[KAAS_BGPaid] NULL, @ALLOCBATCH, 0, 0, 0
DELETE [TMP]
FROM @ALLOCATIONS AS [TMP]
WHERE [TMP].[InvoiceBatchNo] = @ALLOCBATCH
END
-- ! Update Nominal for Batch Header
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM([BAH].[CODE]), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAH].[REF]), /* REF */
RTRIM([BAH].[NARR]), /* NARR */
RTRIM([BAH].[MATTER]), /* MATTER */
RTRIM([BAH].[SUPP]), /* SUPP */
RTRIM([BAH].[FEE]), /* FEE */
ISNULL([BAH].[VALUE], 0), /* VALUE */
ISNULL([BAH].[CURRENCYVALUE], 0), /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
IF @THIRDPARTY = 1
BEGIN
INSERT INTO [dbo].[NominalLedger] (
[CODE],
[BRANCH],
[BATCHNO],
[PREF],
[DATE],
[REF],
[NARR],
[MATTER],
[SUPP],
[FEE],
[VALUE],
[CURRENCYVALUE],
[PER],
[YEAR],
[ENTRYDATE],
[RECNO],
[ClearedDate])
SELECT RTRIM([BAH].[CLIENTBANK]), /* CODE */
RTRIM([BAH].[BRANCH]), /* BRANCH */
[BAH].[BATCHNO], /* BATCHNO */
[BAH].[PREF], /* PREF */
[BAH].[DATE], /* DATE */
RTRIM([BAH].[REF]), /* REF */
RTRIM([BAH].[NARR]), /* NARR */
RTRIM([BAH].[MATTER]), /* MATTER */
RTRIM([BAH].[SUPP]), /* SUPP */
RTRIM([BAH].[FEE]), /* FEE */
ISNULL([BAH].[VALUE], 0) * -1, /* VALUE */
ISNULL([BAH].[CURRENCYVALUE], 0) * -1, /* CURRENCYVALUE */
[BAH].[PERNO], /* PER */
@CURYEAR, /* YEAR */
@TODAY, /* ENTRYDATE */
0, /* RECNO */
[BAH].[ClearedDate] /* ClearedDate */
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
END
-- !Client A/c Bank Transfer Post
UPDATE [BAH]
SET [BAH].[POSTED] = 'Y',
[BAH].[POSTFWD] = 'N'
FROM [dbo].[BatchH] AS [BAH]
WHERE [BAH].[BATCHNO] = @BATCHNO
-- After we're done try to recalculate only the relevant balances
IF OBJECT_ID(N'KAAS_RebuildBalances', N'P') IS NOT NULL
BEGIN
/* Get list of affected matters, suppliers, and nominals to rebuild */
DECLARE @REBUILDXML NVARCHAR(MAX)
SET @REBUILDXML = N''
SELECT @REBUILDXML = @REBUILDXML + [A].[MATTER]
FROM (SELECT N'' AS [MATTER]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAH].[MATTER]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [MATTER]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[matters] AS [MAT]
ON [MAT].[Code] = [BAD].[MATTER]
WHERE [BAD].[BATCHNO] = @BATCHNO) AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + [A].[CODE]
FROM (SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CODE] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAH].[CLIENTBANK] = [NOM].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
UNION
SELECT N'' AS [CODE]
FROM [dbo].[BatchDetails] AS [BAD]
INNER JOIN [dbo].[Nominal] AS [NOM]
ON [BAD].[CODE] = [NOM].[CODE]
WHERE [BAD].[BATCHNO] = @BATCHNO
UNION
SELECT N''
UNION
SELECT N'') AS [A]
SET @REBUILDXML = @REBUILDXML + N''
SELECT @REBUILDXML = @REBUILDXML + N''
FROM [dbo].[BatchH] AS [BAH]
INNER JOIN [dbo].[Suppliers] AS [SUP]
ON [BAH].[SUPP] = [SUP].[CODE]
WHERE [BAH].[BATCHNO] = @BATCHNO
SET @REBUILDXML = @REBUILDXML + N''
EXEC [dbo].[KAAS_RebuildBalances] @REBUILDXML
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR (@ErrorMsg, @ErrorSeverity, @ErrorState)
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_UpdateSAMApprovedChequeRequisition'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdateSAMApprovedChequeRequisition]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdateSAMApprovedChequeRequisition]
(
@Date DATETIME = NULL,
@OutlayCode VARCHAR(4) = '',
@ThirdParty CHAR(1) = '',
@Narrative VARCHAR(100) = '',
@Note VARCHAR(100) = '',
@ReqNo INT = 0
)
AS
/*******************************************************************************************************
* Update the Approved Cheque Reqisition Details *
* *
* Stored Procedure Name : [dbo].[dbo].[KAAS_UpdateSAMApprovedChequeRequisition] *
* *
* Modification History: *
* 2021-09-14 Balamurugan.C Created *
*******************************************************************************************************/
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[ChequeRequisitionHeader]
WHERE [ReqNo] = @ReqNo
)
BEGIN
UPDATE [dbo].[ChequeRequisitionHeader]
SET [Date] = @Date,
[OutlayCode] = @OutlayCode,
[ThirdParty] = @ThirdParty,
[Narrative] = @Narrative,
[ReturnReason] = @Note
WHERE [ReqNo] = @ReqNo
END
END
GO
IF EXISTS(SELECT
TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_UpdateSAMFNLDetails'
AND SO.[type] = 'P'
)
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdateSAMFNLDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdateSAMFNLDetails]
(
@MatterCode VARCHAR(20),
@FNLDate DATETIME,
@FNLName VARCHAR(50),
@FNLAddress VARCHAR(100),
@FNLFees DECIMAL(15,2),
@FNLVat DECIMAL(15,2),
@FNLOutlay DECIMAL(15,2),
@FNLTotal DECIMAL(15,2),
@ClientMin DECIMAL,
@User VARCHAR(30) = '',
@Result TINYINT OUTPUT
)
AS
/*************************************************************************************************************************************************
* *
*Used to list the matter ledger *
* Stored Procedure Name: [dbo].[KAAS_UpdateSAMFNLDetails] '000001/0000','2021-04-12 17:54:13.453','RAJ','SET ADDRESS','40','20','10','70',50,0 *
* Modification History: *
* 2021-03-11 Natarajan S Created *
* 2021-07-13 Natarajan S Modified - Added Formatting *
* 2022-03-08 Balamurugan.C Modified - Handled TCL Statements and Formatting *
* 2023-10-25 Revathy.D Modified - Added the missed param 'Handler code' to KAAS_INSERTSAMMatterLedgerComment *
* 2024-06-21 Balamurugan.C Modified - Added the missed param 'IsDormantClientBalReason' to KAAS_INSERTSAMMatterLedgerComment *
and changed narrative text *
**************************************************************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRANSACTION
DECLARE @Narrative VARCHAR(80)
DECLARE @SpaceVal INT
DECLARE @NameLen INT
DECLARE @CurrDate DATETIME
SET @CurrDate = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](GETDATE(), @User)), 0)
UPDATE [OMO]
SET [OMO].[FNL_Date] = @FNLDate,
[OMO].[FNL_Name] = @FNLName,
[OMO].[FNL_Address] = @FNLAddress,
[OMO].[FNL_Fees] = @FNLFees,
[OMO].[FNL_VAT] = @FNLVat,
[OMO].[FNL_Outlay] = @FNLOutlay
FROM [dbo].[OpenMattersOnly] [OMO]
WHERE [OMO].[Code] = @MatterCode
UPDATE [MAT]
SET [MAT].[FNL_Date] = @FNLDate,
[MAT].[FNL_Name] = @FNLName,
[MAT].[FNL_Address] = @FNLAddress,
[MAT].[FNL_Fees] = @FNLFees,
[MAT].[FNL_VAT] = @FNLVat,
[MAT].[FNL_Outlay] = @FNLOutlay,
[MAT].[FNL_Total] = @FNLTotal
FROM [dbo].[Matters] [MAT]
WHERE [MAT].[Code] = @MatterCode
SET @Narrative = CONVERT(VARCHAR(200),
'FNL: ' + CONVERT(VARCHAR(15), @FNLTotal) +
' ' + RTRIM(ISNULL(CONVERT(VARCHAR(30), @FNLName), '')) +
'... Fees: ' + CONVERT(VARCHAR(15), @FNLFees) +
' Outlay: ' + CONVERT(VARCHAR(15), @FNLOutlay) +
' VAT: ' + CONVERT(VARCHAR(15), @FNLVat))
EXEC [dbo].[KAAS_INSERTSAMMatterLedgerComment] @MatterCode, @Narrative, @ClientMin, @CurrDate,@User,0, @Result
SET @Result = 1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @Result = 0
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_UPDATESAMMatterLedgerComment'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UPDATESAMMatterLedgerComment]
END
go
CREATE PROCEDURE
[dbo].[KAAS_UPDATESAMMatterLedgerComment]
(@MatterCode VARCHAR(20),
@Narrative VARCHAR(MAX),
@HandlerCode VARCHAR(20),
@LRef VARCHAR(20),
@IsDormantClientBalReason BIT = 0,
@Result TINYINT OUTPUT)
AS
/*******************************************************************************************************
* *
*Used to list the matter ledger *
* Stored Procedure Name: [dbo].[KAAS_UPDATESAMMatterLedgerComment] *
* Modification History: *
* 2023-05-09 Vignesh M Created *
* 2024-06-19 Revathy.D Modified -- Included IsDormantClientBalReason *
********************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
UPDATE [MAT]
SET [MAT].[NARR] = @Narrative,
[MAT].[REF] = @HandlerCode,
[MAT].[IsDormantClientBalReason] = @IsDormantClientBalReason
FROM [dbo].[MatterLedger] [MAT]
WHERE [MAT].[MATTER] = @MatterCode AND [MAT].[LREF] = @LRef AND [MAT].[BATCHNO] = 0
SET @Result = 1
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_UpdateSAMSystemOptionsDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdateSAMSystemOptionsDetails]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdateSAMSystemOptionsDetails]
(
@TabName VARCHAR(50) = '',
@Licencee VARCHAR(40) = '',
@VatNo VARCHAR(20) = '',
@Year INT = 0,
@DebtorsControlAc VARCHAR(10) = '',
@CreditorsControlAc VARCHAR(10) = '',
@CurrentPeriod INT = 0,
@NextPeriodEnd DATETIME = NULL,
@OutlayControlAc VARCHAR(10) = '',
@VatAc VARCHAR(10) = '',
@YearEndDate DATETIME = NULL,
@ProfitLossAc VARCHAR(10) = '',
@ClientLedgerControl VARCHAR(10) = '',
@StdOutlayBudget DECIMAL = 0,
@FeeWriteOffAc VARCHAR(10) = '',
@OutlayWriteOffAc VARCHAR(10) = '',
@LastBillNo INT = 0,
@VatExclusionCode VARCHAR(1) = '',
@PurchBillWriteOffAc VARCHAR(10) = '',
@DefaultOfficeAc VARCHAR(10) = '',
@DefaultVat VARCHAR(1) = '',
@FeeExclusionCode VARCHAR(10) = '',
@DefaultClientDepositAc VARCHAR(10) = '',
@MiscOutlay VARCHAR(10) = '',
@DefaultMiscOutlayFee VARCHAR(10) = '',
@DefaultPettyCash VARCHAR(10) = '',
@WithHoldingTax VARCHAR(10) = '',
@EnableFNL VARCHAR(10) = '',
@ShowConvertedLedgerBtn VARCHAR(1) = '',
@EnableClientDB VARCHAR(1) = '',
@UK VARCHAR(1) = '',
@EnableDeedWills VARCHAR(1) = '',
@YearEndCompleted VARCHAR(1) = '',
@EnableFileManager VARCHAR(1) = '',
@UseOutlayType VARCHAR(1) = '',
@PendingOutlay VARCHAR(1) = '',
@UseBranches VARCHAR(1) = '',
@EnableBankRec VARCHAR(1) = '',
@BillPrinting VARCHAR(1) = '',
@UniqueMatterNumber VARCHAR(1) = '',
@TaggedBatches VARCHAR(1) = '',
@OverdrawnClientAc VARCHAR(1) = '',
@IntrestCalculator VARCHAR(1) = '',
@WordPerfect VARCHAR(1) = '',
@Indicator24 VARCHAR(1) = '',
@Indicator25 VARCHAR(1) = '',
@Indicator26 VARCHAR(1) = '',
@Indicator27 VARCHAR(1) = '',
@Indicator28 VARCHAR(1) = '',
@Indicator29 VARCHAR(1) = '',
@Indicator30 VARCHAR(1) = '',
@DemoExpire INT = 0,
@MaxMatter DECIMAL = 0,
@CaseMgrLink VARCHAR(1) = '',
@TimeCostingInstalled VARCHAR(1) = '',
@ForceFeeEarner VARCHAR(1) = '',
@LabelPrinter VARCHAR(1) = '',
@FeeReporting VARCHAR(10) = '',
@CompositeBilling VARCHAR(1) = '',
@AllowFwPostingJournals VARCHAR(1) = '',
@SolicitorCategory VARCHAR(6) = '',
@OtherPartyCategory VARCHAR(6) = '',
@RemoteTypist VARCHAR(6) = '',
@SupplierCategory VARCHAR(6) = '',
@SystemCategoryType VARCHAR(6) = '',
@AutoNumberClient VARCHAR(1) = '',
@AutoAlphaNumbering VARCHAR(1) = '',
@CloseMatterTimeBarred VARCHAR(1) = '',
@SupplierRemittance VARCHAR(1) = '',
@EFTDefaultON VARCHAR(1) = '',
@EFTEmailToSend VARCHAR(1) = '',
@EFTTransactionLimit DECIMAL = 0.00,
@EFTNoOfTransactionLimit INT = 0,
@EFTEmailSubject VARCHAR(250) = '',
@EFTEmailMessage VARCHAR(1000) = '',
@DefaultPrebilledOutlay VARCHAR(1) = '',
@MatterOutlayBudgetChkON VARCHAR(1) = '',
@ThirdPartyLimit DECIMAL = 0,
@DatePastValidation INT = 0,
@DateFutureValidation INT = 0,
@ConversionRate DECIMAL = 0,
@PromptRef1 VARCHAR(20) = '',
@PromptRef2 VARCHAR(20) = '',
@PromptRef3 VARCHAR(20) = '',
@NextFile INT = 0,
@ClosedFileNo INT = 0,
@ChequeType VARCHAR(2) = '',
@EnableChequePrinting VARCHAR(1) = '',
@LabelNo VARCHAR(2) = '',
@InvoiceApproverEmail VARCHAR(100) = '',
@ChequeApproverEmail VARCHAR(100) = '',
@NotifyReturnInvoice VARCHAR(1) = '',
@NotifyApprovedInvoice VARCHAR(1) = '',
@NotifyReturnCheque VARCHAR(1) = '',
@NotifyApprovedCheque VARCHAR(1) = '',
@SMTPMailServer VARCHAR(100) = '',
@MoneyLaunderingCheck VARCHAR(1) = '',
@MoneyLaunderingDept VARCHAR(20) = '',
@MoneyLaunderingFE VARCHAR(20) = '',
@MoneyLaunderingWorkType VARCHAR(20) = '',
@ClientLabel VARCHAR(100) = '',
@ContactLabel VARCHAR(100) = '',
@MatterLabel VARCHAR(100) = '',
@CaseLabel VARCHAR(100) = '',
@CaseMatterLabel VARCHAR(100) = '',
@FeeEarnerLabel VARCHAR(100) = '',
@PartnerLabel VARCHAR(100) = '',
@AssociateLabel VARCHAR(100) = '',
@BranchLabel VARCHAR(100) = '',
@PostalCodeLabel VARCHAR(100) = '',
@ManualClientCode VARCHAR(100) = '',
@ShowMatterCode VARCHAR(100) = '',
@AutoNumberIfBlank VARCHAR(100) = '',
@AutoNumber VARCHAR(20) = '',
@AutoAlphaClientNumbering VARCHAR(20) = '',
@UniqueMatterCodeNumbering VARCHAR(20) = '',
@AzureBlobStorageClientFolder VARCHAR(100) = '',
@AzureBlobStorageClientVersionsFolder VARCHAR(100) = '',
@AzureBlobStorageTemplatesFolder VARCHAR(100) = '',
@NotAllowMultipleDraftBill VARCHAR(20) = '',
@ChequeApproverHandler VARCHAR(20) = '',
@InvoiceApproverHandler VARCHAR(20) = '',
@RMStatuteActionCode VARCHAR(100) = '',
@RMStatuteWarning INT = 0,
@RMUndertakingActionCode VARCHAR(100) = '',
@RMUndertakingWarning INT = 0,
@UseNewStatuteSystem VARCHAR(20) = '',
@EstFeeWarningLimit VARCHAR(20) = '',
@LockUpValue DECIMAL = 0.00,
@LastActionMonth INT = 0,
@DebtorWarningDaysLimit INT = 0,
@AddUndertakingCommentLedger VARCHAR(20) = '',
@ShowAlarm VARCHAR(20) = ''
)
AS
/*******************************************************************************************************
* This SP used to update the System Options details *
* *
* Stored Procedure Name : [dbo].[KAAS_UpdateSAMSystemOptionsDetails] *
* Copied From : ky_NETSYSCONUpdateConfigurationSettings10 *
* *
* Modification History : *
* 2021-08-09 Balamurugan.C Created *
* 2021-09-20 Balamurugan.C Modified- Removed Year End Date from control table and used *
srettings table year end date *
* 2022-02-28 Balamurugan.C Modified - Handled TCL Statements *
* 2022-11-24 Ghayathri.S.V Modified - Handled updaing values from code configuration tab *
* 2024-01-23 Ghayathri.S.V Modified- Handled updating values DefaultPrebilledOutlay *
* 2024-02-28 Sadiq Modified- Added Azure Container dynamic values *
* 2024-03-25 Ghayathri.S.V Modified- Added EFT Default values *
* 2024-06-04 Vignesh M Modified- Added Remote Typist values *
* 2024-07-23 Sadiq Modified- Replaced CurrentWIPLimit to EstFeeWarningLimit *
(Bug no- 18686) *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
IF(@TabName = 'SystemOptions')
BEGIN
-- Log changes to LastBill
DECLARE @CURLASTBILL VARCHAR(20)
SELECT TOP 1 @CURLASTBILL = CONVERT(VARCHAR(20), ISNULL(CON.[LASTBILL], 0))
FROM [dbo].[control] AS CON
IF ISNULL(@CURLASTBILL, '') <> ISNULL(@LastBillNo, '')
BEGIN
INSERT
INTO [dbo].[Log]
(
[DATE],
[USER],
[EVENT]
)
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0),
[dbo].[ky_NETFNGetLoggedOnHandler](),
'System Options Change (Last Bill No) from: ' + ISNULL(@CURLASTBILL, '') + ' to: ' + ISNULL(@LastBillNo, '')
END
UPDATE [dbo].[Control]
SET [Name] = @Licencee,
[VatNo] = @VatNo,
[Year] = @Year,
[Debtors] = @DebtorsControlAc,
[Creditor] = @CreditorsControlAc,
[CurPer] = @CurrentPeriod,
[Outlay] = @OutlayControlAc,
[Vat] = @VatAc,
[Pl] = @ProfitLossAc,
[Client] = @ClientLedgerControl,
[OutlayBudget] = @StdOutlayBudget,
[FeesWriteOff] = @FeeWriteOffAc,
[OutlayWriteOff] = @OutlayWriteOffAc,
[LastBill] = @LastBillNo,
[VatExclude] = @VatExclusionCode,
[BillsWriteOff] = @PurchBillWriteOffAc,
[DefaultOfficeAc] = @DefaultOfficeAc,
[DefaultVat] = @DefaultVat,
[FeeExclude] = @FeeExclusionCode,
[DefaultClientDep] = @DefaultClientDepositAc,
[MiscOutlay] = @MiscOutlay,
[MiscFE] = @DefaultMiscOutlayFee,
[PettyCash] = @DefaultPettyCash,
[WithTax] = @WithHoldingTax,
[EnableFNL] = @EnableFNL,
[PeriodEnd] = (SELECT [dbo].[KAAS_FN_ConvertDateToClarion](@NextPeriodEnd))
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'Options_Conversion'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @ShowConvertedLedgerBtn
WHERE [KeyName] = 'Options_Conversion'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'Options_Conversion',
@ShowConvertedLedgerBtn
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'YearEndDate'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = CONVERT(VARCHAR(10), CAST(@YearEndDate AS DATE),103)
WHERE [KeyName] = 'YearEndDate'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'YearEndDate',
CONVERT(VARCHAR(10), CAST(@YearEndDate AS DATE),103)
)
END
IF(@TabName = 'Keyhouse')
BEGIN
UPDATE [dbo].[Control]
SET [EnableCDB] = @EnableClientDB,
[UK] = @UK,
[EnableDW] = @EnableDeedWills,
[YearEndCompleted] = @YearEndCompleted,
[EnableFM] = @EnableFileManager,
[UseOutlayType] = @UseOutlayType,
[PendingOutlay] = @PendingOutlay,
[Indicator22] = @UseBranches,
[RecInstalled] = @EnableBankRec,
[Indicator18] = @BillPrinting,
[Indicator19] = @UniqueMatterNumber,
[Indicator23] = @TaggedBatches,
[NoBar] = @OverdrawnClientAc,
[Indicator20] = @IntrestCalculator,
[WordPerfect] = @WordPerfect,
[Indicator24] = @Indicator24,
[Indicator25] = @Indicator25,
[Indicator26] = @Indicator26,
[Indicator27] = @Indicator27,
[Indicator28] = @Indicator28,
[Indicator29] = @Indicator29,
[Indicator30] = @Indicator30,
[DemoExpire] = @DemoExpire,
[MaxNumberofMatters] = @MaxMatter,
[OpSisLink] = @CaseMgrLink,
[TimeCosting] = @TimeCostingInstalled,
[ForceFE] = @ForceFeeEarner,
[LabelPrinter] = @LabelPrinter,
[FeesRepSeq] = @FeeReporting
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'CompositeBilling'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @CompositeBilling
WHERE [KeyName] = 'CompositeBilling'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'CompositeBilling',
@CompositeBilling
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'AllowFwPostingJournals'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @AllowFwPostingJournals
WHERE [KeyName] = 'AllowFwPostingJournals'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'AllowFwPostingJournals',
@AllowFwPostingJournals
)
--To update AzureBlobStorageClientFolder
IF(@AzureBlobStorageClientFolder<>'' AND @AzureBlobStorageClientFolder IS NOT NULL)
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'AzureBlobStorageClientFolder'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @AzureBlobStorageClientFolder
WHERE [KeyName] = 'AzureBlobStorageClientFolder'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'AzureBlobStorageClientFolder',
@AzureBlobStorageClientFolder
)
END
--To update AzureBlobStorageClientVersionsFolder
IF(@AzureBlobStorageClientVersionsFolder<>'' AND @AzureBlobStorageClientVersionsFolder<>NULL)
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'AzureBlobStorageClientVersionsFolder'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @AzureBlobStorageClientVersionsFolder
WHERE [KeyName] = 'AzureBlobStorageClientVersionsFolder'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'AzureBlobStorageClientVersionsFolder',
@AzureBlobStorageClientVersionsFolder
)
END
--To update AzureBlobStorageClientVersionsFolder
IF(@AzureBlobStorageTemplatesFolder<>'' AND @AzureBlobStorageTemplatesFolder<>NULL)
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'AzureBlobStorageTemplatesFolder'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @AzureBlobStorageTemplatesFolder
WHERE [KeyName] = 'AzureBlobStorageTemplatesFolder'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'AzureBlobStorageTemplatesFolder',
@AzureBlobStorageTemplatesFolder
)
END
END
IF(@TabName = 'More')
BEGIN
UPDATE [dbo].[Control]
SET [Solicitor] = @SolicitorCategory,
[OthParty] = @OtherPartyCategory,
[SupplierCategory] = @SupplierCategory,
[DefaultCategory] = @SystemCategoryType,
[AutoNumber] = @AutoNumberClient,
[AutoAlphaClientNumbering] = @AutoAlphaNumbering,
[ThirdPartyLimit] = @ThirdPartyLimit,
[DatePastValidation] = @DatePastValidation,
[DateFutValidation] = @DateFutureValidation,
[EiConvert] = @ConversionRate,
[UserPrompt1] = @PromptRef1,
[UserPrompt2] = @PromptRef2,
[UserPrompt3] = @PromptRef3,
[NextFile] = @NextFile,
[ClosedFileNo] = @ClosedFileNo,
[ChequePrinting] = @ChequeType,
[EnableCP] = @EnableChequePrinting
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[RemoteTypist]
)
UPDATE [dbo].[RemoteTypist]
SET [Code] = @RemoteTypist
ELSE
INSERT
INTO [dbo].[RemoteTypist]
(
[Code]
)
VALUES
(
@RemoteTypist
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'RemoteTypist'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @RemoteTypist
WHERE [KeyName] = 'RemoteTypist'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'RemoteTypist',
@RemoteTypist
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'TimeBarred'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @CloseMatterTimeBarred
WHERE [KeyName] = 'TimeBarred'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'TimeBarred',
@CloseMatterTimeBarred
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'SupplierRemittance_On'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @SupplierRemittance
WHERE [KeyName] = 'SupplierRemittance_On'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'SupplierRemittance_On',
@SupplierRemittance
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'DefaultPrebilledOutlay'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @DefaultPrebilledOutlay
WHERE [KeyName] = 'DefaultPrebilledOutlay'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'DefaultPrebilledOutlay',
@DefaultPrebilledOutlay
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'MatterOutlayBudgetCheckON'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @MatterOutlayBudgetChkON
WHERE [KeyName] = 'MatterOutlayBudgetCheckON'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'MatterOutlayBudgetCheckON',
@MatterOutlayBudgetChkON
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'CASE_LabelNo'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @LabelNo
WHERE [KeyName] = 'CASE_LabelNo'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'CASE_LabelNo',
@LabelNo
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'NotAllowMulipleDraftBill'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @NotAllowMultipleDraftBill
WHERE [KeyName] = 'NotAllowMulipleDraftBill'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'NotAllowMulipleDraftBill',
@NotAllowMultipleDraftBill
)
END
IF(@TabName = 'EFT Defaults')
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'EFTDefaultON'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @EFTDefaultON
WHERE [KeyName] = 'EFTDefaultON'
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'EFTEmailToSend'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @EFTEmailToSend
WHERE [KeyName] = 'EFTEmailToSend'
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'EFTTransactionLimit'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @EFTTransactionLimit
WHERE [KeyName] = 'EFTTransactionLimit'
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'EFTNoOfTransactionLimit'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @EFTNoOfTransactionLimit
WHERE [KeyName] = 'EFTNoOfTransactionLimit'
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'EFTEmailSubject'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @EFTEmailSubject
WHERE [KeyName] = 'EFTEmailSubject'
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'EFTEmailMessage'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @EFTEmailMessage
WHERE [KeyName] = 'EFTEmailMessage'
END
IF(@TabName = 'NotifyByEmail')
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'InvoiceApprover'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @InvoiceApproverEmail
WHERE [KeyName] = 'InvoiceApprover'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'InvoiceApprover',
@InvoiceApproverEmail
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'ChequeApprover'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @ChequeApproverEmail
WHERE [KeyName] = 'ChequeApprover'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'ChequeApprover',
@ChequeApproverEmail
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'NotifyReleasedInv'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @NotifyReturnInvoice
WHERE [KeyName] = 'NotifyReleasedInv'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'NotifyReleasedInv',
@NotifyReturnInvoice
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'NotifyApprovedInv'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @NotifyApprovedInvoice
WHERE [KeyName] = 'NotifyApprovedInv'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'NotifyApprovedInv',
@NotifyApprovedInvoice
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'NotifyReleasedChq'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @NotifyReturnCheque
WHERE [KeyName] = 'NotifyReleasedChq'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'NotifyReleasedChq',
@NotifyReturnCheque
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'NotifyApprovedChq'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @NotifyApprovedCheque
WHERE [KeyName] = 'NotifyApprovedChq'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'NotifyApprovedChq',
@NotifyApprovedCheque
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'EMailServer'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @SMTPMailServer
WHERE [KeyName] = 'EMailServer'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'EMailServer',
@SMTPMailServer
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'ChequeApproverHandler'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @ChequeApproverHandler
WHERE [KeyName] = 'ChequeApproverHandler'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'ChequeApproverHandler',
@ChequeApproverHandler
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'InvoiceApproverHandler'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @InvoiceApproverHandler
WHERE [KeyName] = 'InvoiceApproverHandler'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'InvoiceApproverHandler',
@InvoiceApproverHandler
)
END
IF(@TabName = 'MoneyLaundering')
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'Money Laundering_MoneyLaunderingCheck'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @MoneyLaunderingCheck
WHERE [KeyName] = 'Money Laundering_MoneyLaunderingCheck'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'Money Laundering_MoneyLaunderingCheck',
@MoneyLaunderingCheck
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'Money Laundering_Dept'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @MoneyLaunderingDept
WHERE [KeyName] = 'Money Laundering_Dept'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'Money Laundering_Dept',
@MoneyLaunderingDept
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'Money Laundering_FeeEarner'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @MoneyLaunderingFE
WHERE [KeyName] = 'Money Laundering_FeeEarner'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'Money Laundering_FeeEarner',
@MoneyLaunderingFE
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'Money Laundering_WorkType'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @MoneyLaunderingWorkType
WHERE [KeyName] = 'Money Laundering_WorkType'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'Money Laundering_WorkType',
@MoneyLaunderingWorkType
)
END
IF(@TabName = 'CodeConfiguration')
BEGIN
UPDATE [dbo].[Control]
SET [AUTONUMBER] = @AutoNumber,
[AUTOALPHACLIENTNUMBERING] = @AutoAlphaClientNumbering,
[INDICATOR19] = @UniqueMatterCodeNumbering
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'ClientLabel'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @ClientLabel
WHERE [KeyName] = 'ClientLabel'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'ClientLabel',
@ClientLabel
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'ContactLabel'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @ContactLabel
WHERE [KeyName] = 'ContactLabel'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'ContactLabel',
@ContactLabel
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'MatterLabel'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @MatterLabel
WHERE [KeyName] = 'MatterLabel'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'MatterLabel',
@MatterLabel
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'CaseLabel'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @CaseLabel
WHERE [KeyName] = 'CaseLabel'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'CaseLabel',
@CaseLabel
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'CaseMatterLabel'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @CaseMatterLabel
WHERE [KeyName] = 'CaseMatterLabel'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'CaseMatterLabel',
@CaseMatterLabel
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'FeeEarnerLabel'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @FeeEarnerLabel
WHERE [KeyName] = 'FeeEarnerLabel'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'FeeEarnerLabel',
@FeeEarnerLabel
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'PartnerLabel'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @PartnerLabel
WHERE [KeyName] = 'PartnerLabel'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'PartnerLabel',
@PartnerLabel
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'AssociateLabel'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @AssociateLabel
WHERE [KeyName] = 'AssociateLabel'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'AssociateLabel',
@AssociateLabel
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'BranchLabel'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @BranchLabel
WHERE [KeyName] = 'BranchLabel'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'BranchLabel',
@BranchLabel
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'PostalCodeLabel'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @PostalCodeLabel
WHERE [KeyName] = 'PostalCodeLabel'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'PostalCodeLabel',
@PostalCodeLabel
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'AutoNumberIfBlank'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @AutoNumberIfBlank
WHERE [KeyName] = 'AutoNumberIfBlank'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'AutoNumberIfBlank',
@AutoNumberIfBlank
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'ManualClientCode'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @ManualClientCode
WHERE [KeyName] = 'ManualClientCode'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'ManualClientCode',
@ManualClientCode
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'ShowMatterCode'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @ShowMatterCode
WHERE [KeyName] = 'ShowMatterCode'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'ShowMatterCode',
@ShowMatterCode
)
END
IF(@TabName = 'RiskManagement')
BEGIN
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'Risk Management_StatuteActionCode'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @RMStatuteActionCode
WHERE [KeyName] = 'Risk Management_StatuteActionCode'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'Risk Management_StatuteActionCode',
@RMStatuteActionCode
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'Risk Management_StatuteWarning'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @RMStatuteWarning
WHERE [KeyName] = 'Risk Management_StatuteWarning'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'Risk Management_StatuteWarning',
@RMStatuteWarning
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'Risk Management_UndertakingActionCode'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @RMUndertakingActionCode
WHERE [KeyName] = 'Risk Management_UndertakingActionCode'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'Risk Management_UndertakingActionCode',
@RMUndertakingActionCode
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'Risk Management_UndertakingWarning'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @RMUndertakingWarning
WHERE [KeyName] = 'Risk Management_UndertakingWarning'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'Risk Management_UndertakingWarning',
@RMUndertakingWarning
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'Risk Management_UndertakingWarning'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @RMUndertakingWarning
WHERE [KeyName] = 'Risk Management_UndertakingWarning'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'Risk Management_UndertakingWarning',
@RMUndertakingWarning
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'UseNewStatuteSystem'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @UseNewStatuteSystem
WHERE [KeyName] = 'UseNewStatuteSystem'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'UseNewStatuteSystem',
@UseNewStatuteSystem
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'EstFeeWarningLimit'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @EstFeeWarningLimit
WHERE [KeyName] = 'EstFeeWarningLimit'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'EstFeeWarningLimit',
@EstFeeWarningLimit
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'LockupUpValue'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @LockUpValue
WHERE [KeyName] = 'LockupUpValue'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'LockupUpValue',
@LockUpValue
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'LastActionMonth'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @LastActionMonth
WHERE [KeyName] = 'LastActionMonth'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'LastActionMonth',
@LastActionMonth
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'DebtorWarningDaysLimit'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @DebtorWarningDaysLimit
WHERE [KeyName] = 'DebtorWarningDaysLimit'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'DebtorWarningDaysLimit',
@DebtorWarningDaysLimit
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'AddUndertakingCommentLedger'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @AddUndertakingCommentLedger
WHERE [KeyName] = 'AddUndertakingCommentLedger'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'AddUndertakingCommentLedger',
@AddUndertakingCommentLedger
)
IF EXISTS
(
SELECT TOP 1 1
FROM [dbo].[Settings]
WHERE [KeyName] = 'ShowAlarm'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @ShowAlarm
WHERE [KeyName] = 'ShowAlarm'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'ShowAlarm',
@ShowAlarm
)
END
COMMIT TRAN
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
SET NOCOUNT OFF
END
GO
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_UpdateSAMUndertakingDetails'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdateSAMUndertakingDetails]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_UpdateSAMUndertakingDetails] (
@Type VARCHAR(10),
@Details VARCHAR(MAX),
@Who VARCHAR(MAX),
@GivenOrReceived VARCHAR(10),
@DealingNumber VARCHAR(10),
@Notes VARCHAR(MAX),
@CommercialOrNonCommerical VARCHAR(10),
@Status VARCHAR(50),
@Date DATETIME,
@Value DECIMAL,
@AuthorizedByFE VARCHAR(10),
@UndertakingTo VARCHAR(10),
@Text1 VARCHAR(max),
@ActionID INT,
@IsDischarge BIT,
@DiaryWarningDate DATETIME,
@DischargeDate DATETIME = null,
@Handler VARCHAR(10),
@AddCommentLedger BIT,
@Result TINYINT OUTPUT
)
AS
/*******************************************************************************************************
* *
*Used to list the matter ledger *
* Stored Procedure Name: [dbo].[KAAS_UpdateSAMUndertakingDetails] *
* Modification History: *
* 2021-03-26 Natarajan S Created *
* 03 DEC 2021 Vinodhkumar M Modified - Added add comment Ledger field *
* 08 Mar 2022 Balamurugan.C Modified - Handled TCL Statements and Formatting *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRANSACTION
SET @Type = SUBSTRING(@Type, 1, 1)
SET @GivenOrReceived = SUBSTRING(@GivenOrReceived, 1, 1)
SET @CommercialOrNonCommerical = SUBSTRING(@CommercialOrNonCommerical, 1, 1)
UPDATE [UTG]
SET [UTG].[Type] = @Type,
[UTG].[Description] = @Details,
[UTG].[Who] = @Who,
[UTG].[GivenOrReceived] = @GivenOrReceived,
[UTG].[DealingNumber] = @DealingNumber,
[UTG].[Notes] = @Notes,
[UTG].[CommercialOrNon] = @CommercialOrNonCommerical,
[UTG].[Status] = @Status,
[UTG].[Date] = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@Date, @Handler)), 0),
[UTG].[UNDDate] = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@Date, @Handler)), 0),
[UTG].[Value] = @Value,
[UTG].[UNDValue] = @Value,
[UTG].[AuthorisedByFE] = @AuthorizedByFE,
[UTG].[Handler] = @Handler,
[UTG].[UndertakingTo] = @UndertakingTo,
[UTG].[CaseContact] = @UndertakingTo,
[UTG].[AddCommentLedger] = @AddCommentLedger,
[UTG].[DischargeDate] = CASE @IsDischarge WHEN 1
THEN DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@diaryWarningDate, @Handler)), 0)
ELSE NULL END
FROM [dbo].[Undertakings] [UTG]
WHERE [UTG].[ActionID] = @ActionID
UPDATE [DIA]
SET [DIA].[Date] = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@diaryWarningDate, @Handler)), 0),
[DIA].[DueDate] = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@Date, @Handler)), 0),
[DIA].[Text1] = @Text1
FROM [dbo].[diary] [DIA]
WHERE [DIA].[ActionId] = @ActionID
UPDATE [DEL]
SET [DEL].[Date] = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@diaryWarningDate, @Handler)), 0),
[DEL].[DueDate] = DATEADD(DAY, DATEDIFF(DAY, 0, [dbo].[KAAS_FNConvertDateToUTC](@Date, @Handler)), 0)
FROM [dbo].[DiaryDelegations] [DEL]
WHERE [ActionId] = @ActionID
SET @Result = 1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
DECLARE @ErrorMsg NVARCHAR(4000),
@ErrorSeverity INT,
@ErrorState INT;
SELECT @ErrorMsg = ISNULL(ERROR_MESSAGE(),''),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE()
RAISERROR(@ErrorMsg, @ErrorSeverity, @ErrorState);
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
END CATCH
END
GO
IF OBJECT_ID(N'KAAS_ValidateJournalUploadData', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_ValidateJournalUploadData]
END
GO
CREATE PROCEDURE [dbo].[KAAS_ValidateJournalUploadData]
(
@NominalCode VARCHAR(10) = '',
@BranchCode VARCHAR(3) = '',
@MatterCode VARCHAR(20) = '',
@SuppCode VARCHAR(10) = '',
@LineNum INT = 0
)
AS
/*******************************************************************************************************
* Upload Journal file and check necessary codes are present *
* *
* Stored Procedure Name : [dbo].[KAAS_ValidateJournalUploadData] *
* *
* Modification History: *
* 2024-10-09 Balamurugan C Created *
*******************************************************************************************************/
BEGIN
DECLARE @ErrorMessage VARCHAR(MAX) = '';
DECLARE @BranchSetting VARCHAR(1) = '';
SELECT @BranchSetting = [Indicator22] FROM [dbo].[control]
-- Validate Nominal Code
IF(@NominalCode <> '')
BEGIN
IF NOT EXISTS (SELECT Code FROM [dbo].Nominal WHERE RTRIM([Code]) = RTRIM(@NominalCode))
BEGIN
SET @ErrorMessage += 'Batch #1 Line ' + CAST(@LineNum AS VARCHAR(10)) + ': Nominal Code ' + @NominalCode + ' does not exist.' + CHAR(13) + CHAR(10);
END
END
-- Validate Branch Code
IF(@BranchCode <> '' AND @BranchSetting = 'Y')
BEGIN
IF NOT EXISTS (SELECT [BRANCHCODE] FROM [dbo].[Branch] WHERE RTRIM([BRANCHCODE]) = RTRIM(@BranchCode))
BEGIN
SET @ErrorMessage += 'Batch #1 Line ' + CAST(@LineNum AS VARCHAR(10)) + ': Branch Code ' + @BranchCode + ' does not exist.' + CHAR(13) + CHAR(10);
END
END
-- Validate Matter Code
IF(@MatterCode <> '')
BEGIN
IF NOT EXISTS (SELECT [Code] FROM [dbo].[matters] WHERE RTRIM([Code]) = RTRIM(@MatterCode))
BEGIN
SET @ErrorMessage += 'Batch #1 Line ' + CAST(@LineNum AS VARCHAR(10)) + ': Matter Code ' + @MatterCode + ' does not exist.' + CHAR(13) + CHAR(10);
END
END
-- Validate Supplier Code
IF(@SuppCode <> '')
BEGIN
IF NOT EXISTS (SELECT [Code] FROM [dbo].[Suppliers] WHERE RTRIM([Code]) = RTRIM(@SuppCode))
BEGIN
SET @ErrorMessage += 'Batch #1 Line ' + CAST(@LineNum AS VARCHAR(10)) + ': Supplier Code ' + @SuppCode + ' does not exist.'+ CHAR(13) + CHAR(10);
END
END
-- Return the error message if any validation failed
SELECT @ErrorMessage AS ErrorMessage;
END
GO