USP_DATAFORMTEMPLATE_ADD_SALESORDERITEMMERCHANDISEITEMS

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@SALESORDERID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@ITEMS xml IN

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_SALESORDERITEMMERCHANDISEITEMS
(
    @ID uniqueidentifier = null output,
    @SALESORDERID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @ITEMS xml = ''
)
as

set nocount on;

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

declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()

begin try

    exec dbo.USP_SALESORDER_ISCOMPLETE_RAISERROR @SALESORDERID, @EXCLUDEGROUPSALES = 1;

    declare @MERCHANDISEPRODUCTINSTANCEID uniqueidentifier
    declare @QUANTITY decimal (10, 2)

    declare MERCHANDISE_ITEMS cursor local fast_forward for
    select
        T.items.value('(ID)[1]','uniqueidentifier') as 'ID',
        T.items.value('(QUANTITY)[1]','integer') as 'QUANTITY'
    from 
        @ITEMS.nodes('/ITEMS/ITEM') T(items)

    open MERCHANDISE_ITEMS
    fetch next from MERCHANDISE_ITEMS into @MERCHANDISEPRODUCTINSTANCEID, @QUANTITY
    while @@fetch_status = 0
    begin
        set @ID = newid()
        exec dbo.USP_SALESORDERITEMMERCHANDISE_ADD @ID, @SALESORDERID, @CHANGEAGENTID, @CURRENTDATE, @MERCHANDISEPRODUCTINSTANCEID, @QUANTITY
        fetch next from MERCHANDISE_ITEMS into @MERCHANDISEPRODUCTINSTANCEID, @QUANTITY
    end
    close MERCHANDISE_ITEMS
    deallocate MERCHANDISE_ITEMS

end try

begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
end catch

return 0