project QadFinancials > class BOpenItemAdjustment > method OIAdjCreatePosting

Description

OIAdjCreatePosting


Parameters


iiCompanyIDinputintegerEntity ID
iiPostingYearinputintegerPostingYear
iiPostingPeriodinputintegerPostingPeriod
itPostingDateinputdatePostingDate
icPostingJournalCodeinputcharacter
ocJournalTypeCodeoutputcharacter
ocLayerCodeoutputcharacterLayer Code
oiPostingIDoutputinteger
oiPostingVoucheroutputinteger
ocPostingTcRowidoutputcharacterPostingTcRowid
oiBJournalEntryIdoutputintegerInstance-ID of BJournalEntry
ocLCCurrencyCodeoutputcharacterLCCurrencyCode
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program6/bopenitemadjustment.p)

/* ================== */
    /* Set default return */
    /* ================== */
    assign oiReturnStatus = -98.
    
    /* ================================================================= */
    /* Clear the instance and the external ones so we start from scratch */
    /* Reset the data-items that represent the link to the posting       */
    /* ================================================================= */
    <M-13 run StopExternalInstancesExceptBJE (output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
    assign viMainPostingID          = 0
           viMainPostingVoucher     = 0
           vcMainPostingTcRowid     = "":U
           vcMainPostingJournalCode = "":U.
    empty temp-table tOIAdj.
    empty temp-table tOICMovement.
    empty temp-table tOIDMovement.
    empty temp-table tOIOpenBalance.
    
    /* ============================================ */
    /* Replace Unknown values + Validate parameters */
    /* ============================================ */
    if iiPostingYear = ? then assign iiPostingYear = 0.
    if iiPostingPeriod = ? then assign iiPostingPeriod = 0.
    if icPostingJournalCode = ? then assign icPostingJournalCode = "":U.
    if iiPostingYear        = 0 or
       iiPostingPeriod      = 0 or
       icPostingJournalCode = "":U
    then do :                                
        assign vcMsgOIAdj     = trim(substitute(#T-16'You must enter the posting year (&1), GL period (&2), and daybook (&3).':255(2909)T-16#,string(iiPostingYear),string(iiPostingPeriod),icPostingJournalCode))
               oiReturnStatus = -1.
        <M-1 run SetMessage
           (input  vcMsgOIAdj (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'QADFIN-675':U (icFcMsgNumber), 
            input  '' (icFcExplanation), 
            input  '' (icFcIdentification), 
            input  '' (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
        Return.
    end. /* if iiPostingYear        = 0 or */
    
    /* ============================================== */
    /* Get the Layer and Control based on the Journal */
    /* ============================================== */
    <Q-8 run JournalByJournalLayer (all) (Read) (NoCache)
          (input iiCompanyID, (CompanyId)
           input icPostingJournalCode, (JournalCode)
           input ?, (CandoJournalTypeCode)
           input ?, (LayerCode)
           input ?, (CandoLayerTypeCode)
           input ?, (JournalID)
           input ?, (JournalIsActive)
           output dataset tqJournalByJournalAndLayer) in BJournal >
    find first tqJournalByJournalAndLayer no-lock NO-error.
    if not available tqJournalByJournalAndLayer 
    then do :
        assign vcMsgOIAdj     = trim(substitute(#T-17'The system cannot determine the layer based on the daybook (&1).':255(2910)T-17#,icPostingJournalCode))
               oiReturnStatus = -1.
        <M-9 run SetMessage
           (input  vcMsgOIAdj (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'QADFIN-678':U (icFcMsgNumber), 
            input  '' (icFcExplanation), 
            input  '' (icFcIdentification), 
            input  '' (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
        Return.
    end. /* if not available tqJournalByJournalAndLayer */
    if tqJournalByJournalAndLayer.tcJournalTypeCode <> {&JOURNALTYPE-CREDITORADJUSTMENT} and
       tqJournalByJournalAndLayer.tcJournalTypeCode <> {&JOURNALTYPE-DEBTORADJUSTMENT} 
    then do:
        assign vcMsgOIAdj     = trim(subst(#T-18'The daybook type of the selected daybook must be &1 or &2.':255(2911)T-18#, {&JOURNALTYPE-CREDITORADJUSTMENT-TR}, {&JOURNALTYPE-DEBTORADJUSTMENT-TR}))
               oiReturnStatus = -1.
        <M-15 run SetMessage
           (input  vcMsgOIAdj (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'QADFIN-1141':U (icFcMsgNumber), 
            input  '' (icFcExplanation), 
            input  '' (icFcIdentification), 
            input  '' (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
        return.
    end. /* if tqJournalByJournalAndLayer.tcJournalTypeCode <> {&JOURNALTYPE-CREDITORADJUSTMENT} and */
    if tqJournalByJournalAndLayer.tcJournalControl <> {&JOURNALCONTROL-FINANCIAL}
    then do:
        assign vcMsgOIAdj     = trim(substitute(#T-25'A daybook with an invalid Daybook control (&1) was specified.':255(69632)T-25#, tqJournalByJournalAndLayer.tcJournalControl)) + chr(10) +
                                trim(substitute(#T-26'You can only specify daybooks with control &1.':255(69634)T-26#,{&JOURNALCONTROL-FINANCIAL-TR}))
               oiReturnStatus = -1.
        <M-23 run SetMessage
           (input  vcMsgOIAdj (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'QadFin-8205':U (icFcMsgNumber), 
            input  '' (icFcExplanation), 
            input  '' (icFcIdentification), 
            input  '' (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
        return.
    end. /* if tqJournalByJournalAndLayer.tcJournalControl <> {&JOURNALCONTROL-FINANCIAL} */
    assign ocJournalTypeCode = tqJournalByJournalAndLayer.tcJournalTypeCode 
           ocLayerCode       = tqJournalByJournalAndLayer.tcLayerCode.
    
    /* ================================================================== */
    /* Start instance of JE / No instance of BJournalEntry may exist yet  */
    /* ================================================================== */
    if viBJournalEntryID <> 0 and
       viBJournalEntryID <> ?
    then do :   
        assign vcMsgOIAdj     = trim(#T-19'Internal error. The system cannot find an active instance of the journal entry. Contact your system administrator.':255(2912)T-19#) + chr(10) + 
                                trim(substitute(#T-20'Journal entry: &1.':255(2913)T-20#,string(viBJournalEntryID))).
               oiReturnStatus = -1.
        <M-5 run SetMessage
           (input  vcMsgOIAdj (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'S':U (icType), 
            input  1 (iiSeverity), 
            input  '':U (icRowid), 
            input  'QADFIN-676':U (icFcMsgNumber), 
            input  '' (icFcExplanation), 
            input  '' (icFcIdentification), 
            input  '' (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
        Return.
    end. /* if viBJournalEntryID <> 0 */
    <I-4 {bFcStartAndOpenInstance
            &ADD-TO-TRANSACTION = "true"
            &CLASS              = "BJournalEntry"}>
    assign oiBJournalEntryId       = viBJournalEntryID
           vlBJEIsStartedFromOIAdj = true.
    <M-14 run SetPublicData (input  'vlPostingMustBeBalanced':U (icDataList), 
                         input  'false':U (icValueList), 
                         output  viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    
    /* ================================================================== */
    /* Call method in BJournalEntry that creates the posting header       */
    /* ================================================================== */
    <M-6 run AddPostingHeader
       (input  iiCompanyID (iiCompanyId), 
        input  iiPostingYear (iiPeriodYear), 
        input  iiPostingPeriod (iiPeriodPeriod), 
        input  icPostingJournalCode (icJournalCode), 
        input  '' (icReportingJournalCode), 
        input  0 (iiVoucher), 
        input  itPostingDate (itPostingDate), 
        input  ? (itValueDate), 
        input  substring((string(iiPostingYear, '9999':U) + '/':U + string(iiPostingPeriod,'99':U) + '/ ':U + icPostingJournalCode + '/':U + trim(#T-21'Open Item Adjustment':30(2900)t-21#)),1,36, 'CHARACTER') (icPostingText), 
        input  '':U (icPostingBusinessRelationText), 
        input  '':U (icPostingInvoiceReferenceText), 
        input  '':U (icPostingParentText), 
        input  ? (iiBPeriodId), 
        input  ? (icPostingOriginAddressCode), 
        input  ? (icPostingOriginDocument), 
        input  ? (icPostingOriginDocumentType), 
        input  '':U (icBatchNumber), 
        input  ? (icBankImpLineRef), 
        output oiPostingID (oiPostingId), 
        output ocPostingTcRowid (ocRowid), 
        output oiPostingVoucher (oiPostingVoucher), 
        output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    if viFcReturnSuper <> 0
    then do :   
        <I-10 {bFcCloseAndStopInstance
            &CLASS           = "BJournalEntry"}>
        assign vcMsgOIAdj     = trim(substitute(#T-22'An error occurred while creating the posting: &1. See further on for more details.':255(2914)T-22#,string(viFcReturnSuper))).
               oiReturnStatus = viFcReturnSuper.
        <M-7 run SetMessage
           (input  vcMsgOIAdj (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'QADFIN-677':U (icFcMsgNumber), 
            input  '' (icFcExplanation), 
            input  '' (icFcIdentification), 
            input  '' (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BOpenItemAdjustment>
        Return.
    end. /* if viFcReturnSuper <> 0 */
    assign viMainPostingID              = oiPostingID
           vcMainPostingTcRowid         = ocPostingTcRowid
           viMainPostingVoucher         = oiPostingVoucher
           vcMainPostingJournalCode     = icPostingJournalCode
           vcMainPostingJournalTypeCode = tqJournalByJournalAndLayer.tcJournalTypeCode 
           vtMainPostingDate            = itPostingDate
           viMainPostingYear            = iiPostingYear
           viMainPostingPeriod          = iiPostingPeriod
           viMainPostingCompanyID       = iiCompanyID
           ocLCCurrencyCode             = vcCompanyLC.
    
    /* ===================================================== */
    /* Everything OK; Close the Instance without stopping it */
    /* ===================================================== */
    <I-11 {bFcCloseInstance
            &CLASS           = "BJournalEntry"}>
    
    /* ================== */
    /* Set default return */
    /* ================== */
    assign oiReturnStatus = 0.