USP_DATAFORMTEMPLATE_ADD_MERCHANDISEPRODUCT
The save procedure used by the add dataform template "Merchandise Item 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. |
@PICTURE | varbinary | IN | Image |
@PICTURETHUMBNAIL | varbinary | IN | Image thumbnail |
@NAME | nvarchar(50) | IN | Name |
@DESCRIPTION | nvarchar(255) | IN | Description |
@MERCHANDISEDEPARTMENTID | uniqueidentifier | IN | Department |
@MERCHANDISEDEPARTMENTCATEGORYID | uniqueidentifier | IN | Category |
@VENDORID | uniqueidentifier | IN | Vendor |
@ISDISCOUNTABLE | bit | IN | Discounts allowed |
@ONHANDQUANTITY | int | IN | Quantity |
@SALEPRICE | money | IN | Sale price |
@COST | money | IN | Cost |
@HASOPTIONS | bit | IN | Merchandise includes dimensions |
@OPTIONITEMS | xml | IN | Options |
@LOOKUPCODE | nvarchar(25) | IN | UPC |
@PICTURECHANGED | bit | IN | Picture changed |
@TAXID | uniqueidentifier | IN | |
@LOOKUPITEMS | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_MERCHANDISEPRODUCT
(
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@PICTURE varbinary(max) = null,
@PICTURETHUMBNAIL varbinary(max) = null,
@NAME nvarchar(50) = '',
@DESCRIPTION nvarchar(255) = '',
@MERCHANDISEDEPARTMENTID uniqueidentifier = null,
@MERCHANDISEDEPARTMENTCATEGORYID uniqueidentifier = null,
@VENDORID uniqueidentifier = null,
@ISDISCOUNTABLE bit = 1,
@ONHANDQUANTITY integer = 0,
@SALEPRICE money = 0,
@COST money = 0,
@HASOPTIONS bit = 0,
@OPTIONITEMS xml = null,
@LOOKUPCODE nvarchar(25) = null,
@PICTURECHANGED bit = null,
@TAXID uniqueidentifier = 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 @PICTURECHANGED = 0
begin
set @PICTURE = null
set @PICTURETHUMBNAIL = null
end
if exists(select 1 from dbo.PRODUCT where NAME = @NAME)
raiserror('BBERR_PRODUCTNAME_NOTUNIQUE',13,1)
if @HASOPTIONS = 1
begin
if exists(
select 1 from @OPTIONITEMS.nodes('/OPTIONITEMS/ITEM') T1(items)
where (
select count(*) from @OPTIONITEMS.nodes('/OPTIONITEMS/ITEM') T2(items)
where T2.items.value('(OPTIONGROUP)[1]','nvarchar(50)') = T1.items.value('(OPTIONGROUP)[1]','nvarchar(50)')
) > 1
)
raiserror('BBERR_OPTIONSNOTUNIQUE',13,1)
end
if @ISDISCOUNTABLE = 1 and dbo.UFN_MERCHANDISEDEPARTMENT_ISDISCOUNTABLE(@MERCHANDISEDEPARTMENTID) = 0
raiserror('BBERR_DEPARTMENTNOTDISCOUNTABLE', 13, 1);
insert into dbo.PRODUCT
(ID, NAME, DESCRIPTION, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(@ID, @NAME, @DESCRIPTION, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
insert into dbo.MERCHANDISEPRODUCT
(ID, MERCHANDISEDEPARTMENTID, MERCHANDISEDEPARTMENTCATEGORYID, ONHANDQUANTITY,
PICTURE, PICTURETHUMBNAIL, ISDISCOUNTABLE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TAXID)
values
(@ID, @MERCHANDISEDEPARTMENTID, @MERCHANDISEDEPARTMENTCATEGORYID, @ONHANDQUANTITY,
@PICTURE, @PICTURETHUMBNAIL, @ISDISCOUNTABLE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @TAXID)
insert into dbo.PRODUCTVENDOR
(ID, VENDORID, PRODUCTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(newid(), @VENDORID, @ID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
if @HASOPTIONS = 0
begin
declare @MERCHANDISEPRODUCTINSTANCEID uniqueidentifier = newID();
declare @CURRENTDATETIMEOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(sysutcdatetime(), 1);
insert into dbo.MERCHANDISEPRODUCTINSTANCE
(ID, MERCHANDISEPRODUCTID, COST, SALEPRICE, ONHANDQUANTITY, LOOKUPCODE, ISACTIVE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(@MERCHANDISEPRODUCTINSTANCEID, @ID, @COST, @SALEPRICE, @ONHANDQUANTITY, @LOOKUPCODE, 1, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
insert into dbo.MERCHANDISEPRODUCTINSTANCEVENDOR
(ID, MERCHANDISEPRODUCTINSTANCEID, COST, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(newID(), @MERCHANDISEPRODUCTINSTANCEID, @COST, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
-- insert lookup codes
exec dbo.USP_MERCHANDISEPRODUCTINSTANCE_GETLOOKUPITEMS_ADDFROMXML @MERCHANDISEPRODUCTINSTANCEID, @LOOKUPITEMS, @CHANGEAGENTID
if @ONHANDQUANTITY > 0
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, @MERCHANDISEPRODUCTINSTANCEID, @ONHANDQUANTITY, 0, @COST, @COST, @SALEPRICE, null, @VENDORID, null, '', @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
else
begin
insert into dbo.MERCHANDISEPRODUCTOPTION
(ID, MERCHANDISEPRODUCTID, NAME, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
newid(),
@ID,
T.items.value('(OPTIONGROUP)[1]','nvarchar(50)'),
isnull(T.items.value('(SEQUENCE)[1]','int'),0),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@OPTIONITEMS.nodes('/OPTIONITEMS/ITEM') T(items)
end
-- Set up sales method availability
insert into dbo.MERCHANDISEPRODUCTSALESMETHOD
(ID,MERCHANDISEPRODUCTID,SALESMETHODID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
select
newid(),
@ID,
SM.ID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from dbo.SALESMETHOD SM
-- only configure daily sales for now
where SM.TYPECODE = 0
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0