USP_DATAFORMTEMPLATE_ADD_MERCHANDISEPRODUCTINSTANCE
The save procedure used by the add dataform template "Merchandise Item Instance Add Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@MERCHANDISEPRODUCTID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@COST | money | IN | Cost |
@SALEPRICE | money | IN | Sale price |
@ONHANDQUANTITY | int | IN | Quantity |
@OPTIONCOUNT | int | IN | Option count |
@OPTION1ID | uniqueidentifier | IN | Option 1 ID |
@OPTION2ID | uniqueidentifier | IN | Option 2 ID |
@OPTION3ID | uniqueidentifier | IN | Option 3 ID |
@OPTION1VALUE | uniqueidentifier | IN | Option 1 value |
@OPTION2VALUE | uniqueidentifier | IN | Option 2 value |
@OPTION3VALUE | uniqueidentifier | IN | Option 3 value |
@LOOKUPCODE | nvarchar(25) | IN | UPC |
@LOOKUPITEMS | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_MERCHANDISEPRODUCTINSTANCE
(
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@MERCHANDISEPRODUCTID uniqueidentifier,
@COST money = null,
@SALEPRICE money = null,
@ONHANDQUANTITY integer = 0,
@OPTIONCOUNT integer = 0,
@OPTION1ID uniqueidentifier = null,
@OPTION2ID uniqueidentifier = null,
@OPTION3ID uniqueidentifier = null,
@OPTION1VALUE uniqueidentifier = null,
@OPTION2VALUE uniqueidentifier = null,
@OPTION3VALUE uniqueidentifier = null,
@LOOKUPCODE nvarchar(25) = null,
@LOOKUPITEMS xml = null
)
as
set nocount on;
if @ID is null
set @ID = newid()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
begin try
if @OPTIONCOUNT > 0
begin
if exists(
select 1
from dbo.MERCHANDISEPRODUCTINSTANCE
where MERCHANDISEPRODUCTINSTANCE.MERCHANDISEPRODUCTID = @MERCHANDISEPRODUCTID
and exists(
select 1
from dbo.MERCHANDISEPRODUCTINSTANCEOPTIONVALUE
where MERCHANDISEPRODUCTINSTANCEOPTIONVALUE.MERCHANDISEPRODUCTINSTANCEID = MERCHANDISEPRODUCTINSTANCE.ID
and MERCHANDISEPRODUCTINSTANCEOPTIONVALUE.MERCHANDISEPRODUCTOPTIONVALUEID = @OPTION1VALUE
)
and (@OPTION2ID is null or exists(
select 1
from dbo.MERCHANDISEPRODUCTINSTANCEOPTIONVALUE
where MERCHANDISEPRODUCTINSTANCEOPTIONVALUE.MERCHANDISEPRODUCTINSTANCEID = MERCHANDISEPRODUCTINSTANCE.ID
and MERCHANDISEPRODUCTINSTANCEOPTIONVALUE.MERCHANDISEPRODUCTOPTIONVALUEID = @OPTION2VALUE
))
and (@OPTION3ID is null or exists(
select 1
from dbo.MERCHANDISEPRODUCTINSTANCEOPTIONVALUE
where MERCHANDISEPRODUCTINSTANCEOPTIONVALUE.MERCHANDISEPRODUCTINSTANCEID = MERCHANDISEPRODUCTINSTANCE.ID
and MERCHANDISEPRODUCTINSTANCEOPTIONVALUE.MERCHANDISEPRODUCTOPTIONVALUEID = @OPTION3VALUE
))
)
begin
raiserror('ERR_MERCHANDISEPRODUCTINSTANCE_OPTIONSNOTUNIQUE', 13, 1);
return 1
end
declare @OPTIONTABLE table(OPTIONID uniqueidentifier, OPTIONVALUEID uniqueidentifier);
insert into @OPTIONTABLE values (@OPTION1ID, @OPTION1VALUE)
insert into @OPTIONTABLE values (@OPTION2ID, @OPTION2VALUE)
insert into @OPTIONTABLE values (@OPTION3ID, @OPTION3VALUE)
insert into dbo.MERCHANDISEPRODUCTINSTANCE
(ID, MERCHANDISEPRODUCTID, COST, SALEPRICE, ONHANDQUANTITY, LOOKUPCODE,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(@ID, @MERCHANDISEPRODUCTID, @COST, @SALEPRICE, @ONHANDQUANTITY, @LOOKUPCODE,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
insert into dbo.MERCHANDISEPRODUCTINSTANCEVENDOR
(ID, MERCHANDISEPRODUCTINSTANCEID, COST, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(newid(), @ID, @COST, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
--insert lookup codes
exec dbo.USP_MERCHANDISEPRODUCTINSTANCE_GETLOOKUPITEMS_ADDFROMXML @ID, @LOOKUPITEMS, @CHANGEAGENTID
--insert new product instance options
insert into dbo.MERCHANDISEPRODUCTINSTANCEOPTIONVALUE
(ID, MERCHANDISEPRODUCTINSTANCEID, MERCHANDISEPRODUCTOPTIONVALUEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
newid(),
@ID,
O.OPTIONVALUEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@OPTIONTABLE O
where O.OPTIONID is not null;
end
else
begin
insert into dbo.MERCHANDISEPRODUCTINSTANCE
(ID, MERCHANDISEPRODUCTID, COST, SALEPRICE, ONHANDQUANTITY, LOOKUPCODE,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(@ID, @MERCHANDISEPRODUCTID, @COST, @SALEPRICE, @ONHANDQUANTITY, @LOOKUPCODE,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
insert into dbo.MERCHANDISEPRODUCTINSTANCEVENDOR
(ID, MERCHANDISEPRODUCTINSTANCEID, COST, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(newid(), @ID, @COST, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
--insert lookup codes
exec dbo.USP_MERCHANDISEPRODUCTINSTANCE_GETLOOKUPITEMS_ADDFROMXML @ID, @LOOKUPITEMS, @CHANGEAGENTID
end
if dbo.UFN_MERCHANDISEPRODUCTINSTANCE_CHECKOPTIONCOUNT(@ID) = 0
begin
raiserror('ERR_MERCHANDISEPRODUCTINSTANCE_OPTIONCOUNTNOTCORRECT', 13, 1);
return 1
end
if @ONHANDQUANTITY > 0
begin
declare @CURRENTDATETIMEOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(sysutcdatetime(), 1);
declare @VENDORID uniqueidentifier = null;
select
@VENDORID = VENDORID
from dbo.PRODUCTVENDOR
where PRODUCTID = @MERCHANDISEPRODUCTID;
insert into dbo.MERCHANDISEPRODUCTINSTANCEHISTORY
(ID, SOURCETYPECODE, ACTIONTYPECODE, ACTIONDATE, MERCHANDISEPRODUCTINSTANCEID, QUANTITY, ONHANDQUANTITY, COST, AVERAGECOST, SALEPRICE, BATCHID, VENDORID, MERCHANDISEADJUSTMENTREASONCODEID, COMMENTS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(newID(), 0, 2, @CURRENTDATETIMEOFFSET, @ID, @ONHANDQUANTITY, 0, @COST, @COST, @SALEPRICE, null, @VENDORID, null, '', @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0