project QadFinancials > class BJournalEntryMultiCy > method ApiCreateJournalEntryPostingsApplyValidations


Parameters


icRowIdinputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BJournalEntryMultiCy.ApiProcessIncomingData


program code (program1/bjournalentrymulticy.p)

/* ================================================================ */
/* This method performs validations on the incoming dataset         */
/* All tables are validated before returning - even if an error     */
/* is found.                                                        */
/* ================================================================ */

find first tPostingHeaderMultiCy where
        tPostingHeaderMultiCy.tc_Rowid = icRowid and
        tPostingHeaderMultiCy.tlPostingHeaderIsPosted = false 
        no-lock no-error.
    
if available tPostingHeaderMultiCy 
then do:

    /* =================================================================================== */
    /* Go through all postings of the input                                                */
    /* =================================================================================== */
    for each tPostingMultiCy where 
             tPostingMultiCy.tc_parentRowid = tPostingHeaderMultiCy.tc_rowid 
             on error undo, throw:
             
        /* =================================================================================== */
        /* Journal related validations                                                         */
        /* =================================================================================== */
        <Q-70 run JournalPrim (all) (Read) (Cache)
           (input tPostingMultiCy.company_id, (CompanyId)
            input tPostingMultiCy.tcJournalCode, (JournalCode)
            input ?, (JournalID)
            output dataset tqJournalPrim) in BJournal>
        for first tqJournalPrim no-lock where tqJournalPrim.tcJournalCode = tPostingMultiCy.tcJournalCode:            
            assign 
                tPostingMultiCy.tcLayerTypeCode = tqJournalPrim.tcLayerTypeCode
                tPostingMultiCy.journal_id = tqJournalPrim.tijournal_id.                    
        end. /* for first tqJournalPrim */
        if not available tqJournalPrim 
        then do:            
            assign
                vcMsgExplanation    = <M-36 GetErrorExplanation
                                         (input  tPostingMultiCy.tc_Rowid (icPostingRowId), 
                                          input  ? (icPostingLineRowId), 
                                          output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy>    
                vcMessageText = trim(substitute(#T-89'An invalid Daybook &1 was specified for entity &2':255(364845521)T-89#,tPostingMultiCy.tcJournalCode, tPostingMultiCy.tcCompanyCode))
                oiReturnStatus = -1.
            <M-15 run SetMessage
               (input  vcMessageText (icMessage), 
                input  '' (icArguments), 
                input  'PostingMultiCy.tcJournalCode' (icFieldName), 
                input  tPostingMultiCy.tcJournalCode (icFieldValue), 
                input  'E' (icType), 
                input  1 (iiSeverity), 
                input  tPostingMultiCy.tc_rowid (icRowid), 
                input  'qadfin-714717':U (icFcMsgNumber), 
                input  vcMsgExplanation (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy>                    
        end. /* if not available tqJournalPrim */
        
        /* =================================================================================================== */
        /* Although the period and period-mark of the postings is validated later on by class BPosting itself, */ 
        /* we here already make sure that the combination of CompanyCode and  Period or PeriodMark exist.      */
        /* The reason for checking this already here is that we can give a more clear message - including the  */
        /* CompanyCode - to the user                                                                           */
        /* =================================================================================================== */
        if tPostingMultiCy.Company_ID <> 0 and 
           tPostingMultiCy.Company_ID <> ?
        then do :
            if tPostingMultiCy.PostingYear   = 0 or 
               tPostingMultiCy.PostingYear   = ? or 
               tPostingMultiCy.PostingPeriod = 0 or 
               tPostingMultiCy.PostingPeriod = ?
            then do :
                assign 
                    vcMsgExplanation    = <M-45 GetErrorExplanation
                                             (input  tPostingMultiCy.tc_Rowid (icPostingRowId), 
                                              input  ? (icPostingLineRowId), 
                                              output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy>
                    vcMessageText = trim(substitute(#T-17'You must enter the year and period of the posting on entity &1.':255(23237964)T-17#,tPostingMultiCy.tcCompanyCode))
                    oiReturnStatus = -1.
                <M-34 run SetMessage
                   (input  vcMessageText (icMessage), 
                    input  '':U (icArguments), 
                    input  'tPostingMultiCy.PostingPeriod':U (icFieldName), 
                    input  tPostingMultiCy.PostingPeriod (icFieldValue), 
                    input  'E':U (icType), 
                    input  3 (iiSeverity), 
                    input  tPostingMultiCy.tc_rowid (icRowid), 
                    input  'qadfin-126773':U (icFcMsgNumber), 
                    input  vcMsgExplanation (icFcExplanation), 
                    input  '' (icFcIdentification), 
                    input  '' (icFcContext), 
                    output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy>   
            end. /* if tPostingMultiCy.PostingYear   = 0 or  */
            else do :
                <Q-64 run PeriodPrim (all) (Read) (NoCache)
                   (input tPostingMultiCy.Company_ID, (CompanyId)
                    input ?, (PeriodId)
                    input tPostingMultiCy.PostingYear, (PeriodYear)
                    input tPostingMultiCy.PostingPeriod, (PeriodPeriod)
                    output dataset tqPeriodPrim) in BPeriod>
                Find first tqPeriodPrim where 
                           tqPeriodPrim.tiCompany_ID   = tPostingMultiCy.Company_ID  and 
                           tqPeriodPrim.tiPeriodYear   = tPostingMultiCy.PostingYear and  
                           tqPeriodPrim.tiPeriodPeriod = tPostingMultiCy.PostingPeriod
                           no-error.
                if not available tqPeriodPrim
                then do :
                    assign
                        vcMsgExplanation    = <M-74 GetErrorExplanation
                                                 (input  tPostingMultiCy.tc_Rowid (icPostingRowId), 
                                                  input  ? (icPostingLineRowId), 
                                                  output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy> 
                        vcMessageText = trim(substitute(#T-32'This period (&1/&2) is not defined for Entity &3.':255(351538488)T-32#,tPostingMultiCy.PostingYear,tPostingMultiCy.PostingPeriod,tPostingMultiCy.tcCompanyCode))
                        oiReturnStatus = -1.
                    <M-9 run SetMessage
                       (input  vcMessageText (icMessage), 
                        input  '':U (icArguments), 
                        input  'tPostingMultiCy.PostingPeriod':U (icFieldName), 
                        input  tPostingMultiCy.PostingPeriod (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  tPostingMultiCy.tc_rowid (icRowid), 
                        input  'qadfin-913565':U (icFcMsgNumber), 
                        input  vcMsgExplanation (icFcExplanation), 
                        input  '' (icFcIdentification), 
                        input  '' (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy>   
                end. /* if not available tqPeriodPrim */
            end. /* else if tPostingMultiCy.PostingYear   = 0 or  */
        end. /* if tPostingMultiCy.Company_ID <> 0 and */    
        
    end. /* for each tPostingMultiCy */  
 
end. /* if available tPostingHeaderMultiCy */