project QadFinancials > class BJournalEntry > method CreateRecEntryPosting

Description

Method to create postings based on a template (of a recurring entry).


Parameters


iiCompanyIdinputinteger
iiPeriodIDinputintegerPeriod ID
icJournalCodeinputcharacterDaybook Code
itPostingDateinputdateposting date
icPostingTextinputcharacterPosting Text
iiRecEntryLineIdinputinteger
icTemplateCodeinputcharacterTemplate Code
idAmountLCinputdecimalAmount lc
icRowidinputcharacterRow ID
itReversingDateinputdateReversing Date
tChangedEntryLineinputtemp-table
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BRecurringEntry.ApiPostRecEntryCommit


program code (program7/bjournalentry.p)

/* ================================================================ */
/* PART I. Validate the input-parameters                            */
/* ================================================================ */
if iiCompanyId = 0 or iiCompanyId = ? then assign iiCompanyId = viCompanyId.    
    
    /* =================== */
    /* Validate the Period */
    /* =================== */
    if iiPeriodID = ? or
       iiPeriodID = 0
    then do:
        assign vcMsgJE        = trim(#T-22'You must enter the GL period.':150(2748)T-22#)
               oiReturnStatus = -3.
        <M-1 run SetMessage (input  vcMsgJE (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'E':U (icType),
                     input  '3':U (iiSeverity),
                     input  icRowid (icRowid),
                     input  'QADFIN-1007':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    end.

    <Q-2 run PeriodPrim (all) (Read) (NoCache)
       (input iiCompanyId, (CompanyId)
        input iiPeriodID, (PeriodId)
        input ?, (PeriodYear)
        input ?, (PeriodPeriod)
        output dataset tqPeriodPrim) in BPeriod >
    find tqPeriodPrim no-lock no-error.
    if not available tqPeriodPrim
    then do:
        assign vcMsgJE        = trim(#T-23'The GL period cannot be found.':150(2749)t-23#)
               oiReturnStatus = -3.
        <M-3 run SetMessage (input  vcMsgJE (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  iiPeriodID (icFieldValue),
                     input  'E':U (icType),
                     input  '3':U (iiSeverity),
                     input  icRowid (icRowid),
                     input  'QADFIN-1010':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    end.

    /* ========================= */
    /* Validate the Journal Code */
    /* ========================= */
    if icJournalCode = ? or
       icJournalCode = '':U
    then do:
        assign vcMsgJE        = trim(#T-24'You must enter a daybook code.':150(2750)T-24#)
               oiReturnStatus = -3.
        <M-4 run SetMessage (input  vcMsgJE (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'E':U (icType),
                     input  '3':U (iiSeverity),
                     input  icRowid (icRowid),
                     input  'QADFIN-1011':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    end.

    <Q-7 run JournalPrim (all) (Read) (NoCache)
       (input iiCompanyId, (CompanyId)
        input icJournalCode, (JournalCode)
        input ?, (JournalID)
        output dataset tqJournalPrim) in BJournal >
    find tqJournalPrim no-lock no-error.
    if not available tqJournalPrim
    then do:
        assign vcMsgJE        = trim(substitute(#T-25'The daybook code &1 cannot be found.':150(2751)t-25#, trim(icJournalCode)))
               oiReturnStatus = -3.
        <M-6 run SetMessage (input  vcMsgJE (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  icJournalCode (icFieldValue),
                     input  'E':U (icType),
                     input  '3':U (iiSeverity),
                     input  icRowid (icRowid),
                     input  'QADFIN-1012':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    end.
    
    /* ========================= */
    /* Validate the posting date */
    /* ========================= */
    if itPostingDate = ?
    then do:
        assign vcMsgJE        = trim(#T-26'You must enter the posting date.':150(2752)T-26#)
               oiReturnStatus = -3.
        <M-8 run SetMessage (input  vcMsgJE (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'E':U (icType),
                     input  '3':U (iiSeverity),
                     input  icRowid (icRowid),
                     input  'QADFIN-1013':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    end.

    /* ========================= */
    /* Validate the Posting Text */
    /* ========================= */
    if icPostingText = ? or
       icPostingText = '':U
    then do:
        assign vcMsgJE        = trim(#T-27'You must enter the posting text.':150(2753)T-27#)
               oiReturnStatus = -3.
        <M-9 run SetMessage (input  vcMsgJE (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'E':U (icType),
                     input  '3':U (iiSeverity),
                     input  icRowid (icRowid),
                     input  'QADFIN-1014':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    end.
    
    /* ========================== */                                
    /* Validate the Template Code */
    /* ========================== */        
    if icTemplateCode = ? or
       icTemplateCode = '':U
    then do:
        assign vcMsgJE        = trim(#T-28'You must enter the posting template code.':150(2754)T-28#)
               oiReturnStatus = -3.
        <M-10 run SetMessage (input  vcMsgJE (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'E':U (icType),
                     input  '3':U (iiSeverity),
                     input  icRowid (icRowid),
                     input  'QADFIN-1008':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    end.

    <Q-13 run PostingTemplatePrim (all) (Read) (NoCache)
       (input iiCompanyId, (CompanyId)
        input ?, (TemplateID)
        input icTemplateCode, (TemplateCode)
        input ?, (PostingID)
        output dataset tqPostingTemplatePrim) in BPostingTemplate >
    find tqPostingTemplatePrim no-lock no-error.
    if not available tqPostingTemplatePrim
    then do:
        assign vcMsgJE        = trim(substitute(#T-29'The posting template &1 cannot be found.':150(2755)t-29#, trim(icTemplateCode)))
               oiReturnStatus = -3.
        <M-12 run SetMessage (input  vcMsgJE (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  icTemplateCode (icFieldValue),
                     input  'E':U (icType),
                     input  '3':U (iiSeverity),
                     input  icRowid (icRowid),
                     input  'QADFIN-1009':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    end.   

    if oiReturnStatus < 0
    then return.

/* ================================================================ */
/* PART II. Create the posting based on a template                  */
/* ================================================================ */
    <M-15 run CreateRecEntryPostingTemplate
       (input  iiCompanyId (iiCompanyId), 
        input  icTemplateCode (icTemplateCode), 
        input  iiRecEntryLineId (iiRecEntryLineId), 
        input  icPostingText (icPostingText), 
        input  idAmountLC (idAmountLC), 
        input  icJournalCode (icJournalCode), 
        input  itPostingDate (itPostingDate), 
        input  iiPeriodID (iiPeriodID), 
        output vcRowid (ocPostingTcRowid), 
        input  tChangedEntryLine (tChangedEntryLine), 
        output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
    then assign oiReturnStatus = viFcReturnSuper.        
    if oiReturnStatus < 0
    then return.

/* ================================================================ */
/* PART III. Create the reversing posting if necessary              */
/* ================================================================ */
    if itReversingDate <> ?
    then do:
        <Q-17 run PeriodByStartEndDate (all) (Read) (NoCache)
           (input iiCompanyId, (CompanyId)
            input itReversingDate, (Date)
            output dataset tqPeriodByStartEndDate) in BPeriod >
        find tqPeriodByStartEndDate where
             tqPeriodByStartEndDate.tcPeriodTypeCode = {&PERIODTYPECODE-NORMAL}
             no-lock no-error.
        if not available tqPeriodByStartEndDate
        then do:
            assign vcMsgJE        = trim(substitute(#T-30'No GL period exists for the reversing date &1.':150(2759)t-30#, trim(string(itReversingDate))))
                   oiReturnStatus = -1.
            <M-18 run SetMessage (input  vcMsgJE (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  itReversingDate (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  '':U (icRowid),
                     input  'QADFIN-1033':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
            return.
        end.        
        
        <M-16 run CreateRecEntryPostingReverse (input  vcRowid (icPostingTcRowid), 
                                        input  icJournalCode (icNewJournalCode), 
                                        input  tqPeriodByStartEndDate.tiPeriodPeriod (iiNewPeriodPeriod), 
                                        input  tqPeriodByStartEndDate.tiPeriodYear (iiNewPeriodYear), 
                                        input  itReversingDate (itNewPostingDate), 
                                        input  '':U (icNewPostingText), 
                                        output viPostingID (oiNewPostingID), 
                                        output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>    
        if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
        then assign oiReturnStatus = viFcReturnSuper.        
        if oiReturnStatus < 0
        then return.    
    end. /* if itReversingDate <> ? */
    
/* =============================================== */
/* PART IV. Run Validate Component BJournalEntry   */
/* =============================================== */
    <M-19 run ValidateBC (output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
    then assign oiReturnStatus = viFcReturnSuper.        
    if oiReturnStatus < 0
    then return.    

/* =============================================== */
/* PART V. Run Additional Updates in BJournalEntry */
/* =============================================== */
    <M-20 run AdditionalUpdates (output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
    then assign oiReturnStatus = viFcReturnSuper.        
    if oiReturnStatus < 0
    then return.    

/* =============================================== */
/* PART VI. Run Datasave for BJournalEntry         */
/* =============================================== */
    <M-21 run DataSave (output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
    then assign oiReturnStatus = viFcReturnSuper.        
    if oiReturnStatus < 0
    then return.