USP_DATAFORMTEMPLATE_EDIT_COMBINATION
The save procedure used by the edit dataform template "Combination 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. |
@NAME | nvarchar(100) | IN | Name |
@DESCRIPTION | nvarchar(255) | IN | Description |
@EVENTSSAMEDAY | bit | IN | Selected events must occur on same day |
@PRICETYPES | xml | IN | Prices |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_COMBINATION (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@NAME nvarchar(100),
@DESCRIPTION nvarchar(255),
@EVENTSSAMEDAY bit,
@PRICETYPES xml
)
as
set nocount on;
if @CHANGEAGENTID is null begin
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
end
declare @CURRENTDATE datetime = getdate();
begin try
if @EVENTSSAMEDAY = 0 and dbo.UFN_COMBINATION_HASONLINEAVAILABILITY(@ID) = 1 begin
raiserror('BBERR_COMBINATIONEDIT_ONLINECOMBOMUSTBESAMEDAY', 13, 1);
end
declare @PRICETYPESTABLE table (
ID uniqueidentifier,
PRICETYPECODEID uniqueidentifier,
SEQUENCE int
);
insert into @PRICETYPESTABLE
select
ID,
PRICETYPECODEID,
SEQUENCE
from dbo.UFN_COMBINATION_GETPRICETYPES_FROMITEMLISTXML(@PRICETYPES);
-- Check for daily sales buttons
if exists (
select 1
from dbo.DAILYSALEITEMCOMBINATION
where COMBINATIONID = @ID
and PRICETYPECODEID not in (select PRICETYPECODEID from @PRICETYPESTABLE)
) begin
raiserror('BBERR_DAILYSALES_COMBOPRICETYPEINUSE', 13, 1)
end
update dbo.COMBINATION set
NAME = @NAME,
DESCRIPTION = @DESCRIPTION,
EVENTSSAMEDAY = @EVENTSSAMEDAY,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID;
-- Ensures that existing price types will be matched even if
-- their ID column was changed by the UI
declare @PRICETYPESUPDATED xml = (
select
isnull(OLDPRICETYPES.ID, '00000000-0000-0000-0000-000000000000') as ID,
NEWPRICETYPES.PRICETYPECODEID,
NEWPRICETYPES.SEQUENCE
from @PRICETYPESTABLE as NEWPRICETYPES
left join (
select ID, PRICETYPECODEID, SEQUENCE
from dbo.COMBINATIONPRICETYPE where COMBINATIONID = @ID
) as OLDPRICETYPES on NEWPRICETYPES.PRICETYPECODEID = OLDPRICETYPES.PRICETYPECODEID
for xml raw('ITEM'),type,elements,root('PRICETYPES'),BINARY BASE64
);
exec dbo.USP_COMBINATION_GETPRICETYPES_UPDATEFROMXML @ID, @PRICETYPESUPDATED, @CHANGEAGENTID, @CURRENTDATE;
-- Add new price types into program groups
if exists(select PROGRAMGROUP.ID from dbo.PROGRAMGROUP where PROGRAMGROUP.COMBINATIONID = @ID) begin
insert into [PROGRAMGROUPPRICE] (
[ID],
[PROGRAMGROUPID],
[COMBINATIONPRICETYPEID],
[FACEPRICE],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
newid(),
[PROGRAMGROUP].[ID],
[COMBINATIONPRICETYPE].[ID],
0,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from dbo.COMBINATIONPRICETYPE
inner join dbo.COMBINATION on COMBINATIONPRICETYPE.COMBINATIONID = COMBINATION.ID
left join dbo.PROGRAMGROUPPRICE on COMBINATIONPRICETYPE.ID = PROGRAMGROUPPRICE.COMBINATIONPRICETYPEID
full outer join dbo.PROGRAMGROUP on PROGRAMGROUP.COMBINATIONID = COMBINATION.ID
where COMBINATION.ID = @ID and PROGRAMGROUPPRICE.ID is null;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;