USP_DATAFORMTEMPLATE_EDITLOAD_DISCOUNTGLDISTRIBUTION

The load procedure used by the edit dataform template "Discount GL Distribution Edit Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@GLDISTRIBUTION xml INOUT GL distribution
@AMOUNT money INOUT Amount
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_DISCOUNTGLDISTRIBUTION
(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @GLDISTRIBUTION xml = null output,
    @AMOUNT money = null output,
    @TSLONG bigint = 0 output
)
as
    set nocount on;

    set @DATALOADED = 0;
    set @TSLONG = 0;

    select @GLDISTRIBUTION = dbo.UFN_REVENUE_GETCREDITGLDISTRIBUTION_TOITEMLISTXML(@ID)

    select
        @AMOUNT = sum(TRANSACTIONAMOUNT)
    from (
        -- Separating these queries to prevent scans from happening.
        -- If you modify this code, make sure to check the execution plans.
        select LI.ID, LI.TRANSACTIONAMOUNT
        from dbo.FINANCIALTRANSACTION as FT
        inner join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.FINANCIALTRANSACTIONID = FT.ID
        inner join dbo.SALESORDER on SALESORDER.REVENUEID = FT.ID
        where
            LI.TYPECODE = 5  -- Discount
            and FT.TYPECODE in (5, 99)  -- Discount, Orphaned
            and SALESORDER.REVENUEID = @ID

        union

        select LI.ID, LI.TRANSACTIONAMOUNT
        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
        inner join dbo.SALESORDER on SALESORDER.ID = EXT.ID
        where
            LI.TYPECODE = 5  -- Discount
            and FT.TYPECODE in (5, 99)  -- Discount, Orphaned
            and SALESORDER.REVENUEID = @ID
    ) as DISCOUNTLINEITEMS

    if @AMOUNT is not null begin                          
        select
            @DATALOADED = 1,
            @TSLONG = max(JEXT.TSLONG)
        from dbo.JOURNALENTRY_EXT as JEXT
        inner join dbo.JOURNALENTRY as JE on JE.ID = JEXT.ID
        inner join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = JE.FINANCIALTRANSACTIONLINEITEMID and LI.TYPECODE = 5  -- Discount
        inner join dbo.FINANCIALTRANSACTION as FT on FT.ID = LI.FINANCIALTRANSACTIONID and FT.TYPECODE = 5  -- Discount
        where FT.ID = @ID
    end

    return 0;