USP_DATAFORMTEMPLATE_EDIT_COMBINATIONAVAILABILITY

The save procedure used by the edit dataform template "Combination Availability 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.
@ALLOWDAILYSALES bit IN
@ALLOWADVANCESALES bit IN
@ALLOWONLINESALES bit IN Online
@ALLOWMONDAY bit IN Monday
@ALLOWTUESDAY bit IN Tuesday
@ALLOWWEDNESDAY bit IN Wednesday
@ALLOWTHURSDAY bit IN Thursday
@ALLOWFRIDAY bit IN Friday
@ALLOWSATURDAY bit IN Saturday
@ALLOWSUNDAY bit IN Sunday
@ALLOWCOMBINATIONDATEFROM datetime IN From
@ALLOWCOMBINATIONDATETO datetime IN To
@ALLOWCOMBINATIONTIMEFROM UDT_HOURMINUTE IN From
@ALLOWCOMBINATIONTIMETO UDT_HOURMINUTE IN To

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_COMBINATIONAVAILABILITY
(
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @ALLOWDAILYSALES bit,
    @ALLOWADVANCESALES bit,
    @ALLOWONLINESALES bit,
    @ALLOWMONDAY bit,
    @ALLOWTUESDAY bit,
    @ALLOWWEDNESDAY bit,
    @ALLOWTHURSDAY bit,
    @ALLOWFRIDAY bit,
    @ALLOWSATURDAY bit,
    @ALLOWSUNDAY bit,
    @ALLOWCOMBINATIONDATEFROM datetime,
    @ALLOWCOMBINATIONDATETO datetime,
    @ALLOWCOMBINATIONTIMEFROM dbo.UDT_HOURMINUTE,
    @ALLOWCOMBINATIONTIMETO dbo.UDT_HOURMINUTE
)
as
    set nocount on;

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

    declare @CURRENTDATE datetime = getdate();

    begin try
        update dbo.COMBINATIONAVAILABILITY set
            ALLOWMONDAY = @ALLOWMONDAY,
            ALLOWTUESDAY = @ALLOWTUESDAY,
            ALLOWWEDNESDAY = @ALLOWWEDNESDAY,
            ALLOWTHURSDAY = @ALLOWTHURSDAY,
            ALLOWFRIDAY = @ALLOWFRIDAY,
            ALLOWSATURDAY = @ALLOWSATURDAY,
            ALLOWSUNDAY = @ALLOWSUNDAY,
            ALLOWCOMBINATIONDATEFROM = @ALLOWCOMBINATIONDATEFROM,
            ALLOWCOMBINATIONDATETO = @ALLOWCOMBINATIONDATETO,
            ALLOWCOMBINATIONTIMEFROM = @ALLOWCOMBINATIONTIMEFROM,
            ALLOWCOMBINATIONTIMETO = @ALLOWCOMBINATIONTIMETO,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where
            ID = @ID;

        declare @SALESMETHODID uniqueidentifier = dbo.UFN_SALESMETHOD_GETIDFROMTYPECODE(0);  -- Daily Sales

        if @ALLOWDAILYSALES = 1 begin
            if not exists (select 1 from dbo.COMBINATIONAVAILABILITYSALESMETHOD where COMBINATIONAVAILABILITYID = @ID and SALESMETHODID = @SALESMETHODID) begin
                insert into dbo.COMBINATIONAVAILABILITYSALESMETHOD (
                    ID,
                    COMBINATIONAVAILABILITYID,
                    SALESMETHODID,
                    ADDEDBYID,
                    CHANGEDBYID,
                    DATEADDED,
                    DATECHANGED
                ) values (
                    newid(),
                    @ID,
                    @SALESMETHODID,
                    @CHANGEAGENTID,
                    @CHANGEAGENTID,
                    @CURRENTDATE,
                    @CURRENTDATE
                );
            end
        end else begin
            delete from dbo.COMBINATIONAVAILABILITYSALESMETHOD where COMBINATIONAVAILABILITYID = @ID and SALESMETHODID = @SALESMETHODID;
        end

        set @SALESMETHODID = dbo.UFN_SALESMETHOD_GETIDFROMTYPECODE(1);  -- Advance Sales

        if @ALLOWADVANCESALES = 1 begin
            if not exists (select 1 from dbo.COMBINATIONAVAILABILITYSALESMETHOD where COMBINATIONAVAILABILITYID = @ID and SALESMETHODID = @SALESMETHODID) begin
                insert into dbo.COMBINATIONAVAILABILITYSALESMETHOD (
                    ID,
                    COMBINATIONAVAILABILITYID,
                    SALESMETHODID,
                    ADDEDBYID,
                    CHANGEDBYID,
                    DATEADDED,
                    DATECHANGED
                ) values (
                    newid(),
                    @ID,
                    @SALESMETHODID,
                    @CHANGEAGENTID,
                    @CHANGEAGENTID,
                    @CURRENTDATE,
                    @CURRENTDATE
                );
            end
        end else begin
            delete from dbo.COMBINATIONAVAILABILITYSALESMETHOD where COMBINATIONAVAILABILITYID = @ID and SALESMETHODID = @SALESMETHODID;
        end

        set @SALESMETHODID = dbo.UFN_SALESMETHOD_GETIDFROMTYPECODE(2);  -- Online Sales

        if @ALLOWONLINESALES = 1 begin
            declare @COMBINATIONID uniqueidentifier;

            select @COMBINATIONID = COMBINATIONID from dbo.COMBINATIONAVAILABILITY where ID = @ID;

            if dbo.UFN_COMBINATION_CANBEONLINE(@COMBINATIONID) = 0 begin
                raiserror('BBERR_COMBINATIONAVAILABILITY_NOTALLOWEDONLINE', 13, 1);
            end

            if not exists (select 1 from dbo.COMBINATIONAVAILABILITYSALESMETHOD where COMBINATIONAVAILABILITYID = @ID and SALESMETHODID = @SALESMETHODID) begin
                insert into dbo.COMBINATIONAVAILABILITYSALESMETHOD (
                    ID,
                    COMBINATIONAVAILABILITYID,
                    SALESMETHODID,
                    ADDEDBYID,
                    CHANGEDBYID,
                    DATEADDED,
                    DATECHANGED
                ) values (
                    newid(),
                    @ID,
                    @SALESMETHODID,
                    @CHANGEAGENTID,
                    @CHANGEAGENTID,
                    @CURRENTDATE,
                    @CURRENTDATE
                );
            end
        end else begin
            delete from dbo.COMBINATIONAVAILABILITYSALESMETHOD where COMBINATIONAVAILABILITYID = @ID and SALESMETHODID = @SALESMETHODID;
        end
    end try

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

    return 0;