USP_POSTTOGLPROCESS_UPDATEREVENUEWITHPOSTDETAIL

Updates the Revenue tables with the post details.

Parameters

Parameter Parameter Type Mode Description
@TEMPTABLE nvarchar(255) IN
@POSTINGOPTION tinyint IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


            CREATE proc dbo.USP_POSTTOGLPROCESS_UPDATEREVENUEWITHPOSTDETAIL(@TEMPTABLE nvarchar(255), @POSTINGOPTION tinyint = 0, @CHANGEAGENTID uniqueidentifier)
            as
                set nocount on;


                /* Insert into the Revenue record posted GL Account and Amount */
                declare @SQL nvarchar(4000);
                begin transaction UPDATEREVENUE;
                begin try
                    set @SQL = 'insert into dbo.REVENUEGLDISTRIBUTION (REVENUEID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, DEBITACCOUNT, CREDITACCOUNT, PROJECT, REFERENCE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    select REVENUE.ID, D.GLPAYMENTMETHODREVENUETYPEMAPPINGID, D.ACCOUNTSTRING, C.ACCOUNTSTRING, D.PROJECT, D.REFERENCE, D.AMOUNT, @DYNCHANGEAGENTID, @DYNCHANGEAGENTID, getdate(), getdate()
                                        from dbo.REVENUE 
                                        inner join ' + @TEMPTABLE + ' as C on REVENUE.ID = C.REVENUEID and UPPER(C.DEBITCREDIT) = ''C''
                                        inner join ' + @TEMPTABLE + ' as D on REVENUE.ID = D.REVENUEID and UPPER(D.DEBITCREDIT) = ''D''
                                        where not exists(select ID from dbo.REVENUEGLDISTRIBUTION where REVENUEGLDISTRIBUTION.REVENUEID = REVENUE.ID) 
                                                and    C.ISREVERSAL <> ''1'' and D.ISREVERSAL <> ''1'' 
                                                and C.WRITEOFFID is null and D.WRITEOFFID is null
                                                and    C.ISSOLDPROPERTYORSTOCKORGIFTINKIND = ''0'' and D.ISSOLDPROPERTYORSTOCKORGIFTINKIND = ''0''
                                                and C.GROUPID = D.GROUPID 
                                                and C.GLPAYMENTMETHODREVENUETYPEMAPPINGID = D.GLPAYMENTMETHODREVENUETYPEMAPPINGID';

                    exec sp_executesql @SQL, N'@DYNCHANGEAGENTID uniqueidentifier', @DYNCHANGEAGENTID = @CHANGEAGENTID;

                    set @SQL = 'insert into dbo.STOCKSALEGLDISTRIBUTION (STOCKDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, DEBITACCOUNT, CREDITACCOUNT, PROJECT, REFERENCE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    select REVENUE.ID, D.GLPAYMENTMETHODREVENUETYPEMAPPINGID, D.ACCOUNTSTRING, C.ACCOUNTSTRING, D.PROJECT, D.REFERENCE, D.AMOUNT, @DYNCHANGEAGENTID, @DYNCHANGEAGENTID, getdate(), getdate()
                                        from dbo.REVENUE 
                                        inner join ' + @TEMPTABLE + ' as C on REVENUE.ID = C.REVENUEID and UPPER(C.DEBITCREDIT) = ''C''
                                        inner join ' + @TEMPTABLE + ' as D on REVENUE.ID = D.REVENUEID and UPPER(D.DEBITCREDIT) = ''D''
                                        inner join dbo.STOCKDETAIL on REVENUE.ID = STOCKDETAIL.ID
                                        where not exists(select ID from dbo.STOCKSALEGLDISTRIBUTION where STOCKSALEGLDISTRIBUTION.STOCKDETAILID = STOCKDETAIL.ID) 
                                                and    C.ISREVERSAL <> ''1'' and D.ISREVERSAL <> ''1'' 
                                                and C.WRITEOFFID is null and D.WRITEOFFID is null
                                                and    C.ISSOLDPROPERTYORSTOCKORGIFTINKIND = ''1'' and D.ISSOLDPROPERTYORSTOCKORGIFTINKIND = ''1''
                                                and C.GROUPID = D.GROUPID
                                                and C.GLPAYMENTMETHODREVENUETYPEMAPPINGID = D.GLPAYMENTMETHODREVENUETYPEMAPPINGID';

                    exec sp_executesql @SQL, N'@DYNCHANGEAGENTID uniqueidentifier', @DYNCHANGEAGENTID = @CHANGEAGENTID;

                    set @SQL = 'insert into dbo.PROPERTYDETAILGLDISTRIBUTION (PROPERTYDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, DEBITACCOUNT, CREDITACCOUNT, PROJECT, REFERENCE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    select REVENUE.ID, D.GLPAYMENTMETHODREVENUETYPEMAPPINGID, D.ACCOUNTSTRING, C.ACCOUNTSTRING, D.PROJECT, D.REFERENCE, D.AMOUNT, @DYNCHANGEAGENTID, @DYNCHANGEAGENTID, getdate(), getdate()
                                        from dbo.REVENUE 
                                        inner join ' + @TEMPTABLE + ' as C on REVENUE.ID = C.REVENUEID and UPPER(C.DEBITCREDIT) = ''C''
                                        inner join ' + @TEMPTABLE + ' as D on REVENUE.ID = D.REVENUEID and UPPER(D.DEBITCREDIT) = ''D''
                                        inner join dbo.PROPERTYDETAIL on REVENUE.ID = PROPERTYDETAIL.ID
                                        where not exists(select ID from dbo.PROPERTYDETAILGLDISTRIBUTION where PROPERTYDETAILGLDISTRIBUTION.PROPERTYDETAILID = PROPERTYDETAIL.ID) 
                                                and    C.ISREVERSAL <> ''1'' and D.ISREVERSAL <> ''1'' 
                                                and C.WRITEOFFID is null and D.WRITEOFFID is null
                                                and    C.ISSOLDPROPERTYORSTOCKORGIFTINKIND = ''1'' and D.ISSOLDPROPERTYORSTOCKORGIFTINKIND = ''1''
                                                and C.GROUPID = D.GROUPID
                                                and C.GLPAYMENTMETHODREVENUETYPEMAPPINGID = D.GLPAYMENTMETHODREVENUETYPEMAPPINGID';

                    exec sp_executesql @SQL, N'@DYNCHANGEAGENTID uniqueidentifier', @DYNCHANGEAGENTID = @CHANGEAGENTID;

                    set @SQL = 'insert into dbo.GIFTINKINDSALEGLDISTRIBUTION (GIFTINKINDPAYMENTMETHODDETAILID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, DEBITACCOUNT, CREDITACCOUNT, PROJECT, REFERENCE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    select REVENUE.ID, D.GLPAYMENTMETHODREVENUETYPEMAPPINGID, D.ACCOUNTSTRING, C.ACCOUNTSTRING, D.PROJECT, D.REFERENCE, D.AMOUNT, @DYNCHANGEAGENTID, @DYNCHANGEAGENTID, getdate(), getdate()
                                        from dbo.REVENUE 
                                        inner join ' + @TEMPTABLE + ' as C on REVENUE.ID = C.REVENUEID and UPPER(C.DEBITCREDIT) = ''C''
                                        inner join ' + @TEMPTABLE + ' as D on REVENUE.ID = D.REVENUEID and UPPER(D.DEBITCREDIT) = ''D''
                                        inner join dbo.GIFTINKINDPAYMENTMETHODDETAIL on REVENUE.ID = GIFTINKINDPAYMENTMETHODDETAIL.ID
                                        where not exists(select ID from dbo.GIFTINKINDSALEGLDISTRIBUTION where GIFTINKINDSALEGLDISTRIBUTION.GIFTINKINDPAYMENTMETHODDETAILID = GIFTINKINDPAYMENTMETHODDETAIL.ID) 
                                                and    C.ISREVERSAL <> ''1'' and D.ISREVERSAL <> ''1'' 
                                                and C.WRITEOFFID is null and D.WRITEOFFID is null
                                                and    C.ISSOLDPROPERTYORSTOCKORGIFTINKIND = ''1'' and D.ISSOLDPROPERTYORSTOCKORGIFTINKIND = ''1''
                                                and C.GROUPID = D.GROUPID
                                                and C.GLPAYMENTMETHODREVENUETYPEMAPPINGID = D.GLPAYMENTMETHODREVENUETYPEMAPPINGID';

                    exec sp_executesql @SQL, N'@DYNCHANGEAGENTID uniqueidentifier', @DYNCHANGEAGENTID = @CHANGEAGENTID;

                    /* Insert into the WriteOff record posted GL Account and Amount */
                    set @SQL = 'insert into dbo.WRITEOFFGLDISTRIBUTION (WRITEOFFID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, DEBITACCOUNT, CREDITACCOUNT, PROJECT, REFERENCE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    select WRITEOFF.ID, D.GLPAYMENTMETHODREVENUETYPEMAPPINGID, D.ACCOUNTSTRING, C.ACCOUNTSTRING, D.PROJECT, D.REFERENCE, D.AMOUNT, @DYNCHANGEAGENTID, @DYNCHANGEAGENTID, getdate(), getdate()
                                        from dbo.WRITEOFF
                                        inner join ' + @TEMPTABLE + ' as C on WRITEOFF.ID = C.WRITEOFFID and UPPER(C.DEBITCREDIT) = ''C''
                                        inner join ' + @TEMPTABLE + ' as D on WRITEOFF.ID = D.WRITEOFFID and UPPER(D.DEBITCREDIT) = ''D''
                                        where not exists(select ID from dbo.WRITEOFFGLDISTRIBUTION where WRITEOFFGLDISTRIBUTION.WRITEOFFID = WRITEOFF.ID) 
                                                and C.REVENUESPLITID = D.REVENUESPLITID
                                                and C.GROUPID = D.GROUPID
                                                and C.GLPAYMENTMETHODREVENUETYPEMAPPINGID = D.GLPAYMENTMETHODREVENUETYPEMAPPINGID';
                    exec sp_executesql @SQL, N'@DYNCHANGEAGENTID uniqueidentifier', @DYNCHANGEAGENTID = @CHANGEAGENTID;
                end try
                begin catch
                    if @@TRANCOUNT > 0
                        rollback transaction UPDATEREVENUE;

                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                if @@TRANCOUNT > 0
                    commit transaction UPDATEREVENUE;

                return 0;