USP_DATAFORMTEMPLATE_EDIT_SALESORDERITEM

The save procedure used by the edit dataform template "Sales Order Item Edit Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@QUANTITY smallint IN Quantity

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SALESORDERITEM (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @QUANTITY smallint
)
as
    set nocount on;

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

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

    begin try
        if @QUANTITY <= 0
            raiserror('BBERR_QUANTITY_GREATERTHANZERO', 13, 1);

        declare @ORDERID uniqueidentifier;
        declare @EVENTID uniqueidentifier;

        select
            @ORDERID = SALESORDERITEM.SALESORDERID,
            @EVENTID = SALESORDERITEMTICKET.EVENTID
        from dbo.SALESORDERITEM with (nolock)
        inner join dbo.SALESORDERITEMTICKET with (nolock) on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
        where SALESORDERITEM.ID = @ID;

        if @EVENTID is not null
        begin
            -- Check availability
            if dbo.UFN_SALESORDERTICKET_VALIDQUANTITY(@EVENTID, @ORDERID, @QUANTITY) = 0
            begin
                raiserror('ERR_TICKETINSERT_UNAVAILABLE', 13, 1)
            end
        end

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

        update dbo.SALESORDERITEM set
            QUANTITY = @QUANTITY,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID = @ID;

        exec dbo.USP_SALESORDER_CALCULATEFEES @ORDERID, @CHANGEAGENTID;
        exec dbo.USP_SALESORDER_APPLYITEMDISCOUNTS @ORDERID, @CHANGEAGENTID;
        exec dbo.USP_SALESORDER_APPLYORDERDISCOUNTS @ORDERID, @CHANGEAGENTID;
        exec dbo.USP_SALESORDER_CALCULATETAXES @ORDERID, @CHANGEAGENTID;

    end try
    begin catch
        if ERROR_NUMBER() = 8115
        begin
            raiserror('ERR_TICKETINSERT_MONEYOVERFLOW', 13, 1);
        end

        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

    return 0;