project QadFinancials > class BFRWAnalysisCode > method ValidateComponentPreFRWAnCodeElemDet


Parameters


iiGLSSCompany_IDinputinteger
iiDivisionSSCompany_IDinputinteger
iiCostCentreSSCompany_IDinputinteger
iiProjectSSCompany_IDinputinteger
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BFRWAnalysisCode.ValidateComponentPreFRWAnCodeElem


program code (program1/bfrwanalysiscode.p)

for each t_sFRWAnCodeElemDet where
         t_sFRWAnCodeElemDet.tc_ParentRowid = t_sFRWAnCodeElem.tc_Rowid and
         t_sFRWAnCodeElemDet.tc_Status     <> "D":U:

    assign vcLineNbr = "":U.
    find first tAnCodeExcelMapping where
        tAnCodeExcelMapping.tiQCode_ID = t_sFRWAnCodeElemDet.FRWAnCodeElemDet_ID
        no-error.
    if available tAnCodeExcelMapping then
    do:
        assign vcLineNbr = substitute(#T-74'(Excel Line &1)':255(264440525)T-74#, tAnCodeExcelMapping.tiRowNbr).
    end.

    /* Remove all duplicates */
    for each bsFRWAnCodeElemDet where
             bsFRWAnCodeElemDet.tc_ParentRowid        = t_sFRWAnCodeElemDet.tc_ParentRowid       and
             bsFRWAnCodeElemDet.tc_Rowid             <> t_sFRWAnCodeElemDet.tc_Rowid             and
             bsFRWAnCodeElemDet.FRWAnCodeElemDetCode  = t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode and
             bsFRWAnCodeElemDet.FRWAnCodeElemDetValue = t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue:
        if bsFRWAnCodeElemDet.tc_Status = "N":U
        then do:
            find first tFRWAnCodeElemDet where
                 tFRWAnCodeElemDet.tc_Rowid = bsFRWAnCodeElemDet.tc_Rowid no-error.
            if available tFRWAnCodeElemDet
            then delete tFRWAnCodeElemDet.
            
            delete bsFRWAnCodeElemDet.
        end.
        else assign bsFRWAnCodeElemDet.tc_Status = "D":U.
    end.

    
    /* Empty values */
    if t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode = "":U or
       t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode = ?
    then assign t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue = 0.
    
    /* Retrieve the ID of the selected values */
    else do:
        case t_sFRWAnCodeElem.FRWAnCodeElemCOAType:
            when {&FRWANALYSISCOATYPE-COMPANY}
            then do:
                <Q-51 run CompanyPrim (all) (Read) (NoCache)
                   (input ?, (LookupCompanyId)
                    input t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode, (CompanyCode)
                    output dataset tqCompanyPrim) in BCompany>
                find first tqCompanyPrim where
                     tqCompanyPrim.tcCompanyCode = t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode
                     no-error.
                if not available tqCompanyPrim
                then do:
                    assign vcMessage = #T-18'Entity code (&1) not found.':200(1341)T-18#
                           vcMessage = substitute(vcMessage, t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode).
                    if vcLineNbr <> "":U then assign vcMessage = vcMessage + vcLineNbr.

                    <M-96 run SetMessage
                       (input  vcMessage (icMessage), 
                        input  '':U (icArguments), 
                        input  'tFRWAnCodeElemDet.FRWAnCodeElemDetCode':U (icFieldName), 
                        input  t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sFRWAnCodeElemDet.tc_Rowid (icRowid), 
                        input  'qadfin-342221':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
                    assign oiReturnStatus = -1.
                end.
                else assign t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue = tqCompanyPrim.tiCompany_ID.
            end.
            
            when {&FRWANALYSISCOATYPE-COSTCENTRE}
            then do:
                <Q-12 run CostCentrePrim (all) (Read) (NoCache)
                   (input iiGLSSCompany_ID, (CompanyId)
                    input ?, (CostCentreID)
                    input t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode, (CostCentreCode)
                    output dataset tqCostCentrePrim) in BCostCentre>
                find first tqCostCentrePrim where
                     tqCostCentrePrim.tcCostCentreCode = t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode
                     no-error.
                if not available tqCostCentrePrim
                then do:
                    assign vcMessage = #T-7'Cost centre &1 not found.':200(440919789)T-7#
                           vcMessage = substitute(vcMessage, t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode).
                    if vcLineNbr <> "":U then assign vcMessage = vcMessage + vcLineNbr.
                    <M-16 run SetMessage
                       (input  vcMessage (icMessage), 
                        input  '':U (icArguments), 
                        input  'tFRWAnCodeElemDet.FRWAnCodeElemDetCode':U (icFieldName), 
                        input  t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sFRWAnCodeElemDet.tc_Rowid (icRowid), 
                        input  'qadfin-86654':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
                    assign oiReturnStatus = -1.
                end.
                else assign t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue = tqCostCentrePrim.tiCostCentre_ID.
            end.
            
            when {&FRWANALYSISCOATYPE-CURRENCY}
            then do:
                <Q-78 run CurrencyPrim (all) (Read) (NoCache)
                   (input t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode, (CurrencyCode)
                    input ?, (Currency_ID)
                    output dataset tqCurrencyPrim) in BCurrency>
                find first tqCurrencyPrim where
                     tqCurrencyPrim.tcCurrencyCode = t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode
                     no-error.
                if not available tqCurrencyPrim
                then do:
                    assign vcMessage = #T-84'Currency &1 not found.':200(621078586)T-84#
                           vcMessage = substitute(vcMessage, t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode).
                    if vcLineNbr <> "":U then assign vcMessage = vcMessage + vcLineNbr.
                    <M-46 run SetMessage
                       (input  vcMessage (icMessage), 
                        input  '':U (icArguments), 
                        input  'tFRWAnCodeElemDet.FRWAnCodeElemDetCode':U (icFieldName), 
                        input  t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sFRWAnCodeElemDet.tc_Rowid (icRowid), 
                        input  'qadfin-235099':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
                    assign oiReturnStatus = -1.
                end.
                else assign t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue = tqCurrencyPrim.tiCurrency_ID.
            end.
            
            when {&FRWANALYSISCOATYPE-DIVISION}
            then do:
                <Q-77 run DivisionPrim (all) (Read) (NoCache)
                   (input iiDivisionSSCompany_ID, (CompanyId)
                    input ?, (DivisionID)
                    input t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode, (DivisionCode)
                    output dataset tqDivisionPrim) in BDivision>
                find first tqDivisionPrim where
                     tqDivisionPrim.tcDivisionCode = t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode
                     no-error.
                if not available tqDivisionPrim
                then do:
                    assign vcMessage = #T-62'Sub-account &1 not found.':200(875477289)T-62#
                           vcMessage = substitute(vcMessage, t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode).
                    if vcLineNbr <> "":U then assign vcMessage = vcMessage + vcLineNbr.
                    <M-27 run SetMessage
                       (input  vcMessage (icMessage), 
                        input  '':U (icArguments), 
                        input  'tFRWAnCodeElemDet.FRWAnCodeElemDetCode':U (icFieldName), 
                        input  t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sFRWAnCodeElemDet.tc_Rowid (icRowid), 
                        input  'qadfin-455264':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
                    assign oiReturnStatus = -1.
                end.
                else assign t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue = tqDivisionPrim.tiDivision_ID.
            end.
            
            when {&FRWANALYSISCOATYPE-GL}
            then do:
                <Q-91 run GLPrim (all) (Read) (NoCache)
                   (input iiGLSSCompany_ID, (CompanyId)
                    input t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode, (GLCode)
                    input ?, (GLId)
                    output dataset tqGLPrim) in BGL>
                find first tqGLPrim where
                     tqGLPrim.tcGlCode = t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode
                     no-error.
                if not available tqGLPrim
                then do:
                    assign vcMessage = #T-98'Invalid GL Account: &1':255(71050)T-98#
                           vcMessage = substitute(vcMessage, t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode).
                    if vcLineNbr <> "":U then assign vcMessage = vcMessage + vcLineNbr.
                    <M-22 run SetMessage
                       (input  vcMessage (icMessage), 
                        input  '':U (icArguments), 
                        input  'tFRWAnCodeElemDet.FRWAnCodeElemDetCode':U (icFieldName), 
                        input  t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sFRWAnCodeElemDet.tc_Rowid (icRowid), 
                        input  'qadfin-191706':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
                    assign oiReturnStatus = -1.
                end.
                else assign t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue = tqGLPrim.tiGL_ID.
            end.
            
            when {&FRWANALYSISCOATYPE-INTERCO}
            then do:
                <Q-136 run BusinessRelationByIDCodeIC (all) (Read) (NoCache)
                   (input ?, (BusinessRelationID)
                    input ?, (BusinessRelationCode)
                    input t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode, (BusinessRelationIntercoCode)
                    input true, (BusinessRelationIsActive)
                    output dataset tqBusinessRelationByIDCodeIC) in BBusinessRelation>
                find first tqBusinessRelationByIDCodeIC where
                     tqBusinessRelationByIDCodeIC.tcBusinessRelationICCode = t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode
                     no-error.
                if not available tqBusinessRelationByIDCodeIC
                then do:
                    assign vcMessage = #T-28'Invalid Intercompany Code &1':255(549485124)T-28#
                           vcMessage = substitute(vcMessage, t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode).
                    if vcLineNbr <> "":U then assign vcMessage = vcMessage + vcLineNbr.
                    <M-57 run SetMessage
                       (input  vcMessage (icMessage), 
                        input  '':U (icArguments), 
                        input  'tFRWAnCodeElemDet.FRWAnCodeElemDetCode':U (icFieldName), 
                        input  t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sFRWAnCodeElemDet.tc_Rowid (icRowid), 
                        input  'qadfin-148296':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
                    assign oiReturnStatus = -1.
                end.
                else assign t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue = tqBusinessRelationByIDCodeIC.tiBusinessRelation_ID.
            end.
            
            when {&FRWANALYSISCOATYPE-JOURNAL}
            then do:
                <Q-29 run JournalPrim (all) (Read) (NoCache)
                   (input viCompanyId, (CompanyId)
                    input t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode, (JournalCode)
                    input ?, (JournalID)
                    output dataset tqJournalPrim) in BJournal>
                find first tqJournalPrim where
                     tqJournalPrim.tcJournalCode = t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode
                     no-error.
                if not available tqJournalPrim
                then do:
                    assign vcMessage = #T-11'Invalid Daybook code: &1':255(227702850)T-11#
                           vcMessage = substitute(vcMessage, t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode).
                    if vcLineNbr <> "":U then assign vcMessage = vcMessage + vcLineNbr.
                    <M-83 run SetMessage
                       (input  vcMessage (icMessage), 
                        input  '':U (icArguments), 
                        input  'tFRWAnCodeElemDet.FRWAnCodeElemDetCode':U (icFieldName), 
                        input  t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sFRWAnCodeElemDet.tc_Rowid (icRowid), 
                        input  'qadfin-85208':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
                    assign oiReturnStatus = -1.
                end.
                else assign t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue = tqJournalPrim.tiJournal_ID.
            end.
            
            when {&FRWANALYSISCOATYPE-LAYER}
            then do:
                <Q-48 run LayerPrim (all) (Read) (NoCache)
                   (input ?, (LayerId)
                    input t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode, (LayerCode)
                    output dataset tqLayerPrim) in BLayer>
                find first tqLayerPrim where
                     tqLayerPrim.tcLayerCode = t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode
                     no-error.
                if not available tqLayerPrim
                then do:
                    assign vcMessage = #T-73'Invalid Layer code: &1':255(564319652)T-73#
                           vcMessage = substitute(vcMessage, t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode).
                    if vcLineNbr <> "":U then assign vcMessage = vcMessage + vcLineNbr.
                    <M-34 run SetMessage
                       (input  vcMessage (icMessage), 
                        input  '':U (icArguments), 
                        input  'tFRWAnCodeElemDet.FRWAnCodeElemDetCode':U (icFieldName), 
                        input  t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sFRWAnCodeElemDet.tc_Rowid (icRowid), 
                        input  'qadfin-164034':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
                    assign oiReturnStatus = -1.
                end.
                else assign t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue = tqLayerPrim.tiLayer_ID.
            end.
            
            when {&FRWANALYSISCOATYPE-PROJECT}
            then do:
                <Q-44 run ProjectPrim (all) (Read) (NoCache)
                   (input iiProjectSSCompany_ID, (CompanyId)
                    input ?, (ProjectID)
                    input t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode, (ProjectCode)
                    output dataset tqProjectPrim) in BProject>
                find first tqProjectPrim where
                     tqProjectPrim.tcProjectCode = t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode
                     no-error.
                if not available tqProjectPrim
                then do:
                    assign vcMessage = #T-30'Invalid Project code: &1':255(144664601)T-30#
                           vcMessage = substitute(vcMessage, t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode).
                    if vcLineNbr <> "":U then assign vcMessage = vcMessage + vcLineNbr.
                    <M-49 run SetMessage
                       (input  vcMessage (icMessage), 
                        input  '':U (icArguments), 
                        input  'tFRWAnCodeElemDet.FRWAnCodeElemDetCode':U (icFieldName), 
                        input  t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sFRWAnCodeElemDet.tc_Rowid (icRowid), 
                        input  'qadfin-321647':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
                    assign oiReturnStatus = -1.
                end.
                else assign t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue = tqProjectPrim.tiProject_ID.
            end.
            
            when {&FRWANALYSISCOATYPE-SAF1} or
            when {&FRWANALYSISCOATYPE-SAF2} or
            when {&FRWANALYSISCOATYPE-SAF3} or
            when {&FRWANALYSISCOATYPE-SAF4} or
            when {&FRWANALYSISCOATYPE-SAF5} or
            when {&FRWANALYSISCOATYPE-SAF6} or
            when {&FRWANALYSISCOATYPE-SAF7} or
            when {&FRWANALYSISCOATYPE-SAF8} or
            when {&FRWANALYSISCOATYPE-SAF9} or
            when {&FRWANALYSISCOATYPE-SAF10}
            then do:
                <Q-72 run SafPrim (all) (Read) (NoCache)
                   (input t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue, (SafID)
                    input t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode, (SafCode)
                    input ?, (SafConceptCode)
                    output dataset tqSafPrim) in BSaf>
                    
                find first tqSafPrim where
                     tqSafPrim.tcSafCode = t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode
                     no-error.
                     
                if ambiguous tqSafPrim
                then do:
                    assign vcMessage = #T-89'The SAF code (&1) is used by more than one SAF concept.  Please use the lookup to select the correct combination.':255(112320309)T-89#
                           vcMessage = substitute(vcMessage, t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode).
                    if vcLineNbr <> "":U then assign vcMessage = vcMessage + vcLineNbr.
                    <M-69 run SetMessage
                       (input  vcMessage (icMessage), 
                        input  '':U (icArguments), 
                        input  't_sFRWAnCodeElemDet.FRWAnCodeElemDetCode':U (icFieldName), 
                        input  t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sFRWAnCodeElemDet.tc_Rowid (icRowid), 
                        input  'qadfin-225549':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
                    assign oiReturnStatus = -1.
                end.
                else if not available tqSafPrim
                then do:
                    assign vcMessage = #T-43'Invalid SAF code: &1':255(778901501)T-43#
                           vcMessage = substitute(vcMessage, t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode).
                    if vcLineNbr <> "":U then assign vcMessage = vcMessage + vcLineNbr.
                    <M-70 run SetMessage
                       (input  vcMessage (icMessage), 
                        input  '':U (icArguments), 
                        input  't_sFRWAnCodeElemDet.FRWAnCodeElemDetCode':U (icFieldName), 
                        input  t_sFRWAnCodeElemDet.FRWAnCodeElemDetCode (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sFRWAnCodeElemDet.tc_Rowid (icRowid), 
                        input  'qadfin-175037':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
                    assign oiReturnStatus = -1.
                end.
                else assign t_sFRWAnCodeElemDet.FRWAnCodeElemDetValue = tqSafPrim.tiSaf_ID.
            end.
        end case. 
    end. /* else if is empty */
end. /* for each t_sFRWAnCodeElemDet where */