USP_CHARGELINEITEMRESPONSIBILITY_EDIT

Insert, update, and delete charge responsibility records for a charge.

Parameters

Parameter Parameter Type Mode Description
@CHANGEAGENTID uniqueidentifier IN
@CHARGELINEITEMRESPONSIBILITY xml IN

Definition

Copy


            create procedure dbo.USP_CHARGELINEITEMRESPONSIBILITY_EDIT
            (
                @CHANGEAGENTID uniqueidentifier = null,
                @CHARGELINEITEMRESPONSIBILITY xml
            )
            as
                set nocount on;

                -- Get the change agent if one was not passed in

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

                -- Get the current date

                declare @CURRENTDATE datetime;
                set @CURRENTDATE = getdate();

                begin try
                    --Cache current context information 

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

                    declare @temp table (
                        ID uniqueidentifier NOT NULL,
                        FINANCIALTRANSACTIONLINEITEMID uniqueidentifier NOT NULL,
                        CONSTITUENTID uniqueidentifier NOT NULL,
                        PERCENTAGE decimal NOT NULL);

                    insert into @temp 
                        (ID, FINANCIALTRANSACTIONLINEITEMID, CONSTITUENTID, PERCENTAGE)
                    select isnull(ID, newid()), FINANCIALTRANSACTIONLINEITEMID, CONSTITUENTID, PERCENTAGE
                    from dbo.UFN_CHARGELINEITEMRESPONSIBILITY_FROMITEMLISTXML(@CHARGELINEITEMRESPONSIBILITY);

                    merge dbo.CHARGELINEITEMRESPONSIBILITY as target
                    using (select
                        ID,
                        FINANCIALTRANSACTIONLINEITEMID,
                        CONSTITUENTID,
                        PERCENTAGE
                    from @temp) as source (
                        ID,
                        FINANCIALTRANSACTIONLINEITEMID,
                        CONSTITUENTID,
                        PERCENTAGE)
                    on ((target.ID = source.ID) and (target.FINANCIALTRANSACTIONLINEITEMID in (select FINANCIALTRANSACTIONLINEITEMID from @temp)))
                    when not matched by source and (target.FINANCIALTRANSACTIONLINEITEMID in (select FINANCIALTRANSACTIONLINEITEMID from @temp)) then DELETE
                    when matched then
                        update set
                            ID = source.ID,
                            FINANCIALTRANSACTIONLINEITEMID = source.FINANCIALTRANSACTIONLINEITEMID,
                            CONSTITUENTID = source.CONSTITUENTID,
                            PERCENTAGE = source.PERCENTAGE,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                    when not matched then
                        insert (
                            ID,
                            FINANCIALTRANSACTIONLINEITEMID,
                            CONSTITUENTID,
                            PERCENTAGE,
                            ADDEDBYID,
                            DATEADDED,
                            CHANGEDBYID,
                            DATECHANGED)
                        values (
                            source.ID,
                            source.FINANCIALTRANSACTIONLINEITEMID,
                            source.CONSTITUENTID,
                            source.PERCENTAGE,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CHANGEAGENTID,
                            @CURRENTDATE);

                    if not @CONTEXTCACHE is null 
                          set CONTEXT_INFO @CONTEXTCACHE;
                    end try

                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;