USP_DATAFORMTEMPLATE_ADD_MERCHANDISEPRODUCTLABELPRINT

The save procedure used by the add dataform template "Merchandise Item Label Print 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.
@PRINTSESSIONID uniqueidentifier IN Print session ID
@PRODUCTLABELS xml IN Labels to print
@EXPORT bit IN Export to file
@LABELPRINTFORMATCODE tinyint IN Label print format

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_MERCHANDISEPRODUCTLABELPRINT
(
    @ID uniqueidentifier = null output,
    @CHANGEAGENTID uniqueidentifier = null,
    @MERCHANDISEPRODUCTID uniqueidentifier,
    @PRINTSESSIONID uniqueidentifier = null,
    @PRODUCTLABELS xml = null,
    @EXPORT bit = null,
    @LABELPRINTFORMATCODE tinyint = 0
)
as

set nocount on;

if not exists (select * from @PRODUCTLABELS.nodes('/PRODUCTLABELS/ITEM') T(item) where T.item.value('(QUANTITYTOPRINT)[1]','integer') > 0)
begin
    if @EXPORT <> 0
        raiserror('ERR_MERCHANDISEPRODUCTLABELPRINT_QUANTITYEXPORT', 13, 1);
    else
        raiserror('ERR_MERCHANDISEPRODUCTLABELPRINT_QUANTITYPRINT', 13, 1);

    return 1
end    

if @PRINTSESSIONID is null
    set @PRINTSESSIONID = newid()

set @ID = @PRINTSESSIONID

if @CHANGEAGENTID is null  
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()

begin try    

    declare @PREVIOUSPRINTSESSION uniqueidentifier = newid()

    update dbo.MERCHANDISEPRODUCTLABLEPRINTHISTORY set
        PRINTSESSIONID = @PREVIOUSPRINTSESSION,
        CHANGEDBYID = @CHANGEAGENTID,
        DATECHANGED = @CURRENTDATE
    where PRINTSESSIONID = @PRINTSESSIONID

    insert into dbo.MERCHANDISEPRODUCTLABLEPRINTHISTORY
        (ID,
        MERCHANDISEPRODUCTID,
        MERCHANDISEPRODUCTINSTANCEID,
        ITEMDETAILS,
        PRINTSESSIONID,
        QUANTITY,
        BARCODE,
        SALEPRICE,
        ISEXPORT,
        LABELPRINTFORMATCODE,
        ADDEDBYID,
        CHANGEDBYID,
        DATEADDED,
        DATECHANGED)
    select
        newid(),
        @MERCHANDISEPRODUCTID,
        T.item.value('(ID)[1]','uniqueidentifier'),
        MERCHANDISEPRODUCTINSTANCE.ITEMDETAILS,
        @PRINTSESSIONID,
        T.item.value('(QUANTITYTOPRINT)[1]','integer'),
        MERCHANDISEPRODUCTINSTANCE.BARCODE,
        MERCHANDISEPRODUCTINSTANCE.SALEPRICE,
        @EXPORT,
        @LABELPRINTFORMATCODE,
        @CHANGEAGENTID,
        @CHANGEAGENTID,
        @CURRENTDATE,        
        @CURRENTDATE
    from 
        @PRODUCTLABELS.nodes('/PRODUCTLABELS/ITEM') T(item) inner join dbo.MERCHANDISEPRODUCTINSTANCE on
            T.item.value('(ID)[1]','uniqueidentifier') = MERCHANDISEPRODUCTINSTANCE.ID
    where
        T.item.value('(QUANTITYTOPRINT)[1]','integer') > 0

end try

begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
end catch

return 0