USP_DATAFORMTEMPLATE_EDIT_DISCOUNTPROGRAM

The save procedure used by the edit dataform template "Discount Program Edit Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@PROGRAMID uniqueidentifier IN Program

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_DISCOUNTPROGRAM (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @PROGRAMID uniqueidentifier
)
as
    set nocount on;

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

    declare @CURRENTDATE datetime = getdate();
    declare @DISCOUNTID uniqueidentifier = (select DISCOUNTID from dbo.DISCOUNTGROUP where ID = @ID);

    begin try
        --Trigger a timestamp change on the discount group to prevent concurrency issues

        update dbo.DISCOUNTGROUP set
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID = @ID;

        update dbo.DISCOUNTGROUPDETAILPROGRAM set
            PROGRAMID = @PROGRAMID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID in (
            select DGDP.ID
            from dbo.DISCOUNTGROUPDETAILPROGRAM DGDP
            inner join dbo.DISCOUNTGROUPDETAIL DGD on DGD.ID = DGDP.ID
            inner join dbo.DISCOUNTGROUP DG on DG.ID = DGD.DISCOUNTGROUPID
            where DG.ID = @ID
        );

        -- Update the DISCOUNT record to invalidate the cache for sales.

        update dbo.DISCOUNT
        set CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CURRENTDATE
        where ID = @DISCOUNTID;

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

    return 0;