USP_MEMBERSHIPDUESBATCH_GETMEMBERSHIPPROGRAMADDONS_UPDATEFROMXML

Parameters

Parameter Parameter Type Mode Description
@BATCHMEMBERSHIPDUESID uniqueidentifier IN
@MEMBERSHIPPROGRAMADDONS xml IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


CREATE procedure dbo.USP_MEMBERSHIPDUESBATCH_GETMEMBERSHIPPROGRAMADDONS_UPDATEFROMXML
(
    @BATCHMEMBERSHIPDUESID uniqueidentifier,
    @MEMBERSHIPPROGRAMADDONS xml,
    @CHANGEAGENTID uniqueidentifier = null,
    @CHANGEDATE datetime = null
)
as
begin    
    set nocount on;

    if @CHANGEAGENTID is null
        exec USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

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

    merge into dbo.BATCHMEMBERSHIPDUESMEMBERSHIPROGRAMADDON as target
    using (
        select
            ADDONID,
            NUMBEROFADDONS
        from dbo.UFN_MEMBERSHIPDUESBATCH_GETMEMBERSHIPPROGRAMADDONS_FROMITEMLISTXML(@MEMBERSHIPPROGRAMADDONS)
        where APPLY = 1 and NUMBEROFADDONS > 0
    ) as source
        on target.BATCHMEMBERSHIPDUESID = @BATCHMEMBERSHIPDUESID and source.ADDONID = target.ADDONID
    when not matched by target then
        insert (ID, BATCHMEMBERSHIPDUESID, ADDONID, NUMBEROFADDONS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
        values (newID(), @BATCHMEMBERSHIPDUESID, source.ADDONID, source.NUMBEROFADDONS, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE)
    when matched and source.NUMBEROFADDONS <> target.NUMBEROFADDONS then
        update set target.NUMBEROFADDONS = source.NUMBEROFADDONS, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
    when not matched by source and target.BATCHMEMBERSHIPDUESID = @BATCHMEMBERSHIPDUESID then
        delete;
end