USP_DATAFORMTEMPLATE_VIEW_CREDITORDERVIEW2

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@DATALOADED bit INOUT
@ITEMS xml INOUT
@TOTAL money INOUT
@PAYMENTS xml INOUT
@TAXES xml INOUT
@TAXESBYITEM xml INOUT
@ORDERDISCOUNTS money INOUT
@OTHERPAYMENTMETHODS xml INOUT
@TRANSACTIONID uniqueidentifier INOUT
@TIMESTAMP bigint INOUT
@CONSTITUENTID uniqueidentifier INOUT
@CONSTITUENTNAME nvarchar(154) INOUT
@ORDERNUMBER int INOUT
@ORDERHASTICKETS bit INOUT

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CREDITORDERVIEW2
(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @ITEMS xml = null output,
    @TOTAL money = null output,
    @PAYMENTS xml = null output,
    @TAXES xml = null output,
    @TAXESBYITEM xml = null output,
    @ORDERDISCOUNTS money = null output,
    @OTHERPAYMENTMETHODS xml = null output,
    @TRANSACTIONID uniqueidentifier = null output,
    @TIMESTAMP bigint = null output,
    @CONSTITUENTID uniqueidentifier = null output,
    @CONSTITUENTNAME nvarchar(154) = null output,
    @ORDERNUMBER int = null output,
    @ORDERHASTICKETS bit = null output
)
as
    set nocount on;

    set @DATALOADED = 0;

    begin try
        --Error if it's a group sales order
        if exists (select * from dbo.RESERVATION where ID = @ID) begin
            raiserror('The selected order is a group sales order.  Group sales orders may not be refunded.', 13, 1);
        end

        declare @CHANGEAGENTID uniqueidentifier;
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

        declare @CURRENTDATE datetime = getdate();

        select
            @DATALOADED = 1,
            @ITEMS = dbo.UFN_CREDIT_GETSALESORDERITEMS2_TOITEMLISTXML(@ID),
            @PAYMENTS = dbo.UFN_CREDIT_GETORDERPAYMENTS_2_TOITEMLISTXML(@ID),
            @TAXES = dbo.UFN_CREDIT_GETSALESORDERTAXITEMS_TOITEMLISTXML(@ID),
            @TAXESBYITEM = dbo.UFN_CREDIT_GETTAXES_TOITEMLISTXML(@ID),
            @TIMESTAMP = TSLONG,
            @CONSTITUENTID = SALESORDER.CONSTITUENTID,
            @CONSTITUENTNAME = dbo.UFN_CONSTITUENTSEARCH_DISPLAYNAME(SALESORDER.CONSTITUENTID),
            @ORDERNUMBER = SEQUENCEID
        from dbo.SALESORDER
        where ID = @ID;

        select
            @ORDERDISCOUNTS = isnull(sum(SALESORDERITEMORDERDISCOUNTDETAIL.AMOUNT), 0)
        from
            dbo.SALESORDERITEM
        left join
            dbo.CREDITITEM_EXT as EXT on EXT.SALESORDERITEMID = SALESORDERITEM.ID
        inner join
            dbo.SALESORDERITEMORDERDISCOUNTDETAIL on SALESORDERITEMORDERDISCOUNTDETAIL.SALESORDERITEMID = SALESORDERITEM.ID
        where
            SALESORDERITEM.SALESORDERID = @ID
            and EXT.ID is null;

        select
            @TOTAL = sum(T.item.value('(@AMOUNTPAID)[1]','decimal(10,4)'))
        from @PAYMENTS.nodes('/PAYMENTS/ITEM') T(item);

        select @OTHERPAYMENTMETHODS = (
            select
                ID,
                [DESCRIPTION]
            from dbo.OTHERPAYMENTMETHODCODE
            for xml raw ('ITEM'), type, root('OTHERPAYMENTMETHODS'), binary base64
        );

        set @TRANSACTIONID = @ID;

        --Error if there are no items to return on this order
        if not exists (select * from @ITEMS.nodes('/ITEMS/ITEM') T(item)) begin
            raiserror('The selected order has no items to refund.', 13, 1);
        end

        if exists(
            select 1
            from dbo.UFN_SALESORDER_TICKETS (@ID)
        )
        begin
            set @ORDERHASTICKETS = 1
        end
        else
        begin
            set @ORDERHASTICKETS = 0
        end

    end try
    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

    return 0;