project QadFinancials > class BJournal > method PreValidateComponent

Description

Validations that are done before the ancestor code of ValidateComponent.
- Layercode should be filled in with an existing value.
- Validate if the journaltype is allowed, based on the correction control settings.
- The combination of journal type and layer code should be unique for revaluation journals.


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BJournal.ValidateComponent


program code (program1/bjournal.p)

assign vlJournalGroupByCodeByIDStart = false.
    
for each t_sJournal where 
         t_sJournal.tc_Status = "N":U or
         t_sJournal.tc_Status = "C":U:
    
    
    /* Check to see if Journal Groups are in use.  Note: tlJournalGroupIsEnabled is set in the calculate method */
    
    if t_sJournal.tlJournalGroupsIsEnabled and t_sJournal.tcJournalGroupCode = ""
    then do:
       <M-28 run SetMessage
          (input  #T-28'Daybook Groups are enabled for this Shared Set, you must specify a Daybook Group Code for Daybook $1':255(999890768)T-28# (icMessage), 
           input  t_sJournal.JournalCode (icArguments), 
           input  'tJournal.tcJournalGroupCode' (icFieldName), 
           input  t_sJournal.tcJournalGroupCode (icFieldValue), 
           input  'E' (icType), 
           input  3 (iiSeverity), 
           input  t_sJournal.tc_rowid (icRowid), 
           input  'QadFin-9295':U (icFcMsgNumber), 
           input  '' (icFcExplanation), 
           input  '' (icFcIdentification), 
           input  '' (icFcContext), 
           output vifcReturnSuper (oiReturnStatus)) in BJournal> 
        assign oireturnstatus = -1.       
    end.
    else if not(t_sJournal.tlJournalGroupsIsEnabled) and t_sJournal.tcJournalGroupCode <> "" 
    then do:
         <M-29 run SetMessage
            (input  #T-31'Daybook Groups are not enabled for this Shared Set.  Daybook Group Code must be blank for Daybook $1':255(999890769)T-31# (icMessage), 
             input  t_sJournal.JournalCode (icArguments), 
             input  'tJournal.tcJournalGroupCode' (icFieldName), 
             input  t_sJournal.tcJournalGroupCode (icFieldValue), 
             input  'E' (icType), 
             input  3 (iiSeverity), 
             input  t_sJournal.tc_rowid (icRowid), 
             input  'QadFin-9296':U (icFcMsgNumber), 
             input  '' (icFcExplanation), 
             input  '' (icFcIdentification), 
             input  '' (icFcContext), 
             output vifcReturnSuper (oiReturnStatus)) in BJournal> 
         assign oireturnstatus = -1.       
    end.
    else if t_sJournal.tlJournalGroupsIsEnabled and t_sJournal.tcJournalGroupCode <> "" 
    then do:     
         if not(vlJournalGroupByCodeByIDStart)
         then do:
            <Q-35 run JournalGroupByCodeByID  (Start) in BJournalGroup >
            assign vlJournalGroupByCodeByIDStart = true.
         end.
         
         <Q-34 run JournalGroupByCodeByID (all) (Read) (NoCache)
            (input t_sJournal.tcJournalGroupCode, (JournalGroupCode)
             input ?, (JournalGroupId)
             input true, (JournalGroupIsActive)
             input viCompanyID, (CompanyId)
             output dataset tqJournalGroupByCodeByID) in BJournalGroup >
         find first tqJournalGroupByCodeByID where tqJournalGroupByCodeByID.tcJournalGroupCode = t_sJournal.tcJournalGroupCode no-lock no-error.
         if not available(tqJournalGroupByCodeByID)
         then do:
             <M-32 run SetMessage
                (input  #T-33'Daybook Groups are enabled for this Shared Set.  Daybook Group Code $1 must be a valid active Daybook Group Daybook $2':255(999890859)T-33# (icMessage), 
                 input  t_sjournal.tcjournalGroupCode + chr(2) + t_sJournal.JournalCode (icArguments), 
                 input  'tJournal.tcJournalGroupCode' (icFieldName), 
                 input  t_sJournal.tcJournalGroupCode (icFieldValue), 
                 input  'E' (icType), 
                 input  3 (iiSeverity), 
                 input  t_sJournal.tc_rowid (icRowid), 
                 input  'QadFin-9377':U (icFcMsgNumber), 
                 input  '' (icFcExplanation), 
                 input  '' (icFcIdentification), 
                 input  '' (icFcContext), 
                 output vifcReturnSuper (oiReturnStatus)) in BJournal> 
             assign oireturnstatus = -1.        
         end.
    end.
       
    /* validate JournalTypeCode by correction control flag */
    <Q-8 run GLCorrectionControlByDomain (all) (Read) (NoCache)
       (input vcDomainCode, (DomainCode)
        output dataset tqGLCorrectionControlByDomain) in BMFGGLCorrectionControl >
    find first tqGLCorrectionControlByDomain no-error.
    if available tqGLCorrectionControlByDomain 
    then do:
        if tqGLCorrectionControlByDomain.tlglcor_ap = false
        then do:
            if t_sJournal.JournalTypeCode = {&JOURNALTYPE-CREDITORINVOICECORRECT}   or 
               t_sJournal.JournalTypeCode = {&JOURNALTYPE-CREDITORCREDITNOTECORRECT}
            then do:
                assign vcMessage =     #T-18'The Daybook Type cannot be selected due to the AP correction control setting':120(64210)T-18#.
                <M-10 run SetMessage
                   (input  vcMessage (icMessage), 
                    input  '':U (icArguments), 
                    input  'tJournal.JournalTypeCode':U (icFieldName), 
                    input  t_sJournal.JournalTypeCode (icFieldValue), 
                    input  'E':U (icType), 
                    input  3 (iiSeverity), 
                    input  t_sJournal.tc_Rowid (icRowid), 
                    input  'QadFin-5471':U (icFcMsgNumber), 
                    input  '':U (icFcExplanation), 
                    input  '':U (icFcIdentification), 
                    input  '':U (icFcContext), 
                    output viFcReturnSuper (oiReturnStatus)) in BJournal>
                assign oiReturnStatus = -1.
            end. /* end of if t_sJournal.JournalTypeCode = {&JOURNALTYPE-CREDITORINVOICECORRECT} */
        end. /* end of if tqGLCorrectionControlByDomain.tlglcor_ap = false */
        if tqGLCorrectionControlByDomain.tlglcor_ar = false
        then do:
            if t_sJournal.JournalTypeCode = {&JOURNALTYPE-DEBTORINVOICECORRECT} or 
               t_sJournal.JournalTypeCode = {&JOURNALTYPE-DEBTORCREDITNOTECORRECT}
            then do:
                assign vcMessage = #T-25'You cannot select a Customer Invoice Corrections daybook unless you have activated Accounts Receivable in the AP AR Corrections frame of GL Correction Control':255(999890426)T-25#.

                <M-11 run SetMessage
                   (input  vcMessage (icMessage), 
                    input  '':U (icArguments), 
                    input  'tJournal.JournalTypeCode':U (icFieldName), 
                    input  t_sJournal.JournalTypeCode (icFieldValue), 
                    input  'E':U (icType), 
                    input  3 (iiSeverity), 
                    input  t_sJournal.tc_Rowid (icRowid), 
                    input  'QadFin-5472':U (icFcMsgNumber), 
                    input  '':U (icFcExplanation), 
                    input  '':U (icFcIdentification), 
                    input  '':U (icFcContext), 
                    output viFcReturnSuper (oiReturnStatus)) in BJournal>
                assign oiReturnStatus = -1.
            end. /* end of if t_sJournal.JournalTypeCode = {&JOURNALTYPE-CREDITORINVOICECORRECT} */
        end. /* end of if tqGLCorrectionControlByDomain.tlglcor_ap = false */
    end. /* end of if available ... */    
    
    /*  For Revaluation Daybooks Daybook type and Layer Code should be unique  */
    if t_sJournal.tc_Status = "N":U and 
        can-do ({&JOURNALTYPE-REVALCREDITOR} + ",":U + {&JOURNALTYPE-REVALCREDITORDOC} + ",":U + {&JOURNALTYPE-REVALDEBTOR}
                        + ",":U + {&JOURNALTYPE-REVALDEBTORDOC} + ",":U + {&JOURNALTYPE-REVALGL}
                        + ",":U + {&JOURNALTYPE-REVALINTERCO} + ",":U + {&JOURNALTYPE-REVALVAT}
                          ,t_sJournal.JournalTypeCode )
    then do:
        <Q-24 assign vlFcQueryRecordsAvailable = JournalByJournalTypeLayerType (NoCache)
           (input viCompanyId, (CompanyId)
            input t_sJournal.JournalTypeCode, (JournalTypeCode)
            input t_sJournal.tcLayerCode, (LayerCode)
            input true, (JournalIsActive)) in BJournal >   
             
         if vlFcQueryRecordsAvailable <> false
         then do:
             assign vcMessage =  #T-21'The combination of Daybook type and Layer Code should be unique for revaluation daybooks.':160(65709)T-21#.
             assign oiReturnStatus = -1. 
             <M-22 run SetMessage
                (input  vcMessage (icMessage), 
                 input  '':U (icArguments), 
                 input  '':U (icFieldName), 
                 input  '':U (icFieldValue), 
                 input  'E':U (icType), 
                 input  3 (iiSeverity), 
                 input  t_sJournal.tc_Rowid (icRowid), 
                 input  'QadFin-7327':U (icFcMsgNumber), 
                 input  '':U (icFcExplanation), 
                 input  '':U (icFcIdentification), 
                 input  '':U (icFcContext), 
                 output viFcReturnSuper (oiReturnStatus)) in BJournal>
         end.  /* end of if vlFcQueryRecordsAvailable = true  */    
    end.   /* end of if t_sJournal.tc_Status = "N":U and ... */    
    
end. /* end of for each */

if vlJournalGroupByCodeByIDStart
then do:
    <Q-36 run JournalGroupByCodeByID  (Stop) in BJournalGroup >
end.