USP_MEMBERSHIPDUESBATCH_GETCHILDREN_UPDATEFROMXML

Parameters

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

Definition

Copy


CREATE procedure dbo.USP_MEMBERSHIPDUESBATCH_GETCHILDREN_UPDATEFROMXML
(
    @BATCHMEMBERSHIPDUESID uniqueidentifier,
    @CHILDREN 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.BATCHMEMBERSHIPDUESMEMBER as target
    using (
        select
            ID,
            CONSTITUENTID
        from dbo.UFN_MEMBERSHIPDUESBATCH_GETCHILDREN_FROMITEMLISTXML(@CHILDREN)
    ) as source
        on target.BATCHMEMBERSHIPDUESID = @BATCHMEMBERSHIPDUESID and source.ID = target.ID and target.TYPECODE = 1 
    when not matched by target then
        insert (ID, BATCHMEMBERSHIPDUESID, CONSTITUENTID, TYPECODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
        values (newID(), @BATCHMEMBERSHIPDUESID, source.CONSTITUENTID, 1, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE)
    when matched and source.CONSTITUENTID <> target.CONSTITUENTID then
        update set target.CONSTITUENTID = source.CONSTITUENTID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
    when not matched by source and target.BATCHMEMBERSHIPDUESID = @BATCHMEMBERSHIPDUESID and target.TYPECODE = 1 then
        delete;

end