USP_RESERVEDORDERRECALCULATE_UPDATE

Executes the "Reserved Order Recalculate" record operation.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the ID of the record being updated.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the update.

Definition

Copy


        CREATE procedure dbo.USP_RESERVEDORDERRECALCULATE_UPDATE
        (
            @ID uniqueidentifier,
            @CHANGEAGENTID uniqueidentifier
        )
        as begin

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

            exec dbo.USP_SALESORDER_CALCULATEFEES @ID, @CHANGEAGENTID;

            exec dbo.USP_SALESORDER_APPLYITEMDISCOUNTS @ID, @CHANGEAGENTID;
            exec dbo.USP_SALESORDER_APPLYORDERDISCOUNTS @ID, @CHANGEAGENTID;

            exec dbo.USP_SALESORDER_CALCULATETAXES @ID, @CHANGEAGENTID;

            -- Check event registration

            if exists ( select SALESORDERITEM.ID 
                            from dbo.[SALESORDERITEM]
                                inner join dbo.[SALESORDER] on [SALESORDER].[ID] = [SALESORDERITEM].[SALESORDERID]
                                inner join dbo.[SALESORDERITEMEVENTREGISTRATION] on [SALESORDERITEM].[ID] = [SALESORDERITEMEVENTREGISTRATION].[ID]
                                inner join dbo.[REGISTRANT] on [SALESORDERITEMEVENTREGISTRATION].[REGISTRANTID] = [REGISTRANT].[ID]
                                inner join dbo.[EVENT] on [REGISTRANT].[EVENTID] = [EVENT].[ID]
                            where 
                                [SALESORDER].[ID] = @ID and
                                dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID) < SALESORDERITEM.TOTAL)
                update SALESORDERITEM set PRICE = dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID)
                from dbo.[SALESORDERITEM]
                  inner join dbo.[SALESORDER] on [SALESORDER].[ID] = [SALESORDERITEM].[SALESORDERID]
                  inner join dbo.[SALESORDERITEMEVENTREGISTRATION] on [SALESORDERITEM].[ID] = [SALESORDERITEMEVENTREGISTRATION].[ID]
                  inner join dbo.[REGISTRANT] on [SALESORDERITEMEVENTREGISTRATION].[REGISTRANTID] = [REGISTRANT].[ID]
                  inner join dbo.[EVENT] on [REGISTRANT].[EVENTID] = [EVENT].[ID]
                where 
                    [SALESORDER].[ID] = @ID and
                    dbo.UFN_EVENTREGISTRANT_GETBALANCE(REGISTRANT.ID) < SALESORDERITEM.TOTAL

            -- Update LASTRECALCULATIONDATE field on SALESORDER table

            update SALESORDER set LASTRECALCULATIONDATE = getdate()
            where ID = @ID

            return 0;

      end