USP_DATALIST_SALESORDER_ADJUSTMENTS

Lists all adjustments belonging to a sales order.

Parameters

Parameter Parameter Type Mode Description
@CONTEXTID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


CREATE procedure dbo.USP_DATALIST_SALESORDER_ADJUSTMENTS
(
    @CONTEXTID uniqueidentifier
)
as
    set nocount on;

    -- Fees

    select
        FEESOI.ID,
        FEESOI.DESCRIPTION,
        FEESOI.TOTAL,
        FEESOI.TYPE,
        FEESOI.TYPECODE,
        0 as ISREFUND,
        FEESOI.DESCRIPTION as ORDERBYDESCRIPTION
    from
        dbo.SALESORDERITEM FEESOI
    inner join
        dbo.SALESORDERITEMFEE on FEESOI.ID = SALESORDERITEMFEE.ID
    left join
        dbo.SALESORDERITEM AFFECTEDSOI on SALESORDERITEMFEE.SALESORDERITEMID = AFFECTEDSOI.ID
    where
        FEESOI.SALESORDERID = @CONTEXTID
        and FEESOI.TYPECODE = 3
        and FEESOI.ID not in (
            select
                EXT.SALESORDERITEMID
            from
                dbo.FINANCIALTRANSACTION as FT
            inner join
                dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.FINANCIALTRANSACTIONID = FT.ID
            inner join
                dbo.CREDITITEM_EXT as EXT on EXT.ID = LI.ID
            where
                FT.TYPECODE = 23  -- Refund

                and EXT.SALESORDERITEMID is not null
        )
        and FEESOI.TOTAL <> 0
        and (
            SALESORDERITEMFEE.APPLIESTOCODE = 0
            or FEESOI.PRICINGSTRUCTURECODE = 1
            or AFFECTEDSOI.PRICINGSTRUCTURECODE = 1
        )

    -- Refunded Fees

    union all
    select
        SALESORDERITEM.ID,
        'Refund ' + convert(nvarchar(20), cast(FT.DATE as datetime), 1) + ', ' + SALESORDERITEM.DESCRIPTION,
        SALESORDERITEM.TOTAL,
        SALESORDERITEM.TYPE,
        SALESORDERITEM.TYPECODE,
        1 as ISREFUND,
        SALESORDERITEM.DESCRIPTION as ORDERBYDESCRIPTION
    from
        dbo.SALESORDERITEM
    inner join
        dbo.SALESORDERITEMFEE on SALESORDERITEM.ID = SALESORDERITEMFEE.ID
    inner join
        dbo.CREDITITEM_EXT as EXT on EXT.SALESORDERITEMID = SALESORDERITEM.ID
    inner join
        dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = EXT.ID
    inner join
        dbo.FINANCIALTRANSACTION as FT on FT.ID = LI.FINANCIALTRANSACTIONID
    where 
        SALESORDERITEM.SALESORDERID = @CONTEXTID
        and SALESORDERITEMFEE.APPLIESTOCODE = 0

    -- Taxes

    union all
    select
        SALESORDERITEM.ID,
        SALESORDERITEM.DESCRIPTION,
        SALESORDERITEM.TOTAL - REFUNDTOTALS.AMOUNT as TOTAL,
        SALESORDERITEM.TYPE,
        SALESORDERITEM.TYPECODE,
        0 as ISREFUND,
        SALESORDERITEM.DESCRIPTION as ORDERBYDESCRIPTION
    from
        dbo.SALESORDERITEM
    outer apply
        dbo.UFN_SALESORDERITEM_REFUNDTOTALS(SALESORDERITEM.ID) as REFUNDTOTALS
    where 
        SALESORDERITEM.SALESORDERID = @CONTEXTID and
        SALESORDERITEM.TYPECODE = 4 and  -- Tax

        SALESORDERITEM.TOTAL <> REFUNDTOTALS.AMOUNT

    --Refunded Taxes

    union all
    select
        SALESORDERITEM.ID,
        'Refund ' + convert(nvarchar(20), cast(FT.DATE as datetime), 1) + ', ' + SALESORDERITEM.DESCRIPTION,
        ((LI.QUANTITY * LI.UNITVALUE) - EXT.DISCOUNTS) as TOTAL,
        SALESORDERITEM.TYPE,
        SALESORDERITEM.TYPECODE,
        1 as ISREFUND,
        SALESORDERITEM.DESCRIPTION as ORDERBYDESCRIPTION
    from
        dbo.SALESORDERITEM
    inner join
        dbo.CREDITITEM_EXT as EXT on EXT.SALESORDERITEMID = SALESORDERITEM.ID
    inner join
        dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = EXT.ID
    inner join
        dbo.FINANCIALTRANSACTION as FT on FT.ID = LI.FINANCIALTRANSACTIONID
    where 
        SALESORDERITEM.SALESORDERID = @CONTEXTID and
        SALESORDERITEM.TYPECODE = 4  -- Tax


    -- Discounts

    union all
    select
        SALESORDERITEM.ID,
        case 
            when FT.ID is not null then
                'Refund ' + convert(nvarchar(20), cast(FT.DATE as datetime), 1) + ', ' + SALESORDERITEM.DESCRIPTION
            else
                SALESORDERITEM.DESCRIPTION
        end as DESCRIPTION,
        (-SALESORDERITEM.TOTAL) as TOTAL,
        SALESORDERITEM.TYPE,
        SALESORDERITEM.TYPECODE,
        case 
            when FT.ID is not null then
                1
            else
                0
        end as ISREFUND,
        SALESORDERITEM.DESCRIPTION as ORDERBYDESCRIPTION
    from
        dbo.SALESORDERITEM
    left outer join
        dbo.CREDITITEM_EXT as EXT on EXT.SALESORDERITEMID = SALESORDERITEM.ID
    left outer join
        dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = EXT.ID
    left outer join
        dbo.FINANCIALTRANSACTION as FT on FT.ID = LI.FINANCIALTRANSACTIONID
    where 
        SALESORDERITEM.SALESORDERID = @CONTEXTID and
        SALESORDERITEM.TYPECODE = 5 and  -- Ticket

        SALESORDERITEM.TOTAL <> 0

    order by
        TYPECODE asc,
        ORDERBYDESCRIPTION asc,
        ISREFUND asc;

    return 0;