project QadFinancials > class BCOACrossRef > method ValidateComponentPostLines

Description

Validate the COACrossRef lines.


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCOACrossRef.ValidateComponentPost


program code (program4/bcoacrossref.p)

/* Submethod of ValidateComponentPost.                                    */
/* This method has to be in the same segment as ValidateComponentPost (4) */

assign oiReturnStatus      = -98
       viLocalReturnStatus = 0.

DETAILBLOCK:
for each t_sCOACrossRefDet where
         t_sCOACrossRefDet.tc_ParentRowid = t_sCOACrossRef.tc_Rowid and
         t_sCOACrossRefDet.tc_Status     <> "D":U:

    /* ===================================================== */
    /* At least one of the source fields should be filled in */
    /* ===================================================== */
    if (t_sCOACrossRefDet.COACrossRefDetSrcGLFrom   = ? or t_sCOACrossRefDet.COACrossRefDetSrcGLFrom   = '':U) and
       (t_sCOACrossRefDet.COACrossRefDetSrcGLTo     = ? or t_sCOACrossRefDet.COACrossRefDetSrcGLTo     = '':U) and
       (t_sCOACrossRefDet.COACrossRefDetSrcDivFrom  = ? or t_sCOACrossRefDet.COACrossRefDetSrcDivFrom  = '':U) and
       (t_sCOACrossRefDet.COACrossRefDetSrcDivTo    = ? or t_sCOACrossRefDet.COACrossRefDetSrcDivTo    = '':U) and
       (t_sCOACrossRefDet.COACrossRefDetSrcCCFrom   = ? or t_sCOACrossRefDet.COACrossRefDetSrcCCFrom   = '':U) and
       (t_sCOACrossRefDet.COACrossRefDetSrcCCTo     = ? or t_sCOACrossRefDet.COACrossRefDetSrcCCTo     = '':U) and
       (t_sCOACrossRefDet.COACrossRefDetSrcProjFrom = ? or t_sCOACrossRefDet.COACrossRefDetSrcProjFrom = '':U) and
       (t_sCOACrossRefDet.COACrossRefDetSrcProjTo   = ? or t_sCOACrossRefDet.COACrossRefDetSrcProjTo   = '':U)
    then do:
        assign vcMessage           = trim(#T-72'At least one source field should be specified.':255(71396)T-72#) + chr(10) +
                                     trim(substitute(#T-15'Cross Reference Code: &1.':255(999890142)T-15#, trim(t_sCOACrossRef.COACrossRefCode) ))
               viLocalReturnStatus = -1.
        <M-74 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  'tCOACrossRefDet.COACrossRefDetSrcGLFrom':U (icFieldName), 
            input  t_sCOACrossRefDet.COACrossRefDetSrcGLFrom (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  t_sCOACrossRefDet.tc_Rowid (icRowid), 
            input  'QadFin-105584':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
    end. /* if (t_sCOACrossRefDet.COACrossRefDetSrcGLFrom   = ? or t_sCOACrossRefDet.COACrossRefDetSrcGLFrom   = '':U) and */

    /* =============================================================== */
    /* Wildcards are only allowed in combination with other characters */
    /* =============================================================== */
    if t_sCOACrossRefDet.COACrossRefDetSrcGLFrom   = '*':U or
       t_sCOACrossRefDet.COACrossRefDetSrcGLTo     = '*':U or
       t_sCOACrossRefDet.COACrossRefDetSrcDivFrom  = '*':U or
       t_sCOACrossRefDet.COACrossRefDetSrcDivTo    = '*':U or
       t_sCOACrossRefDet.COACrossRefDetSrcCCFrom   = '*':U or
       t_sCOACrossRefDet.COACrossRefDetSrcCCTo     = '*':U or
       t_sCOACrossRefDet.COACrossRefDetSrcProjFrom = '*':U or
       t_sCOACrossRefDet.COACrossRefDetSrcProjTo   = '*':U   
    then do:
        assign vcMessage           = trim(#T-23'A source field can not exclusively contain a wildcard.':255(876998875)T-23#).                          
               viLocalReturnStatus = -1.
        if t_sCOACrossRefDet.COACrossRefDetSrcGLFrom   = '*':U 
        then assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-56'Source GL Account From: &1.':255(650214134)T-56#, trim(t_sCOACrossRefDet.COACrossRefDetSrcGLFrom) )).
        if t_sCOACrossRefDet.COACrossRefDetSrcGLTo     = '*':U 
        then assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-35'Source GL Account Till: &1.':255(61219783)T-35#, trim(t_sCOACrossRefDet.COACrossRefDetSrcGLTo) )).
        if t_sCOACrossRefDet.COACrossRefDetSrcDivFrom  = '*':U 
        then assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-81'Source Sub-Account From: &1.':255(638077242)T-81#, trim(t_sCOACrossRefDet.COACrossRefDetSrcDivFrom) )).
        if t_sCOACrossRefDet.COACrossRefDetSrcDivTo    = '*':U 
        then assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-825'Source Sub-Account Till: &1.':255(880160170)T-825#, trim(t_sCOACrossRefDet.COACrossRefDetSrcDivTo) )).
        if t_sCOACrossRefDet.COACrossRefDetSrcCCFrom   = '*':U 
        then assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-79'Source Cost Center From: &1.':255(86134296)T-79#, trim(t_sCOACrossRefDet.COACrossRefDetSrcCCFrom) )).
        if t_sCOACrossRefDet.COACrossRefDetSrcCCTo     = '*':U 
        then assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-55'Source Cost Center Till: &1.':255(504000804)T-55#, trim(t_sCOACrossRefDet.COACrossRefDetSrcCCTo) )).
        if t_sCOACrossRefDet.COACrossRefDetSrcProjFrom = '*':U 
        then assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-95'Source Project From: &1.':255(426834327)T-95#, trim(t_sCOACrossRefDet.COACrossRefDetSrcProjFrom) )).
        if t_sCOACrossRefDet.COACrossRefDetSrcProjTo   = '*':U 
        then assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-52'Source Project Till: &1.':255(569776511)T-52#, trim(t_sCOACrossRefDet.COACrossRefDetSrcProjTo) )).
        <M-98 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  'tCOACrossRefDet.COACrossRefDetSrcGLFrom':U (icFieldName), 
            input  t_sCOACrossRefDet.COACrossRefDetSrcGLFrom (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  t_sCOACrossRefDet.tc_Rowid (icRowid), 
            input  'QadFin-103774':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>        
    end. /* if t_sCOACrossRefDet.COACrossRefDetSrcGLFrom   = '*':U or */

    /* ========================= */
    /* From should not exceed To */
    /* ========================= */
    if (t_sCOACrossRefDet.COACrossRefDetSrcGLTo   <> ?    and 
        t_sCOACrossRefDet.COACrossRefDetSrcGLTo   <> '':U and
        t_sCOACrossRefDet.COACrossRefDetSrcGLFrom  > t_sCOACrossRefDet.COACrossRefDetSrcGLTo)
    then do:
        assign vcMessage           = trim(substitute(#T-57'From GL Account (&1) should not exceed To GL Account (&2).':255(999890043)T-57#,
                                                     trim(t_sCOACrossRefDet.COACrossRefDetSrcGLFrom),
                                                     trim(t_sCOACrossRefDet.COACrossRefDetSrcGLTo) )) + chr(10) +
                                     trim(substitute(#T-68'Cross Reference Code: &1.':255(999890142)T-68#, trim(t_sCOACrossRef.COACrossRefCode) ))
               viLocalReturnStatus = -1.
        <M-19 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  'tCOACrossRefDet.COACrossRefDetSrcGLFrom':U (icFieldName), 
            input  t_sCOACrossRefDet.COACrossRefDetSrcGLFrom (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  t_sCOACrossRefDet.tc_Rowid (icRowid), 
            input  'QadFin-293623':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
    end. /* if (t_sCOACrossRefDet.COACrossRefDetSrcGLTo   <> ?    and */

    if (t_sCOACrossRefDet.COACrossRefDetSrcDivTo   <> ?    and 
        t_sCOACrossRefDet.COACrossRefDetSrcDivTo   <> '':U and
        t_sCOACrossRefDet.COACrossRefDetSrcDivFrom  > t_sCOACrossRefDet.COACrossRefDetSrcDivTo)
    then do:
        assign vcMessage           = trim(substitute(#T-11'From Sub-Account (&1) should not exceed To Sub-Account (&2).':255(999890046)T-11#,
                                                     trim(t_sCOACrossRefDet.COACrossRefDetSrcDivFrom),
                                                     trim(t_sCOACrossRefDet.COACrossRefDetSrcDivTo) )) + chr(10) +
                                     trim(substitute(#T-93'Cross Reference Code: &1.':255(999890142)T-93#, trim(t_sCOACrossRef.COACrossRefCode) ))
               viLocalReturnStatus = -1.
        <M-25 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  'tCOACrossRefDet.COACrossRefDetSrcDivFrom':U (icFieldName), 
            input  t_sCOACrossRefDet.COACrossRefDetSrcDivFrom (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  t_sCOACrossRefDet.tc_Rowid (icRowid), 
            input  'QadFin-498708':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
    end. /* if (t_sCOACrossRefDet.COACrossRefDetSrcDivTo   <> ?    and */

    if (t_sCOACrossRefDet.COACrossRefDetSrcCCTo   <> ?    and 
        t_sCOACrossRefDet.COACrossRefDetSrcCCTo   <> '':U and
        t_sCOACrossRefDet.COACrossRefDetSrcCCFrom  > t_sCOACrossRefDet.COACrossRefDetSrcCCTo)
    then do:
        assign vcMessage           = trim(substitute(#T-17'From Cost Center (&1) should not exceed To Cost Center (&2).':255(999890047)T-17#,
                                                     trim(t_sCOACrossRefDet.COACrossRefDetSrcCCFrom),
                                                     trim(t_sCOACrossRefDet.COACrossRefDetSrcCCTo) )) + chr(10) +
                                     trim(substitute(#T-9'Cross Reference Code: &1.':255(999890142)T-9#, trim(t_sCOACrossRef.COACrossRefCode) ))
               viLocalReturnStatus = -1.
        <M-78 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  'tCOACrossRefDet.COACrossRefDetSrcCCFrom':U (icFieldName), 
            input  t_sCOACrossRefDet.COACrossRefDetSrcCCFrom (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  t_sCOACrossRefDet.tc_Rowid (icRowid), 
            input  'QadFin-457363':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
    end. /* if (t_sCOACrossRefDet.COACrossRefDetSrcCCTo   <> ?    and */

    if (t_sCOACrossRefDet.COACrossRefDetSrcProjTo   <> ?    and 
        t_sCOACrossRefDet.COACrossRefDetSrcProjTo   <> '':U and
        t_sCOACrossRefDet.COACrossRefDetSrcProjFrom  > t_sCOACrossRefDet.COACrossRefDetSrcProjTo)
    then do:
        assign vcMessage           = trim(substitute(#T-50'From Project (&1) should not exceed To Project (&2).':255(999890048)T-50#,
                                                     trim(t_sCOACrossRefDet.COACrossRefDetSrcProjFrom),
                                                     trim(t_sCOACrossRefDet.COACrossRefDetSrcProjTo) )) + chr(10) +
                                     trim(substitute(#T-10'Cross Reference Code: &1.':255(999890142)T-10#, trim(t_sCOACrossRef.COACrossRefCode) ))
               viLocalReturnStatus = -1.
        <M-65 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  'tCOACrossRefDet.COACrossRefDetSrcProjFrom':U (icFieldName), 
            input  t_sCOACrossRefDet.COACrossRefDetSrcProjFrom (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  t_sCOACrossRefDet.tc_Rowid (icRowid), 
            input  'QadFin-755354':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
    end. /* if (t_sCOACrossRefDet.COACrossRefDetSrcProjTo   <> ?    and */
   
    if t_sCOACrossRef.COACrossRefType = {&COACROSSREFTYPE-ALTERNATE}
    then do:
        /* ============================================= */
        /* target Alternate COA Code should be filled in */
        /* ============================================= */
        if t_sCOACrossRefDet.TargetAltCOAStructDet_ID = ? or t_sCOACrossRefDet.TargetAltCOAStructDet_ID = 0
        then do:
            assign vcMessage           = trim(#T-77'Target Alternate COA Code is mandatory when COA Cross Reference Type is Alternate COA.':255(71390)T-77#) + chr(10) +
                                         trim(substitute(#T-39'Cross Reference Code: &1.':255(999890142)T-39#, trim(t_sCOACrossRef.COACrossRefCode) ))
                   viLocalReturnStatus = -1.
            <M-88 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCOACrossRefDet.tcTargetAltCOAStructDetCode':U (icFieldName), 
                input  t_sCOACrossRefDet.tcTargetAltCOAStructDetCode (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCOACrossRefDet.tc_Rowid (icRowid), 
                input  'QadFin-942427':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
        end. /* if t_sCOACrossRefDet.TargetAltCOAStructDet_ID = ? or t_sCOACrossRefDet.TargetAltCOAStructDet_ID = 0 */

        /* ======================================= */
        /* All other target fields should be empty */
        /* ======================================= */
        if (t_sCOACrossRefDet.TargetGL_ID         <> ? and t_sCOACrossRefDet.TargetGL_ID         <> 0) or
           (t_sCOACrossRefDet.TargetDivision_ID   <> ? and t_sCOACrossRefDet.TargetDivision_ID   <> 0) or
           (t_sCOACrossRefDet.TargetCostCentre_ID <> ? and t_sCOACrossRefDet.TargetCostCentre_ID <> 0) or               
           (t_sCOACrossRefDet.TargetProject_ID    <> ? and t_sCOACrossRefDet.TargetProject_ID    <> 0)
        then do:
            assign vcMessage           = trim(#T-76'Only target field Alternate COA Code should be specified when COA Cross Reference Type is Alternate.':255(71395)T-76#) + chr(10) +
                                         trim(substitute(#T-84'Cross Reference Code: &1.':255(999890142)T-84#, trim(t_sCOACrossRef.COACrossRefCode) ))
                   viLocalReturnStatus = -1.
            <M-36 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCOACrossRefDet.COACrossRefDetSrcGLFrom':U (icFieldName), 
                input  t_sCOACrossRefDet.COACrossRefDetSrcGLFrom (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCOACrossRefDet.tc_Rowid (icRowid), 
                input  'QadFin-398998':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
        end. /* if (t_sCOACrossRefDet.TargetGL_ID         <> ? and t_sCOACrossRefDet.TargetGL_ID         <> 0) or */            
    end. /* if t_sCOACrossRef = {&COACROSSREFTYPE-ALTERNATE} */
    else do:
        /* ========================================= */
        /* target Alternate COA Code should be blank */
        /* ========================================= */
        if t_sCOACrossRefDet.TargetAltCOAStructDet_ID <> ? and t_sCOACrossRefDet.TargetAltCOAStructDet_ID <> 0
        then do:
            assign vcMessage           = trim(#T-26'Target Alternate COA Code can't be specified when COA Cross Reference Type is Seperate or Combined.':255(71400)T-26#) + chr(10) +
                                         trim(substitute(#T-2'Cross Reference Code: &1.':255(999890142)T-2#, trim(t_sCOACrossRef.COACrossRefCode) ))
                   viLocalReturnStatus = -1.
            <M-61 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCOACrossRefDet.tcTargetAltCOAStructDetCode':U (icFieldName), 
                input  t_sCOACrossRefDet.tcTargetAltCOAStructDetCode (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCOACrossRefDet.tc_Rowid (icRowid), 
                input  'QadFin-861683':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
        end. /* if t_sCOACrossRefDet.TargetAltCOAStructDet_ID <> ? and t_sCOACrossRefDet.TargetAltCOAStructDet_ID <> 0 */

        /* ========================================== */
        /* at least one target field should be filled */
        /* ========================================== */
        if (t_sCOACrossRefDet.TargetGL_ID         = ? or t_sCOACrossRefDet.TargetGL_ID         = 0) and
           (t_sCOACrossRefDet.TargetDivision_ID   = ? or t_sCOACrossRefDet.TargetDivision_ID   = 0) and
           (t_sCOACrossRefDet.TargetCostCentre_ID = ? or t_sCOACrossRefDet.TargetCostCentre_ID = 0) and               
           (t_sCOACrossRefDet.TargetProject_ID    = ? or t_sCOACrossRefDet.TargetProject_ID    = 0)
        then do:
            assign vcMessage           = trim(#T-41'At least one target field (except Alternate COA Code) should be specified when COA Cross Reference Type is Seperate or Combined.':255(71399)T-41#) + chr(10) +
                                         trim(substitute(#T-97'Cross Reference Code: &1.':255(999890142)T-97#, trim(t_sCOACrossRef.COACrossRefCode) ))
                   viLocalReturnStatus = -1.
            <M-51 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCOACrossRefDet.COACrossRefDetSrcGLFrom':U (icFieldName), 
                input  t_sCOACrossRefDet.COACrossRefDetSrcGLFrom (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCOACrossRefDet.tc_Rowid (icRowid), 
                input  'QadFin-320226':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
        end. /* if (t_sCOACrossRefDet.TargetGL_ID         = ? or t_sCOACrossRefDet.TargetGL_ID         = 0) and*/
    end. /* else do */

    /* For COA Cross Reference Type Seperate, only one dimension can be filled */
    if t_sCOACrossRef.COACrossRefType = {&COACROSSREFTYPE-SEPERATE}
    then do:
        assign viCntDimensions = 0.
        if (t_sCOACrossRefDet.COACrossRefDetSrcGLFrom <> ? and t_sCOACrossRefDet.COACrossRefDetSrcGLFrom <> '':U) or
           (t_sCOACrossRefDet.COACrossRefDetSrcGLTo   <> ? and t_sCOACrossRefDet.COACrossRefDetSrcGLTo   <> '':U) or
           (t_sCOACrossRefDet.TargetGL_ID             <> ? and t_sCOACrossRefDet.TargetGL_ID             <> 0)
        then assign viCntDimensions = viCntDimensions + 1.
        if (t_sCOACrossRefDet.COACrossRefDetSrcDivFrom <> ? and t_sCOACrossRefDet.COACrossRefDetSrcDivFrom <> '':U) or
           (t_sCOACrossRefDet.COACrossRefDetSrcDivTo   <> ? and t_sCOACrossRefDet.COACrossRefDetSrcDivTo   <> '':U) or
           (t_sCOACrossRefDet.TargetDivision_ID        <> ? and t_sCOACrossRefDet.TargetDivision_ID        <> 0)
        then assign viCntDimensions = viCntDimensions + 1.
        if (t_sCOACrossRefDet.COACrossRefDetSrcCCFrom <> ? and t_sCOACrossRefDet.COACrossRefDetSrcCCFrom <> '':U) or
           (t_sCOACrossRefDet.COACrossRefDetSrcCCTo   <> ? and t_sCOACrossRefDet.COACrossRefDetSrcCCTo   <> '':U) or
           (t_sCOACrossRefDet.TargetCostCentre_ID     <> ? and t_sCOACrossRefDet.TargetCostCentre_ID     <> 0)
        then assign viCntDimensions = viCntDimensions + 1.
        if (t_sCOACrossRefDet.COACrossRefDetSrcProjFrom <> ? and t_sCOACrossRefDet.COACrossRefDetSrcProjFrom <> '':U) or
           (t_sCOACrossRefDet.COACrossRefDetSrcProjTo   <> ? and t_sCOACrossRefDet.COACrossRefDetSrcProjTo   <> '':U) or
           (t_sCOACrossRefDet.TargetProject_ID          <> ? and t_sCOACrossRefDet.TargetProject_ID          <> 0)
        then assign viCntDimensions = viCntDimensions + 1.

        if viCntDimensions > 1
        then do:
            assign vcMessage           = trim(#T-21'Only one dimension at a time can be specified when using COA Cross Reference Type Seperate.':255(71401)T-21#)                                                                                                                                                           + chr(10) +
                                         trim(substitute(#T-13'Source GL From: &1.  Source GL Till: &2 . Target GL: &3.':255(71402)T-13#, trim(t_sCOACrossRefDet.COACrossRefDetSrcGLFrom), trim(t_sCOACrossRefDet.COACrossRefDetSrcGLTo), trim(string(t_sCOACrossRefDet.TargetGL_ID)) ))                                    + chr(10) +
                                         trim(substitute(#T-64'Source Sub-Account From: &1.  Source Sub-Account Till: &2.  Target Sub-Account: &3.':255(71403)T-64#, trim(t_sCOACrossRefDet.COACrossRefDetSrcDivFrom), trim(t_sCOACrossRefDet.COACrossRefDetSrcDivTo), trim(string(t_sCOACrossRefDet.TargetDivision_ID)) )) + chr(10) +
                                         trim(substitute(#T-3'Source Cost Center From: &1.  Source Cost Center Till: &2.  Target Cost Center: &3.':255(71404)T-3#, trim(t_sCOACrossRefDet.COACrossRefDetSrcCCFrom), trim(t_sCOACrossRefDet.COACrossRefDetSrcCCTo), trim(string(t_sCOACrossRefDet.TargetCostCentre_ID)) )) + chr(10) +
                                         trim(substitute(#T-42'Source Project From: &1.  Source Project Till: &2.  Target Project: &3.':255(71405)T-42#, trim(t_sCOACrossRefDet.COACrossRefDetSrcProjFrom), trim(t_sCOACrossRefDet.COACrossRefDetSrcProjTo), trim(string(t_sCOACrossRefDet.TargetProject_ID)) ))            + chr(10) +
                                         trim(substitute(#T-29'Cross Reference Code: &1.':255(999890142)T-29#, trim(t_sCOACrossRef.COACrossRefCode) ))
                   viLocalReturnStatus = -1.
            <M-8 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCOACrossRefDet.COACrossRefDetSrcGLFrom':U (icFieldName), 
                input  t_sCOACrossRefDet.COACrossRefDetSrcGLFrom (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCOACrossRefDet.tc_Rowid (icRowid), 
                input  'QadFin-132151':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCOACrossRef>
        end. /* if viCntDimensions > 1 */
    end. /* if t_sCOACrossRef.COACrossRefType = {&COACROSSREFTYPE-SEPERATE} */
end. /* DETAILBLOCK */

assign oiReturnStatus = viLocalReturnStatus.