project QadFinancials > class BPosting > method AddPostingHeader

Description

initialise a posting


Parameters


iiCompanyIdinputintegerCompany ID of the caller
iiPeriodYearinputintegerAccounting Year
iiPeriodPeriodinputintegeraccounting period
icJournalCodeinputcharacteraccounting journal
icReportingJournalCodeinputcharacter
iiVoucherinputintegerWhen zero, a number will be fetched.
When not zero, this number will be used.
itPostingDateinputdateposting date
itValueDateinputdatevalue date (optional)
icPostingTextinputcharacterPostingText
icPostingBusinessRelationTextinputcharacterPostingBusinessRelationText
icPostingInvoiceReferenceTextinputcharacterPostingInvoiceReferenceText
icPostingParentTextinputcharacterPostingParentText
iiBPeriodIdinputintegerInstance of Period
icPostingOriginAddressCodeinputcharactercustomer or supplier code (not used anymore)
icPostingOriginDocumentinputcharacterInvoice number or description of the line or year/number or .....(not used anymore)
icPostingOriginDocumentTypeinputcharacterInvoice Type or document type or journal type or ....(not used anymore)
icBatchNumberinputcharacterBatch number of created posting.
icBankImpLineRefinputcharacterBank Importing Reference
oiPostingIdoutputinteger
ocRowidoutputcharactertposting.tc_Rowid
oiPostingVoucheroutputintegervoucher number
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BAPMatching.AdditionalUpdatesAll
method BAPMatching.CreateMatchingPosting
method BBankEntry.CreatePostingHeader
method BCDocument.AdditionalUpdatesPosting
method BCDocument.AdditionalUpdatesPostingCrossCy
method BCInvoice.AdditionalUpdatesAllCreateCA
method BCInvoice.CreateCIPosting
method BCInvoice.CreateMFPosting
method BConsolid.AdditionalUpdatesPosting
method BDDocument.AdditionalUpdatesPosting
method BDInvoice.AdditionalUpdatesAllCreateDA
method BDInvoice.CreateDIPosting
method BDInvoice.UpdateDeductionDetailPosting
method BExpenseNote.APIExpNoteRegister
method BExpenseNote.CreateAdjustments
method BFixedAssetDepreciation.AdditionalUpdatesPosting
method BFixedAssetDisposal.AdditionalUpdatesPosting
method BFixedAssetRevaluation.AdditionalUpdatesPosting
method BGLOpenItemProcessor.GLOpenItemInitializationPosting
method BPosting.CreatePostingsFromImport
method BJournalEntry.CreateReverseEntries
method BOpenItemAdjustment.OIAdjCreatePosting
method BQCrossCyPosting.ApiProcessQCrossCyPosting
method BSelfBill.ApiCreateInvPrepayPaymentSub
method BYearClosing.AdditionalUpdatesPostingCloseOpenBS
method BYearClosing.AdditionalUpdatesPostingCloseOpenPL
method BYearClosing.AdditionalUpdatesPostingTrans


program code (program1/bposting.p)

/* Normalize input paramters */
if iiCompanyId = 0 or iiCompanyId = ? then assign iiCompanyId                 = viCompanyId.
if icPostingOriginAddressCode     = ? then assign icPostingOriginAddressCode  = "":U.
if icPostingOriginDocument        = ? then assign icPostingOriginDocument     = "":U.
if icPostingOriginDocumentType    = ? then assign icPostingOriginDocumentType = "":U.
if icReportingJournalCode         = ? then assign icReportingJournalCode      = "":U.

if iiPeriodYear   = 0
or iiPeriodYear   = ?
/* or iiPeriodPeriod = 0 - LBO Zero period is a valid period */ 
or iiPeriodPeriod = ?
then do:
    assign vcMessage = trim(#T-14'You must enter the GL calendar year and GL period.':150(3298)T-14#)
           oiReturnStatus = -3.
    <M-6 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  '':U (icRowid),
                     input  'QADFIN-869':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BPosting>
    return.
end.
<Q-13 run PeriodByYearPeriodNull (all) (Read) (NoCache)
   (input iiCompanyId, (CompanyId)
    input iiPeriodYear, (PeriodYear)
    input iiPeriodPeriod, (PeriodPeriod)
    input ?, (PeriodId)
    output dataset tqPeriodByYearPeriodNull) in BPeriod >
find first tqPeriodByYearPeriodNull no-error.
if not available tqPeriodByYearPeriodNull
then do:
    assign viBPeriodPostingID = iiBPeriodId
           vlPeriodExists     = false.
        
    if viBPeriodPostingID <> 0 and viBPeriodPostingID <> ?
    then do:    
        <I-12 {bFcOpenInstance
            &CLASS           = "BPeriod"}>
        <M-9 run CheckPeriodExistence
           (input  iiCompanyId (iiCompanyId), 
            input  iiPeriodYear (iiPeriodYear), 
            input  iiPeriodPeriod (iiPeriodPeriod), 
            output vlPeriodExists (olDoesExist), 
            output viPeriod_ID (oiPeriod_ID), 
            output viPeriodMark_ID (oiPeriodMark_ID), 
            output vtStartDate (otStartDate), 
            output vtEndDate (otEndDate), 
            output vcPeriodTypeCode (ocPeriodTypeCode), 
            output viFcReturnSuper (oiReturnStatus)) in BPeriod>
        <I-11 {bFcCloseInstance
            &CLASS           = "BPeriod"}>
    end.
                                
    if not vlPeriodExists
    then do:
        assign vcMessage = trim(substitute(#T-15'This combination of GL calendar year and GL period &1/&2 cannot be found.':150(3299)T-15#, string(iiPeriodYear), string(iiPeriodPeriod)))
               oiReturnStatus = -3.
        <M-7 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  '':U (icRowid),
                     input  'QADFIN-870':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BPosting>
        return.
    end.
end.

<M-2 run AddDetailLine (input  'posting':U (icTable), 
                        input  '' (icParentRowid), 
                        output oiReturnStatus (oiReturnStatus)) in BPosting>
if oiReturnStatus <> 0
then return.

assign tPosting.Company_ID                   = iiCompanyId
       tPosting.Period_ID                    = if available tqPeriodByYearPeriodNull then tqPeriodByYearPeriodNull.tiPeriod_ID else viPeriod_ID
       tPosting.PostingYear                  = iiPeriodYear
       tPosting.PostingPeriod                = iiPeriodPeriod
       tPosting.PostingYearPeriod            = iiPeriodYear * 100 + iiPeriodPeriod
       tPosting.PeriodMark_ID                = if available tqPeriodByYearPeriodNull then tqPeriodByYearPeriodNull.tiPeriodMark_ID else viPeriodMark_ID
       tPosting.PostingDate                  = itPostingDate
       tPosting.PostingValueDate             = itValueDate
       tPosting.PostingText                  = icPostingText
       tPosting.PostingBusinessRelationTxt  = icPostingBusinessRelationText
       tPosting.PostingInvoiceReferenceTxt  = if icPostingInvoiceReferenceText <> "CREATEDBYPOSTING":U
                                               then icPostingInvoiceReferenceText
                                               else "":U
       tPosting.PostingParentText            = icPostingParentText
       tPosting.PostingBatchNumber           = icBatchNumber
       /* assign period type code for the calculated field in posting if the period was not saved yet */       
       tPosting.tcPeriodTypeCode             = if available tqPeriodByYearPeriodNull then tqPeriodByYearPeriodNull.tcPeriodTypeCode else vcPeriodTypeCode
       tPosting.PostingOriginAddressCode     = icPostingOriginAddressCode
       tPosting.tcReportingJournalCode       = if icReportingJournalCode <> "":U
                                               then icReportingJournalCode
                                               else icJournalCode
       tPosting.PostingBankImpRef            = icBankImpLineRef.

if iiVoucher = 0
or iiVoucher = ?
then do:
    <M-3 run GetPostingNumber (input  tPosting.tc_Rowid (ictcRowid), 
                           input  iiPeriodYear (iiYear), 
                           input  icJournalCode (icJournalCode), 
                           output viFcCount1 (oiVoucher), 
                           output oiReturnStatus (oiReturnStatus)) in BPosting>
    if oiReturnStatus <> 0
    then do:
        delete tPosting.
        return.
    end.
end.
else do:
    <Q-5 run JournalPrim (all) (Read) (NoCache)
       (input tPosting.Company_ID, (CompanyId)
        input icJournalCode, (JournalCode)
        input 0, (JournalID)
        output dataset tqJournalPrim) in BJournal >

    find first tqJournalPrim no-error.
    if available tqJournalPrim
    then assign tPosting.Journal_ID      = tqJournalPrim.tiJournal_ID
                tPosting.tcJournalCode   = icJournalCode
                tPosting.tcLayerTypeCode = tqJournalPrim.tcLayerTypeCode
                tPosting.PostingVoucher  = iiVoucher.
                
     if not can-find (tCommitNumber where
                      tCommitNumber.tcNumberType   = {&COMMITNUMBERTYPE-POSTINGVOUCHER} and
                      tCommitNumber.tcPostingRowID = tPosting.tc_Rowid)
     then do :
         create tCommitNumber.
         assign tCommitNumber.tcNumberType   = {&COMMITNUMBERTYPE-POSTINGVOUCHER}
                tCommitNumber.tcPostingRowID = tPosting.tc_Rowid.             
     end.     

end.
 
/* if this string is in it, then pass year/period journal and voucher */
if icPostingInvoiceReferenceText = "CREATEDBYPOSTING":U
then do:
    assign tPosting.PostingInvoiceReferenceTxt = string(tPosting.PostingYear, "9999":U) + "/":U + string(tPosting.PostingPeriod,"99":U) +
                                                           " ":U + icJournalCode + " ":U + string(tPosting.PostingVoucher, "999999999":U).
end.

assign oiPostingId      = tPosting.Posting_ID
       oiPostingVoucher = tPosting.PostingVoucher
       ocRowid          = tPosting.tc_Rowid.