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 *
* *
*************************************************************************************************************/
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 ('R', 'J') 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 ('R', 'J') 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] 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 *
********************************************************************************************************/
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,@PostedType,@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 *
*******************************************************************************************************/
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)
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],
[HEADPREF],
[HEADBATCH],
[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 *
*******************************************************************************************************/
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
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
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_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 EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_CreateSAMControlAccountLog'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_CreateSAMControlAccountLog]
END
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 *
*******************************************************************************************************/
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
)
INSERT INTO @FinalTable
(
[ClientAcMatterBalance],
[OutlayAcMatterBalance],
[BillingAcMatterBalance],
[SupplierAcMatterBalance],
[ClientControlAccounts],
[OutlayControlAccounts],
[BillingControlAccounts],
[SupplierControlAccounts]
)
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]
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]
)
SELECT @HandlerCode,
@CurrentDate,
@CurrentDate,
@LastBatch,
[ClientAcMatterBalance],
[OutlayAcMatterBalance],
[BillingAcMatterBalance],
[SupplierAcMatterBalance],
[ClientControlAccounts],
[OutlayControlAccounts],
[BillingControlAccounts],
[SupplierControlAccounts]
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) = '',
@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 *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
IF(@Mode='Record')
BEGIN
DECLARE @LastBatch INT = 0,
@LastPref INT = 0,
@Year INT = 0,
@CurPer INT = 0,
@LastPrefDetails INT = 0,
@DefaultCreditor VARCHAR(15) = ''
(
SELECT @LastBatch = (LastBatch + 1),
@LastPref = (LastPref + 1),
@Year = [Year],
@CurPer = CurPer,
@DefaultCreditor = [Creditor]
FROM [dbo].[Control]
)
/* INSERT TO BATCH HEADER TABLE */
IF NOT EXISTS
(
SELECT TOP 1 1
FROM [dbo].[BatchH]
WHERE [BatchNo] = @LastBatch
)
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],*/
'M', /*[Type],*/
@BankCode, /*[Code],*/
'', /*[Branch],*/
@LastPref, /*[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] = (@LastPref)
WHERE [NEXT_DOC_NO] = 0
SELECT @LastPrefDetails = (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
(
@LastBatch, /*[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),@UnpaidValue), /*[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],*/
@LastBatch + 1, /*[Headpref],*/
@LastPref + 1, /*[Headbatch],*/
@AllocBatch, /*[Allocbatch],*/
@AllocPref, /*[Allocpref],*/
@AllocRef, /*[Allocref],*/
@PayValue, /*[Allocvalue],*/
'N', /*[Allocwriteoff],*/
'', /*[Psupp],*/
0, /*[Undetaking],*/
'', /*[Caseasscode],*/
'N', /*[Onceoffpayment],*/
'N', /*[Payclient],*/
'', /*[ClientCode],*/
'N', /*[EFTEmailYorN],*/
0, /*[RegisteredPost],*/
0 /*[PreBilledOutlay]*/
)
UPDATE [dbo].[Control]
SET [LASTPREF] = @LastPrefDetails
WHERE [NEXT_DOC_NO] = 0
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 @LastBatch '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] 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 *
********************************************************************************************************/
BEGIN TRY
BEGIN TRANSACTION
DECLARE @BillBatchNo INT,
@PayBatchNo INT,
@Value INT,
@Fees INT,
@Outlay INT,
@Vat INT,
@AllNo INT
SELECT @BillBatchNo = [BatchNo],
@PayBatchNo = [ABatchNo],
@Value = [Value],
@Fees = [Fees],
@Outlay = [Outlay],
@Vat = [Vat],
@AllNo = [AllNo]
FROM [dbo].[Allocations]
WHERE [KeyId]=@KeyId
UPDATE [DBL]
SET [DBL].[OSValue] = CASE [DBL].[Type]
WHEN 'R' THEN [DBL].[OSValue] + @Value
ELSE [DBL].[OSValue] - @Value
END,
[DBL].[OSFees] = CASE [DBL].[Type]
WHEN 'R' THEN [DBL].[OSFees] + @Fees
ELSE [DBL].[OSFees] - @Fees
END,
[DBL].[OSOutlay] = CASE [DBL].[Type]
WHEN 'R' THEN [DBL].[OSOutlay] + @Outlay
ELSE [DBL].[OSOutlay] - @Outlay
END,
[DBL].[OSVat] = CASE [DBL].[Type]
WHEN 'R' THEN [DBL].[OSVat] + @Vat
ELSE [DBL].[OSVat] - @Vat
END
FROM [dbo].[DebtorsLedger] [DBL]
WHERE [DBL].[BatchNo]
IN (@BillBatchNo,@PayBatchNo)
DELETE
FROM [dbo].[Allocations]
WHERE [AllNo] = @AllNo
SET @Result =1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @Result =0
ROLLBACK TRANSACTION
END CATCH
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] 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 Insert 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 *
********************************************************************************************************/
BEGIN TRY
BEGIN TRANSACTION
DECLARE @BillBatchNo INT,
@PayBatchNo INT,
@Value INT,
@AllNo INT
SELECT @BillBatchNo = [BatchNo],
@PayBatchNo = [ABatchNo],
@Value = [Value],
@AllNo = [AllNo]
FROM [dbo].[Allocations]
WHERE [KeyId] = @KeyId
UPDATE [SLD]
SET [SLD].[OSValue] = CASE [SLD].[TYPE]
WHEN 'P' THEN [SLD].[OSValue] + @Value
ELSE [SLD].[OSValue] - @Value
END
FROM [dbo].[SupplierLedger] [SLD]
WHERE [SLD].[BatchNo]
IN (@BillBatchNo,@PayBatchNo)
DELETE
FROM [dbo].[Allocations]
WHERE [AllNo] = @AllNo
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_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 *
*******************************************************************************************************/
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,@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 EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_FetchBankReconciliationStatement'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_FetchBankReconciliationStatement]
END
GO
CREATE PROCEDURE [dbo].[KAAS_FetchBankReconciliationStatement]
(
@RecNo INT = 0,
@Mode VARCHAR(15) = ''
)
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 *
*******************************************************************************************************/
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
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
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
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 [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] 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]
AS
/*******************************************************************************************************
* Fetches the case associate types *
* *
* Stored Procedure Name : [dbo].[KAAS_GetAssociatesTypes] *
* *
* Modification History: *
* 2021-04-09 Revathy D Created *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
RTRIM(ISNULL([ACT].[CODE],'')) AS [Code],
[ACT].[DESCRIPTION] AS [Description]
FROM
[dbo].[AssociateTypes] [ACT]
ORDER BY
[ACT].[CODE] ASC
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) = 'ENTRYDATE',
@SortOrder VARCHAR(100) = 'ASC',
@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
*******************************************************************************************************/
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)
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]
FROM [dbo].[BatchH] [BAH]
LEFT JOIN [DBO].[matters] [MAT] ON [MAT].[Code] = [BAH].[MATTER]
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 + '%' + '''' +
')
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 + '%' + '''' +
')
END'
EXEC Sp_executesql @sql
IF @Type = 'R'
BEGIN
SELECT COUNT(*) AS [CostAwaitingProcessCount]
FROM [dbo].[CostTransGathering]
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
IF EXISTS (SELECT TOP 1 1
FROM sys.[objects] SO
WHERE SO.[name] = N'KAAS_GetCostTransferCandidates'
AND SO.[type] = 'P')
BEGIN
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 *
* *
*************************************************************************************************************/
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],
0 AS [IsWriteOff],
0 AS [IsTagged]
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].[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_GetCreditorsAllocateDetails', N'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetCreditorsAllocateDetails]
END
GO
CREATE PROCEDURE
[dbo].[KAAS_GetCreditorsAllocateDetails]
(@BatchNo INT = 0,
@Pref INT = 0,
@AgainstDate DATE)
AS
/*******************************************************************************************************
* Fetches the Creditors Allocate details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetCreditorsAllocateDetails] *
* SAMPLE DATA [KAAS_GetCreditorsAllocateDetails] 5588 *
* 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 *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT [SUP].[CODE] AS [Code],
[SUP].[Name] AS [Name],
[SLD].[Date] AS [Date],
[SLD].[Ref] AS [Ref],
[SLD].[Original] AS [Original],
[SLD].[OSValue] AS [ToAllocate],
[SLD].[Matter] AS [Matter],
[SLD].[PREF] AS [PRef]
FROM [dbo].[SupplierLedger] [SLD]
INNER JOIN [dbo].[Suppliers] [SUP]
ON [SUP].[Code] = [SLD].[Supp]
WHERE [SLD].[BatchNo] = @BatchNo
SELECT DISTINCT
[ALC].[Date],
[ALC].[ORef],
@AgainstDate AS [AgainstDate],
[ALC].[Value] AS [Allocated],
[ALC].[UserCode],
[ALC].[KeyId]
FROM
[dbo].[Allocations] [ALC]
WHERE [ALC].[BatchNo] = @BatchNo
AND [ALC].[Pref] = @Pref
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_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
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_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],
[DBL].[Pref] AS [Pref]
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 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_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 *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
/*GRID DETAILS FROM NOMINAL BUDGET*/
SELECT [NOM].[RecordID],
[NOM].[Code],
[NOM].[Branch],
[NOM].[Year],
[NOM].[Period],
[NOM].[Budget]
FROM [dbo].[NominalBudgets] [NOM]
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
*******************************************************************************************************/
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]
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 ( [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 ([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 = '' 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 = '' 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 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 *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
RTRIM([Code]) AS 'Code',
[Description]
FROM [dbo].[ServiceCodes]
SELECT
[Code],
[Name],
[Address],
[Nominal],
[Phone],
[EmailAddress],
[TaxNo],
[ServiceCode],
[VATNo],
[DeftpStatus],
[BankName],
[BankAddress],
[BankSortCode],
[BankAccNo],
[Iban],
[Bic],
[BankType],
[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] 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_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 = 0,
@MatterCode VARCHAR(50) = '')
AS
/*******************************************************************************************************
* Fetches the BillDetails and FeeEarnerList *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSamBillDetailsFeeEarnerList] *
* *
* Modification History: *
* 2021-09-15 Vinodhkumar.M Created *
*******************************************************************************************************/
BEGIN
SELECT [BD].[MATTER] AS [Matter],
[BD].[DRAFTNO] AS [DraftNo],
[BD].[BILLNO] AS [BillNo],
[BD].[TYPE] AS [Type],
[BD].[FEEEARNER] AS [FeeEarner],
[BD].[NARRATIVE] AS [Narrative],
[BD].[NET] AS [Net],
[BD].[VATVALUE] AS [VatValue],
[BD].[LINENO] AS [LineNo],
[BD].[KEYID] AS [KeyId]
FROM
[dbo].[BillDetails] [BD]
WHERE
[BD].[DRAFTNO] = @BillNo
ORDER BY
[BD].[DRAFTNO] ASC,
[BD].[LINENO] ASC,
[BD].[KEYID] ASC
SELECT [FE].[MATTER] AS [Matter],
[FE].[DRAFTNO] AS [DraftNo],
[FE].[BILLNO] AS [BillNo],
[FE].FECODE AS [FECode],
[FE].[TYPE] AS [Type],
[FE].[PERCENT] AS [Percent],
[FE].[CALCULATION] AS [Calculation],
[FE].[VALUE] AS [Value],
[FE].[VATCODE] AS [VatCode],
[FE].[VATAMT] AS [VatAmt],
[FE].[RECORDID] AS [RecordId]
FROM
[dbo].[BillFeeBreakDown] [FE]
WHERE
[FE].[MATTER] = @MatterCode AND
[FE].[DRAFTNO] = @BillNo AND
[FE].[BILLNO] = 0 AND
[FE].[TYPE] <> 'O'
ORDER BY
[FE].[MATTER] ASC,
[FE].[FECODE] ASC,
[FE].[DRAFTNO] ASC,
[FE].[BILLNO] ASC,
[FE].[RECORDID]
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 *
*******************************************************************************************************/
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],
[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 @LastBatch,
POSTFWD,
TYPE,
CODE,
BRANCH,
@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,
EFTEmailYorN,
HandlerCode,
PaymentMethod,
ClearedDate
FROM [dbo].[BatchH] WITH (NOLOCK)
WHERE [BatchNo] = @BatchNumber
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],
[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],
ROW_NUMBER() OVER(ORDER BY @LastBatch) AS rowId
INTO #tempTable
FROM [dbo].[BatchDetails] WITH (NOLOCK)
WHERE [BatchNo] = @BatchNumber
AND NOT EXISTS (SELECT 1
FROM [dbo].[BatchDetails] [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],
[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 @LastBatch,
[TYPE],
[CODE],
@LastPrefDetails,
[batchDate],
[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]
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
--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],
MAT.[FeeType],
CASE WHEN
ISNULL(MAT.NoWinNoFee,'N') = 'Y'
THEN 'True'
ELSE 'False'
END AS [NoWinNoFee]
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
--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]
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 *
*******************************************************************************************************/
BEGIN
SELECT CASE Closed
WHEN 'N' THEN 'Opened'
ELSE 'Closed' END [MatterState],
COUNT(*) [CountValue]
FROM [dbo].[matters]
GROUP BY [Closed]
SELECT COUNT(*) Posted from batchh where posted = 'N'
SELECT [BatchNo],
[Type],
[Ref],
[Date],
[Value],
[Narr]
FROM [dbo].[BatchH]
WHERE [Posted] = 'N'
ORDER BY [Posted] ASC,
[EntryDate] ASC
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
SELECT [Date],
[User],
[Event],
[RecordID]
FROM [dbo].[Log]
ORDER BY [RecordID] ASC
SELECT [UniqueId] [OrderValue],
[Code],
[Matter],
[Description],
[FECode],
[Dept]
FROM [dbo].[matters]
WHERE [Closed]='N'
SELECT [UniqueId] [OrderValue],
[Code],
[Matter],
[Description],
[FECode],
[Dept]
FROM [dbo].[matters]
WHERE [Closed]='Y'
SELECT [Name] [DBName],
[CurPer],
[Year],
dbo.KAAS_FN_GetDateFromClarion (PERIODEND) AS PeriodEnd,
dbo.KAAS_FN_GetDateFromClarion (LASTRECDATE) AS LastRecDate
FROM [dbo].[control]
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 EXISTS
(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KAAS_GetSAMDebtorsLedgerAllocation]') AND type in (N'P', N'PC'))
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMDebtorsLedgerAllocation]
END
GO
/****** Object: StoredProcedure [dbo].[KAAS_GetSAMDebtorsLedgerAllocation] Script Date: 25-03-2021 10:38:53 ******/
CREATE PROCEDURE [dbo].[KAAS_GetSAMDebtorsLedgerAllocation]
(@BatchNo int,
@Pref int)
AS
/*******************************************************************************************************
* Fetches the Debtors Ledger Allocation by Batch No and Pref *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMDebtorsLedgerAllocation] *
* *
* Modification History: *
* 2021-03-31 Prabhu V Created *
*******************************************************************************************************/
BEGIN
SELECT A.[BatchNo],
A.[Pref],
A.[Date],
A.[ABatchNo],
A.[Oref],
A.[Value],
A.[Fees],
A.[Outlay],
A.[Vat],
A.[UserCode],
A.[AllNo],
A.[KeyID]
FROM dbo.[Allocations] A
WHERE A.[BatchNo] = @BatchNo
AND A.[Pref] = @Pref
ORDER BY A.[BatchNo] ASC,
A.[Pref] ASC,
A.[KeyID] ASC
END
GO
IF EXISTS
(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KAAS_GetSAMDebtorsLedgerbyMatterCode]') AND type in (N'P', N'PC'))
BEGIN
DROP PROCEDURE [dbo].[KAAS_GetSAMDebtorsLedgerbyMatterCode]
END
GO
/****** Object: StoredProcedure [dbo].[KAAS_GetSAMDebtorsLedgerbyMatterCode] Script Date: 25-03-2021 10:38:53 ******/
CREATE PROCEDURE [dbo].[KAAS_GetSAMDebtorsLedgerbyMatterCode]
(
@PageNumber INT,
@PageSize INT,
@SearchString VARCHAR(500) = '',
@SortColumn VARCHAR(100) = 'Matter',
@SortOrder VARCHAR(100) = 'ASC',
@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 *
*******************************************************************************************************/
BEGIN
DECLARE @sql NVARCHAR(max)
DECLARE @search NVARCHAR(500) = ''
DECLARE @offset INT = @PageSize * (@PageNumber -1)
SET @sql = 'SELECT A.[Matter],
A.[Client],
A.[Date],
A.[Ref],
A.[BatchNo],
A.[PRef],
A.[Narr],
A.[Original],
A.[OSValue],
A.[RecordID] ,
S.[Name],
S.[Description]
FROM dbo.[DebtorsLedger] A
LEFT JOIN dbo.[SearchMatters] S On S.[Code] = A.[MATTER]
WHERE A.[Matter] = ''' + @MatterCode + '''' +
'AND (
A.[Date] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
A.[BatchNo] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
A.[PRef] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
A.[Narr] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
S.[Name] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
S.[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
SELECT COUNT(*) 'TotalRecord'
FROM dbo.[DebtorsLedger] A
LEFT JOIN dbo.[SearchMatters] S On S.[Code] = A.[MATTER]
WHERE [A].[MATTER] = @MatterCode
AND (
A.[Date] LIKE '%' + @SearchString + '%'
OR
A.[BatchNo] LIKE '%' + @SearchString + '%'
OR
A.[PRef] LIKE '%' + @SearchString + '%'
OR
A.[Narr] LIKE '%' + @SearchString + '%'
OR
S.[Name] LIKE '%' + @SearchString + '%'
OR
S.[Description] LIKE '%' + @SearchString + '%'
)
SELECT ISNULL(SUM(ISNULL([DTL].[ORIGINAL], 0)), 0) AS [DebtorClearedBalance],
ISNULL([MAT].[DebtBal],0) AS [DebtorAcoountBalance],
ISNULL(SUM(ISNULL([DTL].[OSVALUE], 0)), 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].[DebtBal]
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]
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 *
*******************************************************************************************************/
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 [WriteDownTime],
RTRIM([BH].[RETURNREASON]) AS [Message],
RTRIM([BH].[MATTERDESCRIPTION]) AS [Description],
[BH].[FeCode] AS [FeCode]
FROM [dbo].[BillHeader] [BH]
WHERE [BH].[RELEASED] = 'Y'
AND [BH].[BILLNO] = 0
ORDER BY [BH].[RELEASED] ASC,
[BH].[USER] ASC,
[BH].[DATE] ASC,
[BH].[MATTER] ASC,
[BH].[DRAFTNO] ASC
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 *
*******************************************************************************************************/
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]
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 [MAT].[DebtBal] AS [DebtorBalance],
[MAT].[OutlayBal] AS [OutlayBalance],
[MAT].[ClientCurBal] AS [ClientCurrentBalance],
[MAT].[ClientDepBal] AS [ClientDeptBalance]
FROM [dbo].[Matters] [MAT]
WHERE [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]
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 *
*******************************************************************************************************/
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]
ORDER BY
[BAT].[DATE] ASC,
[BAT].[BATCHNO] ASC
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_GetSAMOutstandingInvoices',N'P')IS NOT NULL
DROP PROCEDURE [dbo].[KAAS_GetSAMOutstandingInvoices]
GO
CREATE PROCEDURE
[dbo].[KAAS_GetSAMOutstandingInvoices]
(@matter VARCHAR(20))
AS
/****************************************************************************************
* Get Outstanding Invoices for a matter *
* *
* Date Author Modification *
* 2020-05-18 Revathy Copied from KAAS_GetOutstandingInvoices *
* 2020-10-11 Vinodhkuamr M Updated - Removed space in Alias Names *
* 2022-02-03 Balamurugan C Modified - Changes in query to fetch the *
* Batch Posted or Not *
****************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT RTRIM(ISNULL(DTL.[MATTER], '')) AS [MatterCode],
RTRIM(ISNULL(DTL.[TYPE], '')) AS [Type],
RTRIM(ISNULL(DTL.[CLIENT], '')) AS [ClientCode],
DTL.[DATE] As [Date],
RTRIM(ISNULL(DTL.[REF], '')) AS [Ref],
ISNULL(DTL.[BATCHNO], 0) AS [BatchNo],
ISNULL(DTL.[PREF], 0) AS [Pref],
ISNULL(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],
RTRIM(ISNULL(DTL.[VATCODE], '')) AS [VATCode],
ISNULL(DTL.[PER], 0) AS [Period],
ISNULL(DTL.[YEAR], 0) AS [Year],
RTRIM(ISNULL(DTL.[FEECODE], '')) AS [LedgerFeeEarnerCode],
RTRIM(ISNULL(LFE.[NAME], '')) AS [LedgerFeeEarner],
CONVERT(INT, ISNULL(DTL.[RECORDID], 0)) 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] 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] = @matter
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_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 *
*******************************************************************************************************/
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)
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'
AND
(
[BatchNo] 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 + '%' + '''' +
')'
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. *
*******************************************************************************************************/
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]
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 *
*******************************************************************************************************/
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] = '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] = '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]
FROM [dbo].[Settings] STI
CROSS APPLY
(
VALUES ([KeyValue])
)
CPV(OutputValue)
WHERE [STI].[KeyName]
IN (
'TimeBarred',
'SupplierRemittance_On',
'EFTDefaultON',
'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',
'MaxClCode',
'ManualClientCode',
'MaxMatNum',
'ShowMatterCode',
'AutoNumberIfBlank',
'ClientLabel',
'ContactLabel',
'MatterLabel',
'CaseLabel',
'CaseMatterLabel',
'FeeEarnerLabel',
'PartnerLabel',
'AssociateLabel',
'BranchLabel',
'PostalCodeLabel'
)
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 *
*******************************************************************************************************/
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
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_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] 'brady', 'SUPPLIERLEDGER' *
* *
* 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
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
/*Supplier LIST*/
IF(@Flag='SUPPLIERLIST')
BEGIN
SELECT
[Code] AS [Code],
[Name] AS [Name],
[TPBAL] AS [ThirdPartyBalance],
[BALANCE] AS [Balance]
FROM [dbo].[Suppliers]
ORDER BY [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 [Type] AS [Type],
[Pref] AS [Pref],
[Date] AS [Date],
[RecordId] AS [RecordId],
[Ref] AS [Ref],
[Narr] AS [Narrative],
[Matter] AS [Matter],
[Supp] AS [Supp],
[Original] AS [Original],
[OsValue] AS [OsValue],
[BatchNo] AS [BatchNo],
[matter] AS [Matter]
FROM [dbo].[SupplierLedger] [SLD]
WHERE [Supp] = ''' + @Code + '''' +
'AND (
[Pref] LIKE' + '''%' + @SearchString + '%' + '''' +
'OR
[Date] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[RecordId] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Ref] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Narr] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Supp] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[BatchNo] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[Year] LIKE ' + '''%' + @SearchString + '%' + '''' +
'OR
[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].[SupplierLedger] [SLD]
WHERE [Supp] = @Code
AND (
[Pref] LIKE '%' + @SearchString + '%'
OR
[Date] LIKE '%' + @SearchString + '%'
OR
[RecordId] LIKE '%' + @SearchString + '%'
OR
[Ref] LIKE '%' + @SearchString + '%'
OR
[Narr] LIKE '%' + @SearchString + '%'
OR
[Supp] LIKE '%' + @SearchString + '%'
OR
[BatchNo] LIKE '%' + @SearchString + '%'
OR
[Year] LIKE '%' + @SearchString + '%'
OR
[Matter] LIKE '%' + @SearchString + '%'
)
END
END
SET NOCOUNT OFF
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 *
*******************************************************************************************************/
BEGIN
SELECT
VAC.[CODE] AS Vat,
VAC.[RATE] AS Rate
FROM [dbo].[VATCodes] VAC
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 *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF(@GroupType = 'typeOfWorkGroup')
BEGIN
SELECT [WTG].[RecordID] AS [RecordID],
[WTG].[WorkType] AS [WorkType],
[WTS].[Desc] AS [WorkTypeDescription],
RIGHT(100 + [WTG].[Group1],2) AS [Group1],
[WG1].[Description] AS [G1Description],
[WTG].[Group2] AS [Group2],
[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],
[Description] [Description]
FROM [dbo].[WorkGroup1]
END
IF(@GroupType = 'typeOfWork2')
BEGIN
SELECT [WorkGroup2] [Group],
[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 *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
SELECT
[CRR].[Reportid] As [ReportId],
[CRR].[filename] As [FileName]
FROM
[dbo].[CRReport] CRR
WHERE
[CRR].[filename] = @FileName
SET NOCOUNT OFF
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
)
AS
/*******************************************************************************************************
* Import Outlay inserting issue invoice batch detail logic *
* *
* Stored Procedure Name : [dbo].[KAAS_ImportOutlayIssueInvoice] *
* *
* Modification History: *
* 2022-11-16 Ghayathri.S.V Created *
*******************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
DECLARE @VATEXCLUDE CHAR(1)
DECLARE @IECONVERT DECIMAL(17,6)
DECLARE @CURRENTYEAR INT
DECLARE @CURRENTPERIOD INT
DECLARE @NEWPREF INT
SELECT @IECONVERT = [CON].[IECONVERT],
@VATEXCLUDE = [CON].[VATEXCLUDE],
@CURRENTYEAR = [CON].[YEAR],
@CURRENTPERIOD = [CON].[CURPER]
FROM [dbo].[control] AS [CON]
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;
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] SO
WHERE SO.[name] = N'KAAS_InsertDebtorsLedgerAllocation'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_InsertDebtorsLedgerAllocation]
END
GO
CREATE PROCEDURE [dbo].[KAAS_InsertDebtorsLedgerAllocation]
(
@DebtorsBatchNo INT,
@InvoiceBatchNo INT,
@Value FLOAT,
@Fees FLOAT,
@Outlay FLOAT,
@Vat FLOAT,
@Date DATETIME,
@UserCode VARCHAR(30),
@Result TINYINT OUTPUT
)
AS
/*******************************************************************************************************
* *
*Used to Insert supplier 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 *
********************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRANSACTION
DECLARE @AllNo INT;
SET @AllNo = (SELECT [LastAlloc]+1 FROM [dbo].[control])
UPDATE [CRL]
SET [CRL].[LastAlloc] = @AllNo
FROM [dbo].[control] [CRL]
INSERT
INTO [dbo].[Allocations]
( [BatchNo],
[PRef],
[Date],
[ABatchNo],
[OPRef],
[ORef],
[Value],
[Fees],
[Outlay],
[Vat],
[UserCode],
[AllNo],
[VatCode]
)
SELECT [INV].[BatchNo],
[INV].[PRef],
@Date,
[DEB].[BatchNo],
[DEB].[PRef],
[DEB].[Ref],
@Value,
@Fees,
@Outlay,
@Vat,
@UserCode,
@AllNo,
[DEB].[VATCODE]
FROM [dbo].[DebtorsLedger] [INV],
[dbo].[DebtorsLedger] [DEB]
WHERE [INV].[BatchNo] = @InvoiceBatchNo
AND [DEB].[BatchNo] = @DebtorsBatchNo
INSERT
INTO [dbo].[Allocations]
( [BatchNo],
[PRef],
[Date],
[ABatchNo],
[OPRef],
[ORef],
[Value],
[Fees],
[Outlay],
[Vat],
[UserCode],
[AllNo],
[VatCode]
)
SELECT [INV].[BatchNo],
[INV].[PRef],
@Date,
[DEB].[BatchNo],
[DEB].[PRef],
[DEB].[Ref],
@Value,
@Fees,
@Outlay,
@Vat,
@UserCode,
@AllNo,
[DEB].[VatCode]
FROM [dbo].[DebtorsLedger] [INV],
[dbo].[DebtorsLedger] [DEB]
WHERE [INV].[BatchNo] = @DebtorsBatchNo
AND [DEB].[BatchNo] = @InvoiceBatchNo
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].[BatchNo] = @InvoiceBatchNo
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].[BatchNo] = @DebtorsBatchNo
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_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)=''
)
/*******************************************************************************************************
* *
* 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
*******************************************************************************************************/
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
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]
)
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]*/
)
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),
@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 *
********************************************************************************************************/
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]
)
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]*/
)
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]
(
@BillBatchNo INT,
@PayBatchNo INT,
@Value FLOAT,
@Date DATETIME,
@UserCode VARCHAR(30),
@PrefAllocBatchNumber INT,
@PrefBillBatchNumber INT,
@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 *
********************************************************************************************************/
BEGIN TRY
BEGIN TRANSACTION
DECLARE @AllNo INT
SET @AllNo = (
SELECT [LastAlloc] + 1
FROM [dbo].[control]
)
UPDATE [CRL]
SET [CRL].[LastAlloc] = @AllNo
FROM [dbo].[control] [CRL]
INSERT
INTO [dbo].[Allocations]
([BatchNo],
[PRef],
[Date],
[ABatchNo],
[OPRef],
[ORef],
[Value],
[Fees],
[Vat],
[UserCode],
[AllNo],
[VatCode])
SELECT [BIL].[BatchNo], /*[BatchNo]*/
[BIL].[PRef], /*[PRef]*/
CAST(@Date AS DATE), /*[Date]*/
[PAY].[BatchNo], /*[ABatchNo]*/
[PAY].[PRef], /*[OPRef]*/
[PAY].[Ref], /*[ORef]*/
@Value, /*[Value]*/
0.00, /*[Fees]*/
0.00, /*[Vat]*/
@UserCode, /*[UserCode]*/
@AllNo, /*[AllNo]*/
'' /*[VatCode]*/
FROM [dbo].[SupplierLedger] [BIL],
[dbo].[SupplierLedger] [PAY]
WHERE [BIL].[BatchNo]=@BillBatchNo
AND [PAY].[BatchNo]=@PayBatchNo
AND [BIL].[PREF] = @PrefBillBatchNumber
AND [PAY].[PREF] = @PrefAllocBatchNumber
INSERT
INTO [dbo].[Allocations]
(
[BatchNo],
[PRef],
[Date],
[ABatchNo],
[OPRef],
[ORef],
[Value],
[Fees],
[Vat],
[UserCode],
[AllNo],
[VatCode]
)
SELECT [BIL].[BatchNo], /*[BatchNo]*/
[BIL].[PRef], /*[PRef]*/
CAST(@Date AS DATE), /*[Date]*/
[PAY].[BatchNo], /*[ABatchNo]*/
[PAY].[PRef], /*[OPRef]*/
[PAY].[Ref], /*[ORef]*/
@Value, /*[Value]*/
0.00, /*[Fees]*/
0.00, /*[Vat]*/
@UserCode, /*[UserCode]*/
@AllNo, /*[AllNo]*/
'' /*[VatCode]*/
FROM [dbo].[SupplierLedger] [BIL],
[dbo].[SupplierLedger] [PAY]
WHERE [BIL].[BatchNo]=@PayBatchNo
AND [PAY].[BatchNo]=@BillBatchNo
AND [BIL].[PREF] = @PrefAllocBatchNumber
AND [PAY].[PREF] = @PrefBillBatchNumber
UPDATE [BIL]
SET [BIL].[OSValue] = [BIL].[OSValue] + @Value
FROM [dbo].[SupplierLedger] [BIL]
WHERE [BIL].[BatchNo] = @BillBatchNo
UPDATE [BIL]
SET [BIL].[OSValue] = [BIL].[OSValue] - @Value
FROM [dbo].[SupplierLedger] [BIL]
WHERE [BIL].[BatchNo] = @PayBatchNo
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_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 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) = ''
)
/*******************************************************************************************************
* 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
*******************************************************************************************************/
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
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]*/
)
VALUES (
@Code,
@Rate
)
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 *
*******************************************************************************************************/
BEGIN
DECLARE @Command VARCHAR(MAX)
DECLARE @HandleRate AS FLOAT
DECLARE @EventDesc AS VARCHAR(300)
SET @HandleRate = 0
SET @EventDesc=''
DECLARE @TableVariable table (Code varchar(50))
INSERT INTO @TableVariable
EXEC [dbo].[Kaas_fn_checkCodeexists]
@Mode,
@MasterName,
@Code,
@NewCodeVal
IF EXISTS (SELECT 1 FROM @TableVariable)
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
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
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])
VALUES (@Code,
@Description)
ELSE
UPDATE [dbo].[NominalTypes]
SET [ntyCode] = @NewCodeVal,
[ntydesc] = @Description
WHERE [ntyCode] = @Code
END
ELSE IF ( @MasterName = 'CategoryType' )
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[CategoryType]
([CategoryType],
[Description])
VALUES (@Code,
@Description)
ELSE
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
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='FileColours')
BEGIN
IF ( @Mode = 'INSERT' )
INSERT INTO
[dbo].[FileColours]
([ColourCode],
[ColourDesc],
[RGBColour],
[BackgroundColour],
[ForegroundColour])
VALUES (@Code,
@Description,
ISNULL(@RGBColour, -1),
UPPER(@BackGroundColour),
UPPER(@BackGroundColour))
ELSE
UPDATE
[dbo].[FileColours]
SET [ColourCode] = @NewCodeVal,
[ColourDesc] = @Description,
[RGBColour] = ISNULL(@RGBColour, -1),
[BackgroundColour] = UPPER(@BackGroundColour),
[ForegroundColour] =UPPER(@BackGroundColour),
[Retired] = @Retired
WHERE [ColourCode] = @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
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
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
[Code] = @Code,
[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
[CdeCode] = @Code,
[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
[TaxType] = @Code,
[TaxDesc] = @Description
WHERE
RTRIM([TaxType]) = @Code
END
ELSE
BEGIN
INSERT INTO
[dbo].[TaxType]
([TaxType],
[TaxDesc])
VALUES
(@Code,
@Description)
END
END
ELSE IF (@MasterName='Standard Narratives')
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='Admin Codes')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[TimeAdminCodes] WHERE RTRIM([NCCode]) = @Code)
BEGIN
UPDATE
[dbo].[TimeAdminCodes]
SET
[NCCode] = @Code,
[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='Billing')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[BillDescriptions] WHERE RTRIM(ISNULL([SearchField],''))=@Code)
BEGIN
UPDATE [dbo].[BillDescriptions]
SET
[SearchField] = @Code,
[BillDescriptions] = @Description,
[Retired] = @Retired
WHERE
RTRIM([Number]) = @RGBColour
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 Code')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[Branch] WHERE RTRIM([BranchCode])=@Code)
BEGIN
UPDATE [dbo].[Branch]
SET
[BranchCode] = @Code,
[Description] = @Description
WHERE
RTRIM([BranchCode]) = @Code
END
ELSE
BEGIN
INSERT INTO [dbo].[Branch]
([BranchCode],
[Description])
VALUES
(@Code,
@Description)
END
END
ELSE IF (@MasterName='Tax Head')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM [dbo].[TaxHead] WHERE RTRIM([TaxHead])=@Code)
BEGIN
UPDATE [dbo].TaxHead
SET
[TaxHead] = @Code,
[Description] = @Description
WHERE
RTRIM([TaxHead])=@Code
END
ELSE
BEGIN
INSERT INTO [dbo].[TaxHead]
([TaxHead],
[Description])
VALUES
(@Code,
@Description)
END
END
ELSE IF (@MasterName='Salutation')
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM SalutationCodes WHERE RTRIM(Code)=@Code)
BEGIN
UPDATE [dbo].[SalutationCodes]
SET
[Code] = @Code,
[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])=@Retired)
BEGIN
UPDATE [dbo].[ChargeType]
SET
[ChargeType] = @Code,
[Description] = @Description
WHERE
RTRIM([ChargeType]) = @Code
AND RTRIM([TaxHead]) = @Retired
END
ELSE
BEGIN
INSERT INTO [dbo].[ChargeType]
([ChargeType],
[Description],
[TaxHead])
VALUES
(@Code,
@Description,
@Retired)
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
WHERE
RTRIM([TypeCode]) = @Code
END
ELSE
BEGIN
INSERT INTO [dbo].[ItemTypes]
([TypeCode],
[TypeDescription])
VALUES
(@Code,
@Description)
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='Client Group')
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='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='Undertaking Category')
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
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) = ''
)
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 *
************************************************************************************/
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,
[FeeCode] 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(9) NULL,
[ClientCurBal] DECIMAL(9) NULL,
[ClientDepBal] DECIMAL(9) NULL)
INSERT
INTO @Result
([Time],
[Code],
[FileColour],
[FileColour_Fld],
[BackgroundColour],
[TextColour],
[Name],
[Description],
[Fe],
[FeeCode],
[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]
)
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],
SM.[Description] AS [Description],
SM.[HandlerName] AS [Fe],
SM.[FECode] AS [FeeCode],
SM.[HandlerName] AS [FeeEarner],
SM.[User1] AS [User1],
SM.[User2] AS [User2],
SM.[User3] AS [User3],
SM.[Started] AS [Started],
SM.[DeptDescription] AS [Dept],
SM.[WTypeDescription] AS [WorkType],
SM.[Privileges] AS [Privileges],
SM.[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],
SM.[Dept] AS [DepartmentCode],
SM.[Team] AS [FeeEarnerTeam],
SM.[TeamName] AS [TeamName],
SM.[YourRef] AS [YourRef],
SM.[MatterStatus] AS [CaseStatusCode],
SM.[MatterStatusDescription] AS [CaseStatusDesc],
A.[OutlayBal] AS [OutlayBal],
A.[ClientCurBal] AS [ClientCurBal],
A.[ClientDepBal] AS [ClientDepBal]
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]
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'''
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'
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].[FeeCode],
[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]
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]'
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)',
@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
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
*
*******************************************************************/
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 [MAT].[Code] FROM [dbo].[matters] AS [MAT]
INSERT INTO @CLIENTS ([Code])
SELECT [CNT].[Code] FROM [dbo].[Contacts] AS [CNT]
END
ELSE
BEGIN
INSERT INTO @MATTERS ([Code])
SELECT [XML].[code]
FROM OPENXML(@iSL, N''data/matters/*'')
WITH([code] VARCHAR(20) ''@code'') AS [XML]
INSERT INTO @CLIENTS ([Code])
SELECT [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 [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 [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 [NOM].[CODE] FROM [dbo].[Nominal] AS [NOM]
END
ELSE
BEGIN
INSERT INTO @NOMINALS ([Code])
SELECT [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 [SUP].[CODE] FROM [dbo].[Suppliers] AS [SUP]
END
ELSE
BEGIN
INSERT INTO @SUPPLIERS ([Code])
SELECT [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 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]
AS
/*******************************************************************************************************
* Fetches the Waiting Costs Transfer Details *
* *
* Stored Procedure Name : [dbo].[KAAS_GetSAMRequestedTransferCost] *
* *
* Modification History: *
* 16 Mar 2022 Vignesh M Created *
*******************************************************************************************************/
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]
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
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_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 *
*******************************************************************************************************/
BEGIN
IF(@GroupingMode = 'GROUPING')
BEGIN
DECLARE @ControlID INT = 0
SELECT @CONTROLID = [ID]
FROM [dbo].[BGControl]
WHERE [DRAFTNO] = @DraftNo
IF(@HandlerMode ='HANDLER')
BEGIN
SELECT @GroupHandler = [UF].[FEEEARN]
--,[HAN].[Name] AS [HandlerName]
FROM
(SELECT DISTINCT [BGD].[FEEEARN]
FROM
[dbo].[BGDetail] [BGD]
WHERE
[BGD].[BGControlID] = @CONTROLID
AND [BGD].[Type] = 'F') [UF]
INNER JOIN [dbo].[HANDLERS] [HAN]
ON [HAN].[CODE] = [UF].[FEEEARN]
END
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
EXEC [dbo].[ky_ReorderGroupBG] @ControlID
EXEC [dbo].[ky_NewGroupBG]
@ControlID,
@NewGroupNarr
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 *
*******************************************************************************************************/
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
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_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 *
*******************************************************************************************************/
BEGIN
SET NOCOUNT ON
IF(@Mode = 'Invoice')
BEGIN
SELECT [BIH].[Matter],
[BIH].[ReturnReason],
[MAT].[Description],
[CON].[Name] AS [Name],
[SET].[KeyValue] AS [ApproverMailID],
[HAN].[Name] AS [HandlerName],
[BIH].[User] AS [RequestedUser],
[TOH].[Email] AS [ToMailAddress]
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]
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],
[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] =[CRH].[Who]
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 *
*********************************************************************************************************/
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]
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] 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 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 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 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 *
* 2022-07-15 John Ginnane Refactored the entire procedure *
********************************************************************************************************/
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] = 3064
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], '') = '')
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), /* 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)
ELSE 0 END, /* VALUECC */
CASE WHEN [NOM].[DepositYN] = 'Y'
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUECD */
'', /* DEPOSITTYPE */
0, /* CURVALUED */
0, /* CURVALUEO */
ISNULL([BAD].[CURRENCYVALUE], 0), /* CURVALUEC */
CASE WHEN [NOM].[DEPOSITYN] <> 'Y'
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUECC */
CASE WHEN [NOM].[DEPOSITYN] = '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]
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 [NOM].[DepositYN] <> 'Y'
THEN ISNULL([BAD].[VALUE], 0)
ELSE 0 END, /* VALUECC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND [NOM].[DepositYN] = '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 [NOM].[DEPOSITYN] <> 'Y'
THEN ISNULL([BAD].[CURRENCYVALUE], 0)
ELSE 0 END, /* CURVALUECC */
CASE WHEN [BAD].[OUTLAY] = 'C'
AND [NOM].[DEPOSITYN] = '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]
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 *
*******************************************************************************************************/
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] = 3064
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 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 *
*******************************************************************************************************/
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] = 3064
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 */
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 [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] AS [AllocateValue],
'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] SO
WHERE SO.[name] = N'KAAS_UpdatePostingSAMMultiPayment'
AND SO.[type] = 'P')
BEGIN
DROP PROCEDURE [dbo].[KAAS_UpdatePostingSAMMultiPayment]
END
GO
CREATE PROCEDURE [dbo].[KAAS_UpdatePostingSAMMultiPayment]
(
@PostedBatchNo INT = 0,
@PostedType VARCHAR(1) = '',
@IsPostingFwd VARCHAR(1) = '',
@HandlerName VARCHAR(30) = ''
)
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 *
*******************************************************************************************************/
--DECLARE
-- @PostedBatchNo INT = 1083,
-- @PostedType VARCHAR(1) = 'M',
-- @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)
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]
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,
@CurYear INT = 0,
@DepositAcct VARCHAR(1) = '',
@VATControlCode VARCHAR(20) = ''
/*FLAG VALUES*/
SELECT @CurYear = [Year],
@VATControlCode = [Vat]
FROM [dbo].[control] WITH(NOLOCK)
SELECT @CurPer = [TBH].[PerNo]
FROM @tempBatchH [TBH]
/*
INSERT IN BATCH HEADER AND DETAILS BASED
Multi Payment Batches are created as normal payment batches
*/
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
(
SELECT @LastBatch = (LastBatch + 1),
@LastPref = (LastPref + 1)
FROM [dbo].[Control] WITH(NOLOCK)
)
SET @DepositAcct = (SELECT DISTINCT [NOM].[DEPOSITYN]
FROM [dbo].[Nominal] [NOM] WITH(NOLOCK)
JOIN @tempBatchH [TBH]
ON RTRIM([NOM].[Code]) = RTRIM([TBH].Code)
)
/* INSERT INTO BATCH HEADER AS PAYMENT RECORD AS POSTED */
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,
CASE WHEN @IsPostingFwd='Y' THEN 'Y' ELSE 'N' END,
'P',
@BatchHCode,
@Branch,
@LastPref,
@Ref,
@Date,
'',
@Matter,
CASE WHEN @ThirdParty='Y' THEN @Supp ELSE '' END,
@Narr,
@Value,
0.00,
'Y',
@ClientAc,
@CurPer,
@CurYear,
@Payee,
0.00,
0.00,
0.00,
'',
@ThirdParty,
@HandlerName,
@EntryDate,
@ClientBank,
@Currency,
@CurrencyValue,
0.00,
0.00,
0.00,
0,
'',
'',
0,
NULL,
0.00,
0.00,
'',
0,
0,
@EFTSend,
NULL,
NULL,
NULL,
@EFTYorN,
NULL,
'N',
'N',
NULL,
@EFTemailYorN,
'',
0,
@ClearedDate
)
/*UPDATE AND SELECT PREF FOR BATCH DETAILS*/
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
/*INSERT INTO BATCH DETAILS*/
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
(
@LastBatch,
'P',
@Code,
@LastPref,
@Ref,
@Date,
@Fee,
@Branch,
@Narr,
@Matter,
CASE WHEN @Outlay='N' THEN @Supp ELSE '' END,
@Value,
@VatCode,
@VatVal,
@ClientYN,
@Outlay,
@Pending,
@CurYear,
@CurPer,
@EntryCurrency,
@CurrencyValue,
@CurrencyVat,
@OutlayCode,
@ThirdParty,
@Payee,
@Pref,
@PostedBatchNo,
@AllocBatch,
@AllocPref,
@AllocRef,
@AllocValue,
@AllocWriteOff,
@Psupp,
@Undetaking,
'',
'N',
'N',
'N',
@EFTemailYorN,
@RegisteredPost,
@PreBilledOutlay
)
SET @DepositAcct = (SELECT DISTINCT [NOM].[DEPOSITYN]
FROM [dbo].[Nominal] [NOM] WITH(NOLOCK)
WHERE [NOM].[Code] = @BatchHCode
)
IF(ISNULL(@Matter,'')<>'')
BEGIN
/*INSERT INTO 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]
)
VALUES
(
@Matter
,@LastBatch
,@LastPref
,@Date
,@Ref
,@Narr
,0.00
,CASE WHEN @Outlay='O' THEN @Value - @VatVal ELSE 0.00 END
,CASE WHEN @Outlay='C' THEN @Value - @VatVal ELSE 0.00 END
,@Fee
,@CurPer
,@CurYear
,CAST(GETDATE() AS DATE)
,SUBSTRING(@Matter, 1, 6)
,CASE WHEN @Outlay='C' AND @DepositAcct<>'Y' THEN @Value - @VatVal ELSE 0.00 END
,CASE WHEN @Outlay='C' AND @DepositAcct='Y' THEN @Value - @VatVal ELSE 0.00 END
,''
,0.00
,CASE WHEN @Outlay='O' THEN @CurrencyValue - @CurrencyVat ELSE 0.00 END
,CASE WHEN @Outlay='C' THEN @CurrencyValue - @CurrencyVat ELSE 0.00 END
,CASE WHEN @Outlay='C' AND @DepositAcct<>'Y' THEN @CurrencyValue - @CurrencyVat ELSE 0.00 END
,CASE WHEN @Outlay='C' AND @DepositAcct='Y' THEN @CurrencyValue - @CurrencyVat ELSE 0.00 END
,''
,0
,0
,null
,0.00
,0
,0
,@ClearedDate
)
END
/*UPDATE MATTER - OUTLAY*/
UPDATE [MAT]
SET [MAT].[OutlayBal] = ISNULL([MAT].[OutlayBal],0) + ISNULL(@Value - @VatVal,0),
[MAT].[CurOutlayBal] = ISNULL([MAT].[CurOutlayBal],0) + ISNULL(@CurrencyValue - @CurrencyVat ,0),
[MAT].[OutlayBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([MAT].[OutlayBalFwd],0) + ISNULL(@Value - @VatVal,0)
ELSE [MAT].[OutlayBalFwd] END,
[MAT].[CurOutlayBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([MAT].[CurOutlayBalFwd],0) + ISNULL(@CurrencyValue - @CurrencyVat ,0)
ELSE [MAT].[CurOutlayBalFwd] END
FROM [dbo].[matters] [MAT]
WHERE [MAT].[Matter] = @Matter AND ISNULL(@Matter,'')<>'' AND @Outlay='O'
/*UPDATE MATTER - CLIENT*/
UPDATE [MAT]
SET [MAT].[ClientBal] = ISNULL([MAT].[ClientBal],0) + ISNULL(@Value - @VatVal,0),
[MAT].[ClientBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([MAT].[ClientBalFwd],0) + ISNULL(@Value - @VatVal,0)
ELSE [MAT].[ClientBalFwd] END,
[MAT].[CurClientBal] = ISNULL([MAT].[CurClientBal],0) + ISNULL(@CurrencyValue - @CurrencyVat ,0),
[MAT].[CurClientBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([MAT].[CurClientBalFwd],0) + ISNULL(@CurrencyValue - @CurrencyVat ,0)
ELSE [MAT].[CurClientBalFwd] END,
[MAT].[ClientDepBal] = CASE WHEN @DepositAcct='Y'
THEN ISNULL([MAT].[ClientDepBal],0) + ISNULL(@Value - @VatVal,0)
ELSE [MAT].[ClientDepBal] END,
[MAT].[CurClientDBal] = CASE WHEN @DepositAcct='Y'
THEN ISNULL([MAT].[CurClientDBal],0) + ISNULL(@Value - @VatVal,0)
ELSE [MAT].[CurClientDBal] END,
[MAT].[ClientDepBalFwd] = CASE WHEN @DepositAcct='Y' AND @IsPostingFwd='Y'
THEN ISNULL([MAT].[ClientDepBalFwd],0) + ISNULL(@Value - @VatVal,0)
ELSE [MAT].[ClientDepBalFwd] END,
[MAT].[CurClientDBalFwd] = CASE WHEN @DepositAcct='Y' AND @IsPostingFwd='Y'
THEN ISNULL([MAT].[CurClientDBalFwd],0) + ISNULL(@Value - @VatVal,0)
ELSE [MAT].[CurClientDBalFwd] END,
[MAT].[ClientCurBal] = CASE WHEN @DepositAcct<>'Y'
THEN ISNULL([MAT].[ClientCurBal],0) + ISNULL(@CurrencyValue - @CurrencyVat ,0)
ELSE [MAT].[ClientCurBal] END,
[MAT].[CurClientCBal] = CASE WHEN @DepositAcct<>'Y'
THEN ISNULL([MAT].[CurClientCBal],0) + ISNULL(@CurrencyValue - @CurrencyVat ,0)
ELSE [MAT].[CurClientCBal] END,
[MAT].[ClientCurBalFwd] = CASE WHEN @DepositAcct<>'Y' AND @IsPostingFwd='Y'
THEN ISNULL([MAT].[ClientCurBalFwd],0) + ISNULL(@CurrencyValue - @CurrencyVat ,0)
ELSE [MAT].[ClientCurBalFwd] END,
[MAT].[CurClientCBalFwd] = CASE WHEN @DepositAcct<>'Y' AND @IsPostingFwd='Y'
THEN ISNULL([MAT].[CurClientCBalFwd],0) + ISNULL(@CurrencyValue - @CurrencyVat ,0)
ELSE [MAT].[CurClientCBalFwd] END
FROM [dbo].[matters] [MAT]
WHERE [MAT].[Matter] = @Matter AND ISNULL(@Matter,'')<>'' AND @Outlay='C'
/*UPDATE CONTACT - OUTLAY AND CLIENT*/
UPDATE [CON]
SET [CON].[OutlayBal] = CASE WHEN @Outlay='O'
THEN ISNULL([CON].[OutlayBal],0) + ISNULL(@Value - @VatVal,0)
ELSE [CON].[OutlayBal] END,
[CON].[CurOutlayBal] = CASE WHEN @Outlay='O'
THEN ISNULL([CON].[CurOutlayBal],0) + ISNULL(@CurrencyValue - @CurrencyVat ,0)
ELSE [CON].[CurOutlayBal] END,
[CON].[ClientDep] = CASE WHEN @DepositAcct='Y' AND @Outlay='C'
THEN ISNULL([CON].[ClientDep],0) + ISNULL(@Value - @VatVal,0)
ELSE ISNULL([CON].[ClientDep],0) END,
[CON].[CurClientDBal] = CASE WHEN @DepositAcct='Y' AND @Outlay='C'
THEN ISNULL([CON].[CurClientDBal],0) + ISNULL(@CurrencyValue - @CurrencyVat ,0)
ELSE ISNULL([CON].[CurClientDBal],0) END,
[CON].[ClientCur] = CASE WHEN @DepositAcct<>'Y' AND @Outlay='C'
THEN ISNULL([CON].[ClientCur],0) + ISNULL(@Value - @VatVal,0)
ELSE ISNULL([CON].[ClientCur],0) END,
[CON].[CurClientCBal] = CASE WHEN @DepositAcct<>'Y' AND @Outlay='C'
THEN ISNULL([CON].[CurClientCBal],0) + ISNULL(@CurrencyValue - @CurrencyVat ,0)
ELSE ISNULL([CON].[CurClientCBal],0) END
FROM [dbo].[Contacts] [CON]
WHERE [CON].[Code] = SUBSTRING(@Matter, 1, 6) AND ISNULL(@Matter,'')<>''
/*INSERT INTO NOMINAL LEDGER FROM BOTH BATCH HEADER AND BATCH DETAILS*/
INSERT
INTO [dbo].[NominalLedger]
(
[Code],
[Branch],
[BatchNo],
[Pref],
[Date],
[Ref],
[Narr],
[Matter],
[Supp],
[Fee],
[Value],
[CurrencyValue],
[Per],
[Year],
[EntryDate],
[RecNo],
[ClearedDate]
)
SELECT [NOD].[Code],
[NOD].[Branch],
[NOD].[BatchNo],
[NOD].[Pref],
[NOD].[Date],
[NOD].[Ref],
[NOD].[Narr],
[NOD].[Matter],
[NOD].[Supp],
[NOD].[Fee],
[NOD].[Value],
[NOD].[CurrencyValue],
[NOD].[PerNo],
[NOD].[Year],
[NOD].[EntryDate],
[NOD].[RecNo],
[NOD].[ClearedDate]
FROM (
SELECT [TBH].[Code],
[TBH].[Branch],
[TBH].[BatchNo],
[TBH].[Pref],
[TBH].[Date],
[TBH].[Ref],
[TBH].[Narr],
[TBH].[Matter],
[TBH].[Supp],
[TBH].[Fee],
[TBH].[Value] * -1 AS [Value],
[TBH].[CurrencyValue] * -1 AS [CurrencyValue],
@CurPer AS [PerNo],
@CurYear AS [Year],
CAST(GETDATE() AS DATE) AS [EntryDate],
[TBH].[RecNo],
[TBH].[ClearedDate]
FROM BatchDetails [TBD] WITH(NOLOCK)
INNER JOIN BatchH [TBH] WITH(NOLOCK)
ON [TBH].[BatchNo]=[TBD].[BatchNo]
WHERE [TBD].[BatchNo] = @LastBatch
UNION ALL
SELECT [TBD].[Code],
[TBD].[Branch],
[TBD].[BatchNo],
[TBD].[Pref],
[TBD].[Date],
[TBD].[Ref],
[TBD].[Narr],
[TBD].[Matter],
[TBD].[Supp],
[TBD].[Fee],
[TBD].[Value] - [TBD].[VatVal] AS [Value],
[TBD].[CurrencyValue] - [TBD].[CurrencyVat] AS [CurrencyValue],
@CurPer AS [PerNo],
@CurYear AS [Year],
CAST(GETDATE() AS DATE) AS [EntryDate],
[TBH].[RecNo],
[TBH].[ClearedDate]
FROM BatchDetails [TBD] WITH(NOLOCK)
INNER JOIN BatchH [TBH] WITH(NOLOCK)
ON [TBH].[BatchNo]=[TBD].[BatchNo]
WHERE [TBD].[BatchNo] = @LastBatch
)NOD
/*INSERT VAT CODE FOR NOMINAL*/
INSERT
INTO [dbo].[NominalLedger]
(
[Code],
[Branch],
[BatchNo],
[Pref],
[Date],
[Ref],
[Narr],
[Matter],
[Supp],
[Fee],
[Value],
[CurrencyValue],
[Per],
[Year],
[EntryDate],
[RecNo],
[ClearedDate]
)
SELECT @VATControlCode,
[TBD].[Branch],
[TBD].[BatchNo],
[TBD].[Pref],
[TBD].[Date],
[TBD].[Ref],
[TBD].[Narr],
[TBD].[Matter],
[TBD].[Supp],
[TBD].[Fee],
[TBD].[VatVal] AS [Value],
[TBD].[CurrencyVat] AS [CurrencyValue],
@CurPer AS [PerNo],
@CurYear AS [Year],
CAST(GETDATE() AS DATE) AS [EntryDate],
[TBH].[RecNo],
[TBH].[ClearedDate]
FROM [dbo].[BatchDetails] [TBD] WITH(NOLOCK)
INNER JOIN [dbo].[BatchH] [TBH] WITH(NOLOCK)
ON [TBH].[BatchNo]=[TBD].[BatchNo]
WHERE [TBD].[BatchNo] = @LastBatch
AND [TBD].[VATVAL] <> 0
/* UPDATE NOMINAL BALANCE FOR BATCH HEADER*/
UPDATE [NOM]
SET [NOM].[Balance] = ISNULL([NOM].[Balance],0)+(@Value * -1),
[NOM].[CurrencyBal] = ISNULL([NOM].[CurrencyBal],0)+(@CurrencyValue * -1),
[NOM].[BalanceFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[BalanceFwd],0)+(@Value * -1)
ELSE ISNULL([NOM].[BalanceFwd],0) END,
[NOM].[CurrencyBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[CurrencyBalFwd],0)+(@CurrencyValue * -1)
ELSE ISNULL([NOM].[CurrencyBalFwd],0) END,
[NOM].[Month1] = CASE WHEN @CurPer = 1 AND @IsPostingFwd<>'Y' THEN [NOM].[Month1]+(@Value * -1) ELSE [NOM].[Month1] END,
[NOM].[Month2] = CASE WHEN @CurPer = 2 AND @IsPostingFwd<>'Y' THEN [NOM].[Month2]+(@Value * -1) ELSE [NOM].[Month2] END,
[NOM].[Month3] = CASE WHEN @CurPer = 3 AND @IsPostingFwd<>'Y' THEN [NOM].[Month3]+(@Value * -1) ELSE [NOM].[Month3] END,
[NOM].[Month4] = CASE WHEN @CurPer = 4 AND @IsPostingFwd<>'Y' THEN [NOM].[Month4]+(@Value * -1) ELSE [NOM].[Month4] END,
[NOM].[Month5] = CASE WHEN @CurPer = 5 AND @IsPostingFwd<>'Y' THEN [NOM].[Month5]+(@Value * -1) ELSE [NOM].[Month5] END,
[NOM].[Month6] = CASE WHEN @CurPer = 6 AND @IsPostingFwd<>'Y' THEN [NOM].[Month6]+(@Value * -1) ELSE [NOM].[Month6] END,
[NOM].[Month7] = CASE WHEN @CurPer = 7 AND @IsPostingFwd<>'Y' THEN [NOM].[Month7]+(@Value * -1) ELSE [NOM].[Month7] END,
[NOM].[Month8] = CASE WHEN @CurPer = 8 AND @IsPostingFwd<>'Y' THEN [NOM].[Month8]+(@Value * -1) ELSE [NOM].[Month8] END,
[NOM].[Month9] = CASE WHEN @CurPer = 9 AND @IsPostingFwd<>'Y' THEN [NOM].[Month9]+(@Value * -1) ELSE [NOM].[Month9] END,
[NOM].[Month10] = CASE WHEN @CurPer = 10 AND @IsPostingFwd<>'Y' THEN [NOM].[Month10]+(@Value * -1) ELSE [NOM].[Month10] END,
[NOM].[Month11] = CASE WHEN @CurPer = 11 AND @IsPostingFwd<>'Y' THEN [NOM].[Month11]+(@Value * -1) ELSE [NOM].[Month11] END,
[NOM].[Month12] = CASE WHEN @CurPer = 12 AND @IsPostingFwd<>'Y' THEN [NOM].[Month12]+(@Value * -1) ELSE [NOM].[Month12] END
FROM [dbo].[Nominal] [NOM]
WHERE [NOM].[Code] = @BatchHCode
/* UPDATE NOMINAL BALANCE FOR BATCH DETAILS*/
UPDATE [NOM]
SET [NOM].[Balance] = ISNULL([NOM].[Balance],0)+ISNULL(@Value - @VatVal,0),
[NOM].[CurrencyBal] = ISNULL([NOM].[CurrencyBal],0)+ISNULL(@CurrencyValue - @CurrencyVat ,0),
[NOM].[BalanceFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[BalanceFwd],0)+ISNULL(@Value - @VatVal,0)
ELSE ISNULL([NOM].[BalanceFwd],0) END,
[NOM].[CurrencyBalFwd] = CASE WHEN @IsPostingFwd='Y'
THEN ISNULL([NOM].[CurrencyBalFwd],0)+ISNULL(@CurrencyValue - @CurrencyVat ,0)
ELSE ISNULL([NOM].[CurrencyBalFwd],0) END,
[NOM].[Month1] = CASE WHEN @CurPer = 1 AND @IsPostingFwd<>'Y' THEN [NOM].[Month1]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month1] END,
[NOM].[Month2] = CASE WHEN @CurPer = 2 AND @IsPostingFwd<>'Y' THEN [NOM].[Month2]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month2] END,
[NOM].[Month3] = CASE WHEN @CurPer = 3 AND @IsPostingFwd<>'Y' THEN [NOM].[Month3]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month3] END,
[NOM].[Month4] = CASE WHEN @CurPer = 4 AND @IsPostingFwd<>'Y' THEN [NOM].[Month4]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month4] END,
[NOM].[Month5] = CASE WHEN @CurPer = 5 AND @IsPostingFwd<>'Y' THEN [NOM].[Month5]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month5] END,
[NOM].[Month6] = CASE WHEN @CurPer = 6 AND @IsPostingFwd<>'Y' THEN [NOM].[Month6]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month6] END,
[NOM].[Month7] = CASE WHEN @CurPer = 7 AND @IsPostingFwd<>'Y' THEN [NOM].[Month7]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month7] END,
[NOM].[Month8] = CASE WHEN @CurPer = 8 AND @IsPostingFwd<>'Y' THEN [NOM].[Month8]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month8] END,
[NOM].[Month9] = CASE WHEN @CurPer = 9 AND @IsPostingFwd<>'Y' THEN [NOM].[Month9]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month9] END,
[NOM].[Month10] = CASE WHEN @CurPer = 10 AND @IsPostingFwd<>'Y' THEN [NOM].[Month10]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month10] END,
[NOM].[Month11] = CASE WHEN @CurPer = 11 AND @IsPostingFwd<>'Y' THEN [NOM].[Month11]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month11] END,
[NOM].[Month12] = CASE WHEN @CurPer = 12 AND @IsPostingFwd<>'Y' THEN [NOM].[Month12]+ISNULL(@Value - @VatVal,0) ELSE [NOM].[Month12] END
FROM [dbo].[Nominal] [NOM]
WHERE [NOM].[Code] = @Code
/*INSERT INTO SUPPLIER LEDGER*/
DECLARE @InsertSupp VARCHAR(10) = '';
SELECT @InsertSupp = [BAD].[Supp]
FROM [dbo].[BatchDetails] [BAD] WITH(NOLOCK)
IF(@InsertSupp<>'')
BEGIN
INSERT
INTO [dbo].[SupplierLedger]
(
[Supp],
[Type],
[Date],
[Ref],
[BatchNo],
[Pref],
[Narr],
[Original],
[OsValue],
[Year],
[Per],
[EntryDate],
[ThirdParty],
[Matter]
)
(
SELECT @Supp,
'P',
@Date,
@Ref,
@LastBatch,
@LastPref,
@Narr,
@Value,
@Value,
@CurYear,
@CurPer,
CAST(GETDATE() AS DATE),
'',
@Matter
)
/*UPDATE SUPPLIER BALANCE*/
UPDATE [SUP]
SET [SUP].[Balance] = ISNULL([SUP].[Balance] + @Value,0),
[SUP].[BalanceFwd] = CASE WHEN @IsPostingFwd = 'Y' THEN ISNULL([SUP].[BalanceFwd] + @Value,0) ELSE [SUP].[BalanceFwd] END
FROM [dbo].[Suppliers] [SUP]
WHERE RTRIM([SUP].[Code]) = @Code
END
/*INSERT INTO ALLOCATION PART*/
IF(@AllocBatch<>0)
BEGIN
DECLARE @LastAllocNumber INT = 0,
@SuppOsValue DECIMAL(17,2) = 0,
@SuppPendingOutlay DECIMAL(17,2) = 0,
@SuppBatchNo INT = 0
SELECT @SuppOsValue = [OsValue],
@SuppPendingOutlay = [PendingOutlay],
@SuppBatchNo = [BatchNo]
FROM [dbo].[SupplierLedger] WITH(NOLOCK)
WHERE [BatchNo] = @AllocBatch
AND [Pref] = @AllocPref
SELECT @LastAllocNumber = [LastAlloc] + 1 FROM [dbo].[control] WITH(NOLOCK)
INSERT
INTO [dbo].[Allocations]
(
[BatchNo],
[Pref],
[Date],
[ABatchNo],
[Opref],
[Oref],
[Value],
[UserCode],
[VatCode],
[AllNo]
)
(
SELECT @LastBatch,
@LastPref,
@Date,
@AllocBatch,
@AllocPref,
@AllocRef,
@Value,
'',
'',
@LastAllocNumber
)
UPDATE [dbo].[control]
SET [LastAlloc] = @LastAllocNumber
WHERE [Next_Doc_No] = 0
INSERT
INTO [dbo].[Allocations]
(
[BatchNo],
[Pref],
[Date],
[ABatchNo],
[Opref],
[Oref],
[Value],
[UserCode],
[VatCode],
[AllNo]
)
(
SELECT @AllocBatch,
@AllocPref,
@Date,
@LastBatch,
@LastPref,
@Ref,
@Value,
'',
'',
@LastAllocNumber
)
/* UPDATE SUPPLIER LEDGER OSVALUE*/
DECLARE @SupplierAllValue DECIMAL(17,2) = 0;
SELECT @SupplierAllValue = [Value]
FROM [dbo].[Allocations] WITH(NOLOCK)
WHERE [BatchNo] = @AllocBatch
AND [Pref] = @AllocPref
AND [ABATCHNO] = @LastBatch
AND [OPREF] = @LastPref
UPDATE [SPL]
SET [SPL].[OsValue] = ISNULL([OsValue],0) - ISNULL(@SupplierAllValue,0)
FROM [dbo].[SupplierLedger] [SPL]
WHERE [SPL].[BatchNo] = @LastBatch
AND [SPL].[Pref] = @LastPref
UPDATE [SPL]
SET [SPL].[OsValue] = ISNULL([OsValue],0) + ISNULL(@SupplierAllValue,0)
FROM [dbo].[SupplierLedger] [SPL]
WHERE [SPL].[BatchNo] = @AllocBatch
AND [SPL].[Pref] = @AllocPref
/*IF THERE ANY PENDING OUTLAY*/
IF(@SuppOsValue = 0 AND @SuppPendingOutlay = 0)
BEGIN
INSERT
INTO [dbo].[PendingOutlay]
(
[Matter],
[Date],
[Supplier],
[Ref],
[Narrative],
[Value]
)
(
SELECT
[BAD].[Matter],
@Date,
[SUL].[Supp],
[BAD].[Ref],
'Supplier Bill Paid',
[BAD].[Value] * -1
FROM [dbo].[SupplierLedger] [SUL]
JOIN [dbo].[BatchDetails] [BAD]
ON [BAD].[BatchNo] = @SuppBatchNo
WHERE [SUL].[BatchNo] = @AllocBatch
AND [SUL].[Pref] = @AllocPref
AND [BAD].[OUTLAY] = 'O'
)
/*UPDATE MATTER PEDNING OUTLAY*/
UPDATE [MAT]
SET [MAT].[PendingBal] -=ISNULL([BAD].[Value],0)
FROM [dbo].[Matters] [MAT]
JOIN [dbo].[SupplierLedger] [SUL]
ON [SUL].[BatchNo] = @AllocBatch
JOIN [dbo].[BatchDetails] [BAD]
ON [BAD].[BatchNo] = [SUL].[BatchNo]
AND [MAT].[Code] = [BAD].[Matter]
WHERE [BAD].[OUTLAY] = 'O'
END
END
/*UPDATE CONTROL TABLE -BATCH NUMBER AND PREF NUMBER*/
UPDATE [dbo].[Control]
SET [LASTPREF] = (@LastPref),
[LASTBATCH] = (@LastBatch)
WHERE [NEXT_DOC_NO] = 0
/* INSERT INTO WRITE OFF JOURNAL - WTITE OFF JOURNAL LOGIC*/
DECLARE @JLastBatchNo INT = 0,
@JLastPrefNo INT = 0,
@Creditors VARCHAR(10) = '',
@VATExclude VARCHAR(10) = '',
@JSuppOsValue DECIMAL(17,2) = 0,
@EIConvert DECIMAL(17,2) = 0,
@ControlYear INT = 0;
SELECT @JSuppOsValue = [OsValue]
FROM [dbo].[SupplierLedger] WITH(NOLOCK)
WHERE [BatchNo] = @LastBatch
IF(@JSuppOsValue<>0 AND @AllocWriteOff = 'Y')
BEGIN
UPDATE [dbo].[Control]
SET [LASTPREF] = [LASTPREF] + 1,
[LASTBATCH] = [LASTBATCH] + 1
WHERE [NEXT_DOC_NO] = 0
(
SELECT @JLastBatchNo = [LASTBATCH],
@JLastPrefNo = [LASTPREF],
@Creditors = [CREDITOR],
@VATExclude = [VATExclude],
@EIConvert = [EIConvert],
@ControlYear = [Year]
FROM [dbo].[Control] WITH(NOLOCK)
)
/* INSERT INTO BATCH HEADER TABLE - TYPE=J*/
INSERT
INTO [dbo].[BatchH]
(
[BatchNo],
[PRef],
[Type],
[Ref],
[PerNo],
[Year],
[Date],
[Branch],
[PostFwd],
[Narr],
[Posted],
[EntryDate],
[EFTSent],
[EFTDate],
[EFTFileNumber],
[EFTFileName],
[EFTYorN],
[ClientCode],
[PayClient],
[OnceOffPayment],
[CaseAssCode],
[EFTEmailYorN],
[UserCode]
)
VALUES
(
@JLastBatchNo,
@JLastPrefNo,
'J',
'',
@CurPer,
@ControlYear,
@Date,
@Branch,
@IsPostingFwd,
'Automatic Creditors balance write-off',
'N',
CAST(GETDATE() AS DATE),
'N',
0,
0,
'',
'N',
'' ,
'N',
'N',
'',
'N',
@HandlerName
)
UPDATE [dbo].[Control]
SET [LASTPREF] = [LASTPREF] + 1
WHERE [NEXT_DOC_NO] = 0
(
SELECT @JLastPrefNo = [LASTPREF]
FROM [dbo].[Control] WITH(NOLOCK)
)
/* INSERT INTO BATCH DETAILS TABLE - TYPE=J*/
INSERT
INTO [dbo].[BatchDetails]
(
[PRef],
[BatchNo],
[Branch],
[Type],
[Ref],
[Code],
[Date],
[Narr],
[Supp],
[Value],
[VatCode],
[VATVal],
[EntryCurrency],
[CurrencyValue],
[CurrencyVAT],
[Year],
[PerNo],
[AllocBatch],
[AllocPRef],
[AllocRef],
[AllocValue],
[Outlay],
[CaseAssCode],
[OnceOffPayment],
[PayClient],
[ClientCode],
[EFTEmailYorN]
)
VALUES
(
@JLastPrefNo,
@JLastBatchNo,
@Branch,
'J',
'W/o(auto)',
@Creditors,
@Date,
'Automatic Write-off',
@Supp,
@JSuppOsValue * -1,
@VATExclude,
0,
@EntryCurrency,
(@JSuppOsValue * -1) / @EIConvert,
0,
@Year,
@CurPer,
@AllocBatch,
@AllocPref,
@AllocRef,
@AllocValue,
'N',
'' ,
'N',
'N',
'' ,
'N'
),
(
@JLastPrefNo + 1,
@JLastBatchNo,
@Branch,
'J',
'W/o(auto)',
@Creditors,
@Date,
'Automatic Write-off',
@Supp,
@JSuppOsValue,
@VATExclude,
0,
@EntryCurrency,
@JSuppOsValue / @EIConvert,
0,
@Year,
@CurPer,
@AllocBatch,
@AllocPref,
@AllocRef,
@AllocValue,
'N',
'' ,
'N',
'N',
'' ,
'N'
)
END
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;
/*DELETE BATCH HEADER AND BATCH DETAILS*/
DELETE
FROM [dbo].[BatchDetails]
WHERE [BatchNo] = @PostedBatchNo
DELETE
FROM [dbo].[BatchH]
WHERE [BatchNo] = @PostedBatchNo
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] 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 *
********************************************************************************************************/
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] = 3064
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 */
[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 @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. *
*******************************************************************************************************/
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] = 3064
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 @OUTLAYPENDING VARCHAR(10)
DECLARE @VATNOMINAL VARCHAR(10)
DECLARE @CREDITORS VARCHAR(10)
DECLARE @INVCR INT
DECLARE @TODAY DATETIME
SELECT @CURYEAR = [CON].[YEAR],
@CURPER = [CON].[CURPER],
@OUTLAYPENDING = [CON].[OUTLAYPENDING],
@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 @OUTLAYPENDING = '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 */
[BAD].[MATTER], /* 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]
INNER JOIN [dbo].[BatchDetails] AS [BAD]
ON [BAH].[BATCHNO] = [BAD].[BATCHNO]
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 */
[BADETALS].[MATTER], /* 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 @OUTLAYPENDING = 'Y') AS [BAD]
INNER JOIN [dbo].[BatchDetails] AS [BADETALS]
ON [BAH].[BATCHNO] = [BADETALS].[BATCHNO]
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
*******************************************************************************************************/
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] = 3064
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, 16, 98)
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,
@FNLVat DECIMAL,
@FNLOutlay DECIMAL,
@FNLTotal DECIMAL,
@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 *
*************************************************************************************************************************************************/
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 @NameLen = LEN(@FNLName);
SET @SpaceVal = 50 - @NameLen;
SET @Narrative = CONCAT('FNL: €', @FNLTotal, SPACE(2),
@FNLName, SPACE(@SpaceVal), SPACE(2),
'Fees: €', @FNLFees, SPACE(2),
'O/L: €', @FNLOutlay)
EXEC [dbo].[KAAS_INSERTSAMMatterLedgerComment] @MatterCode, @Narrative, @ClientMin, @CurrDate, @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),
@Result TINYINT OUTPUT)
AS
/*******************************************************************************************************
* *
*Used to list the matter ledger *
* Stored Procedure Name: [dbo].[KAAS_UPDATESAMMatterLedgerComment] *
* Modification History: *
* 2023-05-09 Vignesh M Created *
********************************************************************************************************/
BEGIN
BEGIN TRY
BEGIN TRAN
UPDATE [MAT]
SET [MAT].[NARR] = @Narrative,
[MAT].[REF] = @HandlerCode
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) = '',
@SolicitorCategory VARCHAR(6) = '',
@OtherPartyCategory VARCHAR(6) = '',
@SupplierCategory VARCHAR(6) = '',
@SystemCategoryType VARCHAR(6) = '',
@AutoNumberClient VARCHAR(1) = '',
@AutoAlphaNumbering VARCHAR(1) = '',
@CloseMatterTimeBarred VARCHAR(1) = '',
@SupplierRemittance VARCHAR(1) = '',
@EFTDefaultON 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) = ''
)
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 *
*******************************************************************************************************/
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
)
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].[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] = 'EFTDefaultON'
)
UPDATE [dbo].[Settings]
SET [KeyValue] = @EFTDefaultON
WHERE [KeyName] = 'EFTDefaultON'
ELSE
INSERT
INTO [dbo].[Settings]
(
[KeyName],
[KeyValue]
)
VALUES
(
'EFTDefaultON',
@EFTDefaultON
)
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
)
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
)
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
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