USP_DATAFORMTEMPLATE_VIEW_UNMAPPEDTRANSACTIONMESSAGE

The load procedure used by the view dataform template "Unmapped Transaction Message View 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.
@ERRORCODE tinyint INOUT Error code
@ERRORMESSAGE nvarchar(max) INOUT Error message
@OFFICEID int INOUT Office
@REVENUETYPEID uniqueidentifier INOUT Revenue type
@APPLICATIONTYPEID uniqueidentifier INOUT Application type
@PAYMENTMETHODID uniqueidentifier INOUT Payment method
@MISSINGSEGMENTMAPPING nvarchar(72) INOUT Missing segment mapping
@ISCOMPOSITE bit INOUT Is composit segment
@COMPOSITESEGMENT1ID uniqueidentifier INOUT First composit segment
@COMPOSITESEGMENT2ID uniqueidentifier INOUT Second composit segment
@COMPOSITESEGMENT3ID uniqueidentifier INOUT Third composit segment
@COMPOSITESEGMENT4ID uniqueidentifier INOUT Fourth composit segment
@MISSINGACCOUNT nvarchar(max) INOUT Missing account

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_UNMAPPEDTRANSACTIONMESSAGE
(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @ERRORCODE tinyint = null output,
    @ERRORMESSAGE nvarchar(max) = null output,
    @OFFICEID integer = null output,
    @REVENUETYPEID uniqueidentifier = null output,
    @APPLICATIONTYPEID uniqueidentifier = null output,
    @PAYMENTMETHODID uniqueidentifier = null output,
    @MISSINGSEGMENTMAPPING nvarchar(72) = null output,
    @ISCOMPOSITE bit = null output,
    @COMPOSITESEGMENT1ID uniqueidentifier = null output,
    @COMPOSITESEGMENT2ID uniqueidentifier = null output,
    @COMPOSITESEGMENT3ID uniqueidentifier = null output,
    @COMPOSITESEGMENT4ID uniqueidentifier = null output,
    @MISSINGACCOUNT nvarchar(max) = null output
)
as
    set nocount on;

    -- be sure to set this, in case the select returns no rows

    set @DATALOADED = 0;

    declare @MAPPEDVALUES xml;
    declare @PDACCOUNTSYSTEMID uniqueidentifier;
    select @DATALOADED = 1, @MAPPEDVALUES = E.MAPPEDVALUES from dbo.GLACCOUNTMAPPINGERROR E where E.ID = @ID;
    select @ERRORCODE = M.ERRORCODE
        ,@ERRORMESSAGE = M.ERRORMESSAGE
        ,@OFFICEID = O.OFFICEID
        ,@REVENUETYPEID = M.REVENUETYPEID
        ,@APPLICATIONTYPEID = M.APPLICATIONTYPEID
        ,@PAYMENTMETHODID = M.PAYMENTMETHODID
        ,@PDACCOUNTSYSTEMID = M.PDACCOUNTSYSTEMID
    from dbo.UFN_GLACCOUNTMAPPINGERROR_MAPPEDVALUES_FROMITEMLISTXML(@MAPPEDVALUES) M
    inner join dbo.PDACCOUNTCODEMAPOFFICE O on M.PDACCOUNTCODEMAPOFFICEID = O.ID

    --Figure out what segment has the error (if it has not already been fixed)

    if @ERRORCODE = 2
    begin
        declare @SEGMENTVALUES table (TABLEID uniqueidentifier, VALUEID uniqueidentifier);
        insert into @SEGMENTVALUES (TABLEID, VALUEID)
        select distinct TABLEID, VALUEID
        from 
            (select SEGMENT02TABLEID, SEGMENT03TABLEID, SEGMENT04TABLEID, SEGMENT05TABLEID, SEGMENT06TABLEID, SEGMENT07TABLEID
                , SEGMENT08TABLEID, SEGMENT09TABLEID, SEGMENT10TABLEID, SEGMENT11TABLEID, SEGMENT12TABLEID, SEGMENT13TABLEID
                , SEGMENT14TABLEID, SEGMENT15TABLEID, SEGMENT16TABLEID, SEGMENT17TABLEID, SEGMENT18TABLEID, SEGMENT19TABLEID
                , SEGMENT20TABLEID, SEGMENT21TABLEID, SEGMENT22TABLEID, SEGMENT23TABLEID, SEGMENT24TABLEID, SEGMENT25TABLEID
                , SEGMENT26TABLEID, SEGMENT27TABLEID, SEGMENT28TABLEID, SEGMENT29TABLEID, SEGMENT30TABLEID,
                SEGMENT02ID, SEGMENT03ID, SEGMENT04ID, SEGMENT05ID, SEGMENT06ID, SEGMENT07ID
                , SEGMENT08ID, SEGMENT09ID, SEGMENT10ID, SEGMENT11ID, SEGMENT12ID, SEGMENT13ID
                , SEGMENT14ID, SEGMENT15ID, SEGMENT16ID, SEGMENT17ID, SEGMENT18ID, SEGMENT19ID
                , SEGMENT20ID, SEGMENT21ID, SEGMENT22ID, SEGMENT23ID, SEGMENT24ID, SEGMENT25ID
                , SEGMENT26ID, SEGMENT27ID, SEGMENT28ID, SEGMENT29ID, SEGMENT30ID
            from dbo.UFN_GLACCOUNTMAPPINGERROR_MAPPEDVALUES_FROMITEMLISTXML(@MAPPEDVALUES)) P
            unpivot
                (TABLEID for segment in (SEGMENT02TABLEID, SEGMENT03TABLEID, SEGMENT04TABLEID, SEGMENT05TABLEID, SEGMENT06TABLEID, SEGMENT07TABLEID
                    , SEGMENT08TABLEID, SEGMENT09TABLEID, SEGMENT10TABLEID, SEGMENT11TABLEID, SEGMENT12TABLEID, SEGMENT13TABLEID
                    , SEGMENT14TABLEID, SEGMENT15TABLEID, SEGMENT16TABLEID, SEGMENT17TABLEID, SEGMENT18TABLEID, SEGMENT19TABLEID
                    , SEGMENT20TABLEID, SEGMENT21TABLEID, SEGMENT22TABLEID, SEGMENT23TABLEID, SEGMENT24TABLEID, SEGMENT25TABLEID
                    , SEGMENT26TABLEID, SEGMENT27TABLEID, SEGMENT28TABLEID, SEGMENT29TABLEID, SEGMENT30TABLEID))  unpvt
            unpivot
                (VALUEID for value in (SEGMENT02ID, SEGMENT03ID, SEGMENT04ID, SEGMENT05ID, SEGMENT06ID, SEGMENT07ID
                    , SEGMENT08ID, SEGMENT09ID, SEGMENT10ID, SEGMENT11ID, SEGMENT12ID, SEGMENT13ID
                    , SEGMENT14ID, SEGMENT15ID, SEGMENT16ID, SEGMENT17ID, SEGMENT18ID, SEGMENT19ID
                    , SEGMENT20ID, SEGMENT21ID, SEGMENT22ID, SEGMENT23ID, SEGMENT24ID, SEGMENT25ID
                    , SEGMENT26ID, SEGMENT27ID, SEGMENT28ID, SEGMENT29ID, SEGMENT30ID)) unpvt1
            where LEFT(segment, 9) = LEFT(value, 9)

        select top 1 @MISSINGSEGMENTMAPPING = convert(nvarchar(36), S.ID) + convert(nvarchar(36),ISNULL(M.LONGDESCRIPTIONID, MAPPINGS.VALUEID))
            ,@ISCOMPOSITE = 0
        from dbo.PDACCOUNTSTRUCTURE S
        inner join PDACCOUNTTABLESAVAILABLEFORSEGMENT T on T.ID = S.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
        left join @SEGMENTVALUES MAPPINGS on T.TABLEID = MAPPINGS.TABLEID
        left join dbo.PDACCOUNTSEGMENTMAPPING M on M.PDACCOUNTSTRUCTUREID = S.ID and
            (M.LONGDESCRIPTIONID = mappings.VALUEID  or (M.ISDEFAULT = 1 and (MAPPINGS.VALUEID = '99999999-9999-9999-9999-999999999999' or MAPPINGS.VALUEID is null)))
        left join dbo.PDCOMPOSITESEGMENT C on C.ID = S.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
        where (M.ID is null or M.PDACCOUNTSEGMENTVALUEID is null
            and S.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID 
            and C.ID is null
            and ISNULL(M.LONGDESCRIPTIONID, MAPPINGS.VALUEID) is not null;

        if @MISSINGSEGMENTMAPPING is null
        begin
            select top 1 @MISSINGSEGMENTMAPPING = SEGMENTVALUES.ID
                ,@COMPOSITESEGMENT1ID = SEGMENTVALUES.COMPOSITESEGMENT1ID
                ,@COMPOSITESEGMENT2ID = SEGMENTVALUES.COMPOSITESEGMENT2ID
                ,@COMPOSITESEGMENT3ID = SEGMENTVALUES.COMPOSITESEGMENT3ID
                ,@COMPOSITESEGMENT4ID = SEGMENTVALUES.COMPOSITESEGMENT4ID
                ,@ISCOMPOSITE = 1
            from (
                select COMP.ID, S1.VALUEID as COMPOSITESEGMENT1ID, S2.VALUEID as COMPOSITESEGMENT2ID, S3.VALUEID as COMPOSITESEGMENT3ID, S4.VALUEID as COMPOSITESEGMENT4ID
                from (
                    select pvt.ID, pvt.[1], pvt.[2], pvt.[3], pvt.[4]
                    from (
                        select S.ID, convert(nvarchar(36), T.TABLEID) as TABLEID, L.SEQUENCE
                        from dbo.PDACCOUNTSTRUCTURE S
                        inner join dbo.PDCOMPOSITESEGMENT C on C.ID = S.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
                        inner join dbo.PDCOMPOSITESEGMENTTABLELIST L on L.PDCOMPOSITESEGMENTID = C.ID
                        inner join dbo.PDACCOUNTTABLESAVAILABLEFORSEGMENT T on T.ID = L.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
                        where S.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID) as P
                    pivot
                        (MAX(TABLEID) FOR SEQUENCE IN ([1], [2], [3], [4])) pvt) COMP
                    left join @SEGMENTVALUES S1 on S1.TABLEID = COMP.[1]
                    left join @SEGMENTVALUES S2 on S2.TABLEID = COMP.[2]
                    left join @SEGMENTVALUES S3 on S3.TABLEID = COMP.[3]
                    left join @SEGMENTVALUES S4 on S4.TABLEID = COMP.[4]) as SEGMENTVALUES
                left join (
                    select pvt.ID, pvt.[1] as COMPOSITESEGMENT1ID, pvt.[2] as COMPOSITESEGMENT2ID, pvt.[3] as COMPOSITESEGMENT3ID, pvt.[4] as COMPOSITESEGMENT4ID
                    from (
                        select S.ID, convert(nvarchar(36), E.LONGDESCRIPTIONID) as LONGDESCRIPTIONID, L.SEQUENCE
                        from dbo.PDCOMPOSITESEGMENTMAPPING M
                        inner join dbo.PDACCOUNTSTRUCTURE S on M.PDACCOUNTSTRUCTUREID = S.ID
                        inner join dbo.PDCOMPOSITESEGMENTMAPPINGENTRY E on E.PDCOMPOSITESEGMENTMAPPINGID = M.ID
                        inner join dbo.PDCOMPOSITESEGMENTTABLELIST L on E.PDCOMPOSITESEGMENTTABLELISTID = L.ID
                        where S.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID) as P
                    pivot
                        (MAX(LONGDESCRIPTIONID) FOR SEQUENCE IN ([1], [2], [3], [4])) pvt) MAPPEDVALUES on SEGMENTVALUES.ID = MAPPEDVALUES.ID 
                            and ISNULL(SEGMENTVALUES.COMPOSITESEGMENT1ID, @PDACCOUNTSYSTEMID) = ISNULL(MAPPEDVALUES.COMPOSITESEGMENT1ID, @PDACCOUNTSYSTEMID)
                            and ISNULL(SEGMENTVALUES.COMPOSITESEGMENT2ID, @PDACCOUNTSYSTEMID) = ISNULL(MAPPEDVALUES.COMPOSITESEGMENT2ID, @PDACCOUNTSYSTEMID)
                            and ISNULL(SEGMENTVALUES.COMPOSITESEGMENT3ID, @PDACCOUNTSYSTEMID) = ISNULL(MAPPEDVALUES.COMPOSITESEGMENT3ID, @PDACCOUNTSYSTEMID)
                            and ISNULL(SEGMENTVALUES.COMPOSITESEGMENT4ID, @PDACCOUNTSYSTEMID) = ISNULL(MAPPEDVALUES.COMPOSITESEGMENT4ID, @PDACCOUNTSYSTEMID)
                where MAPPEDVALUES.ID is null
        end
    end
    else if @ERRORCODE = 3
        select @MISSINGACCOUNT = VALUE from dbo.UFN_STRINGSPLITTER(@ERRORMESSAGE, '"') where ID = 4;

    return 0;