USP_MAPPINGERROR_CORRECTION_RECREATEDISTRIBUTION

Recreate the distribution for a bank account deposit correction if using holding account.

Parameters

Parameter Parameter Type Mode Description
@CORRECTIONID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN
@PROCESSID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_MAPPINGERROR_CORRECTION_RECREATEDISTRIBUTION
(
    @CORRECTIONID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @CURRENTDATE datetime = null,
    @PROCESSID uniqueidentifier = null
) as 
begin

    if @CHANGEAGENTID is null
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

    if @CURRENTDATE is null
        set @CURRENTDATE = getdate();

    declare @DEFAULTGLACCOUNTID uniqueidentifier;
    select @DEFAULTGLACCOUNTID = S.DEFAULTGLACCOUNTID
    from dbo.PDACCOUNTSYSTEM S
    inner join dbo.BANKACCOUNT BA on S.ID = BA.PDACCOUNTSYSTEMID
    inner join dbo.BANKACCOUNTTRANSACTION BAT on BAT.BANKACCOUNTID = BA.ID
    inner join dbo.BANKACCOUNTDEPOSITCORRECTION DC on DC.DEPOSITID = BAT.ID
    where DC.ID = @CORRECTIONID;

    if @DEFAULTGLACCOUNTID is not null and exists(select 1 
        from dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION D
        inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
        where D.BANKACCOUNTDEPOSITCORRECTIONID = @CORRECTIONID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
    begin
        delete from dbo.GLTRANSACTION where ID in (select GLTRANSACTIONID from dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION where BANKACCOUNTDEPOSITCORRECTIONID = @CORRECTIONID) and POSTSTATUSCODE >= 1;
        delete from dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION where BANKACCOUNTDEPOSITCORRECTIONID = @CORRECTIONID;

        exec dbo.USP_BANKACCOUNTDEPOSITCORRECTION_CREATEDISTRIBUTION @CORRECTIONID, @CHANGEAGENTID, @CURRENTDATE;
    end

    if exists(select 1 from dbo.GLACCOUNTMAPPINGERROR where TRANSACTIONID = @CORRECTIONID and DELETED = 0
        and ERRORMESSAGE in (select E.ERRORMESSAGE from dbo.GLACCOUNTMAPPINGERROR E where E.TRANSACTIONID = @CORRECTIONID and E.GLACCOUNTMAPPINGERRORUPDATEPROCESSID = @PROCESSID))
        return 0
    else
        return 1
end