USP_DATAFORMTEMPLATE_EDIT_SALESORDERITEM_OVERRIDE

The save procedure used by the edit dataform template "Sales Order Item Override 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.
@PRICE money IN Cost

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SALESORDERITEM_OVERRIDE (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @PRICE money
)
as
    set nocount on;

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

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

    begin try
        if @PRICE < 0 begin
            raiserror('BBERR_SALESORDERITEMOVERRIDE_NEGATIVEPRICE', 13, 1);
        end

        declare @SALESORDERID uniqueidentifier;
        declare @SALESORDERSTATUS int;

        select
            @SALESORDERID = SALESORDERITEM.SALESORDERID,
            @SALESORDERSTATUS = SALESORDER.STATUSCODE
        from dbo.SALESORDER
        inner join dbo.SALESORDERITEM on SALESORDERITEM.SALESORDERID = SALESORDER.ID
        where SALESORDERITEM.ID = @ID;

        if @SALESORDERSTATUS = 1
            raiserror('BBERR_SALESORDER_COMPLETE', 13, 1);

        if @SALESORDERSTATUS = 5
            raiserror('BBERR_SALESORDER_CANCELLED', 13, 1);

        -- handle updating the data
        update dbo.SALESORDERITEM set
            FLATRATEPRICE = @PRICE,
            PRICINGSTRUCTURECODE = 2, -- Override Total
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID = @ID

        -- recalculate taxes
        exec dbo.USP_SALESORDER_CALCULATETAXES @SALESORDERID, @CHANGEAGENTID;
    end try

    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

    return 0;