USP_DATAFORMTEMPLATE_ADD_DAILYSALESORDERITEM
The save procedure used by the add dataform template "Daily Sales Order Item Add Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@SALESORDERID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@PROGRAMID | uniqueidentifier | IN | Program |
@QUANTITY | smallint | IN | Quantity |
@PRICETYPECODEID | uniqueidentifier | IN | Price type |
@PRICE | money | IN | |
@DAILYSALESADMISSIONBUTTONID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_DAILYSALESORDERITEM
(
@ID uniqueidentifier = null output,
@SALESORDERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@PROGRAMID uniqueidentifier = null,
@QUANTITY smallint = null,
@PRICETYPECODEID uniqueidentifier = null,
@PRICE money = null,
@DAILYSALESADMISSIONBUTTONID uniqueidentifier = null
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate();
if @DAILYSALESADMISSIONBUTTONID is not null begin
select
@PROGRAMID = DAILYSALEITEMPROGRAM.PROGRAMID,
@PRICETYPECODEID = DAILYSALEITEMPROGRAM.PRICETYPECODEID,
@PRICE = FACEPRICE
from dbo.DAILYSALEITEMPROGRAM
inner join dbo.PROGRAMPRICE
on PROGRAMPRICE.PROGRAMID = DAILYSALEITEMPROGRAM.PROGRAMID
and PROGRAMPRICE.PRICETYPECODEID = DAILYSALEITEMPROGRAM.PRICETYPECODEID
where DAILYSALEITEMPROGRAM.ID = @DAILYSALESADMISSIONBUTTONID
end
declare @EXISTINGID uniqueidentifier = dbo.UFN_SALESORDERITEM_GETEXISTINGIDFORPROGRAM(@SALESORDERID, @PROGRAMID, @PRICETYPECODEID);
begin try
exec dbo.USP_SALESORDER_ISCOMPLETE_RAISERROR @SALESORDERID, @EXCLUDEGROUPSALES = 1;
--new one
if @EXISTINGID is null begin
if @ID is null
set @ID = newid();
declare @PROGRAMNAME nvarchar(100);
declare @PROGRAMCATEGORYCODEDESCRIPTION nvarchar(100);
select
@PROGRAMNAME = PROGRAM.NAME,
@PROGRAMCATEGORYCODEDESCRIPTION = isnull(PROGRAMCATEGORYCODE.DESCRIPTION, N'')
from
dbo.PROGRAM
left outer join
dbo.PROGRAMCATEGORYCODE on PROGRAMCATEGORYCODE.ID = PROGRAM.PROGRAMCATEGORYCODEID
where
PROGRAM.ID = @PROGRAMID;
insert into dbo.SALESORDERITEM
(ID, SALESORDERID, TYPECODE, DESCRIPTION, QUANTITY, PRICE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
@ID,
@SALESORDERID,
0,
(select DESCRIPTION from dbo.PRICETYPECODE where ID = @PRICETYPECODEID) + ' - ' + @PROGRAMNAME,
@QUANTITY,
@PRICE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
insert into dbo.SALESORDERITEMTICKET
(
ID,
PROGRAMID,
PROGRAMNAME,
PROGRAMCATEGORYNAME,
PRICETYPECODEID,
PRICE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
@ID,
@PROGRAMID,
@PROGRAMNAME,
@PROGRAMCATEGORYCODEDESCRIPTION,
@PRICETYPECODEID,
@PRICE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
end
else begin
--existing one
update dbo.SALESORDERITEM set
SALESORDERITEM.QUANTITY += @QUANTITY,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
SALESORDERITEM.ID = @EXISTINGID;
-- A bit of a hack considering this add form
-- may only be editing an existing record
set @ID = @EXISTINGID;
end
exec dbo.USP_SALESORDER_CALCULATEFEES @SALESORDERID, @CHANGEAGENTID;
exec dbo.USP_SALESORDER_APPLYITEMDISCOUNTS @SALESORDERID, @CHANGEAGENTID;
exec dbo.USP_SALESORDER_APPLYORDERDISCOUNTS @SALESORDERID, @CHANGEAGENTID;
exec dbo.USP_SALESORDER_CALCULATETAXES @SALESORDERID, @CHANGEAGENTID;
end try
begin catch
if ERROR_NUMBER() = 8115
raiserror('ERR_TICKETINSERT_MONEYOVERFLOW', 13, 1)
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0