USP_DATAFORMTEMPLATE_EDIT_PDACCOUNTCODEMAPDEVELOPMENTMEMBERSHIPINSTALLMENTS

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@REVENUETYPES xml IN
@WRITEOFFREASONCODESUBTYPECODE xml IN
@DEBITGLACCOUNTID uniqueidentifier IN
@DEBITPDACCOUNTSEGMENTVALUEID uniqueidentifier IN
@CREDITGLACCOUNTID uniqueidentifier IN
@CREDITPDACCOUNTSEGMENTVALUEID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PDACCOUNTCODEMAPDEVELOPMENTMEMBERSHIPINSTALLMENTS(
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @REVENUETYPES xml,
    @WRITEOFFREASONCODESUBTYPECODE xml,
    @DEBITGLACCOUNTID uniqueidentifier,
    @DEBITPDACCOUNTSEGMENTVALUEID uniqueidentifier,
    @CREDITGLACCOUNTID uniqueidentifier,
    @CREDITPDACCOUNTSEGMENTVALUEID uniqueidentifier
)
as
    set nocount on;

    if @CHANGEAGENTID is null
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
    declare @CURRENTDATE datetime = getdate()

    declare @ALLCODESID uniqueidentifier = '99999999-9999-9999-9999-999999999999'
    declare @REVTYPEMASK integer 
    select @REVTYPEMASK = sum(NAMEID) from dbo.UFN_PDACCOUNTCODEMAPPING_REVENUETYPES_FROMITEMLISTXML(@REVENUETYPES)

    begin try
        update dbo.PDACCOUNTCODEMAPPING 
        set
            REVENUETYPE = @REVTYPEMASK,
            DEBITGLACCOUNTID = @DEBITGLACCOUNTID,
            DEBITPDACCOUNTSEGMENTVALUEID = @DEBITPDACCOUNTSEGMENTVALUEID,
            CREDITGLACCOUNTID = @CREDITGLACCOUNTID,
            CREDITPDACCOUNTSEGMENTVALUEID = @CREDITPDACCOUNTSEGMENTVALUEID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID = @ID

        declare @CONTEXTCACHE varbinary(128) = context_info()
        set CONTEXT_INFO @CHANGEAGENTID

        if (@REVTYPEMASK & 52) <> 0
        begin
            --Get selected reason codes

            declare @REASONCODES table (
                ID uniqueidentifier
            )
            insert into @REASONCODES
            select distinct REASONCODE.ID
            from @WRITEOFFREASONCODESUBTYPECODE.nodes('/WRITEOFFREASONCODESUBTYPECODE/ITEM') T(c)
            cross apply (select T.c.value('(REASONCODESUBTYPECODEID)[1]','uniqueidentifier') ID) REASONCODE

            if not exists(select 1 from @REASONCODES) or exists(select 1 from @REASONCODES where ID = @ALLCODESID)
            begin
                delete from @REASONCODES
                insert @REASONCODES
                values (@ALLCODESID)
            end

            --Remove old reason codes

            delete PDACCOUNTCODEMAPPINGSUBTYPE
            from dbo.PDACCOUNTCODEMAPPINGSUBTYPE
            where 
                PDACCOUNTCODEMAPPINGID = @ID and
                ADDITIONALSUBTYPE = 15 and
                not exists (select 1 from @REASONCODES where ID = PDACCOUNTCODEMAPPINGSUBTYPE.SUBTYPEID)

            --Add new reason codes

            insert into dbo.PDACCOUNTCODEMAPPINGSUBTYPE (
                ADDITIONALSUBTYPE,
                PDACCOUNTCODEMAPPINGID,
                SUBTYPEID,
                ADDEDBYID,
                CHANGEDBYID,
                DATEADDED,
                DATECHANGED
            )
            select
                15,
                @ID,
                REASONCODES.ID,
                @CHANGEAGENTID,
                @CHANGEAGENTID,
                @CURRENTDATE,
                @CURRENTDATE
            from @REASONCODES [REASONCODES]
            where not exists(
                select 1
                from dbo.PDACCOUNTCODEMAPPINGSUBTYPE 
                where 
                    PDACCOUNTCODEMAPPINGID = @ID and
                    ADDITIONALSUBTYPE = 15 and
                    SUBTYPEID = [REASONCODES].ID
            )
        end
        else
        begin
            delete PDACCOUNTCODEMAPPINGSUBTYPE 
            from dbo.PDACCOUNTCODEMAPPINGSUBTYPE 
            where ADDITIONALSUBTYPE = 15 and PDACCOUNTCODEMAPPINGID = @ID
        end

        if @CONTEXTCACHE is not null
        set CONTEXT_INFO @CONTEXTCACHE

        if dbo.UFN_PDACCOUNTCODEMAPPING_VALIDMAPPINGWITHSUBTYPES2(@ID, @CURRENTDATE) = 0
            raiserror('BBERR_PDACCOUNTCODEMAPPING_VALIDMAPPINGWITHSUBTYPES', 16, 1)
    end try
    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

return 0;