project QadFinancials > class BPosting > method MassDeletePeriodicCostingPostings

Description

MassDeletePeriodicCostingPostings; this api-method is called from the Periodic-costing module to delete a bunch of postings of a certain company, journal (type periodic costing) and period.
The method returns a temp-table holding the main info of the postings that are deleted.


Parameters


icCompanyCodeinputcharacterCompanyCode: Mandatory.
This should be the current company
icJournalCodeinputcharacterJornalCode: Mandatory.
The type of this journal should be Periodic-costing
iiPostingYearinputintegerPostingYear: Mandatory. accounting-year format 9999
iiPostingPeriodinputintegerPostingPeriod: Mandatory. accounting-period format 99
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BPosting.ApiMassDeletePeriodicCostingPostings
method BPosting.ApiMassDeletePeriodicCostingPostingsByDomain


program code (program8/bposting.p)

MAINPCDELETIONBLOCK: DO :
    if icCompanyCode = "" or
       icCompanyCode = ?
    then do:
        assign vcMessage      = #T-70'The entity is a mandatory parameters for this method.':255(561770151)T-70#
               oiReturnStatus = -3.
        <M-76 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-424072':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BPosting>
        Leave MAINPCDELETIONBLOCK.
    end. /* if icCompanyCode = "":U or */

    <Q-58 run CompanyByCompanyCode (all) (Read) (Cache)
       (input icCompanyCode, (CompanyCode)
        input ?, (CompanyId)
        output dataset tqCompanyByCompanyCode) in BCompany>
    find tqCompanyByCompanyCode where
         tqCompanyByCompanyCode.tcCompanyCode = icCompanyCode
         no-error.
    if not available tqCompanyByCompanyCode
    then do:
        assign vcMessage      = trim(substitute(#T-72'The entity (&1) does not exist.':255(753022446)T-72#, icCompanyCode))
               oiReturnStatus = -3.
        <M-62 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-816902':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BPosting>
        Leave MAINPCDELETIONBLOCK.
    end. /* if not available tqCompanyByCompanyCode */

    /* =================================================================================== */
    /* Call DataLoad with a free-form that looks like this: ?                              */
    /* for each Posting where Posting.Company_ID = tqCompanyByCompanyCode.tiCompany_ID and */
    /*          Posting.PostingYear = iiPostingYear and                                    */
    /*          Posting.PostingPeriod = iiPostingPeriod and                                */
    /*          Posting.Journal_ID = viJournalCode                                         */
    /* Note the journal can be found in tqJournalByJournalCodeWithLayer                    */
    /* If no postings were loaded then just raise a warning and leave                      */
    /* =================================================================================== */
    assign vcFreeForm = "For each Posting where ":U + 
                        "Posting.Company_ID = ":U +  string(tqCompanyByCompanyCode.tiCompany_ID) + " and ":U + 
                        "Posting.PostingYear = ":U +  string(iiPostingYear) + " and ":U +
                        "Posting.PostingPeriod = ":U +  string(iiPostingPeriod) + " and ":U + 
                        "Posting.Journal_ID = ":U +  string(tqJournalByJournalCodeWithLayer.tiJournal_ID).
    <M-2 run DataLoad
       (input  '':U (icRowids), 
        input  '':U (icPkeys), 
        input  '':U (icObjectIds), 
        input  vcFreeForm (icFreeform), 
        input  true (ilKeepPrevious), 
        output viFcReturnSuper (oiReturnStatus)) in BPosting>
    if viFcReturnSuper <> 0
    then assign oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper < 0
    then leave MAINPCDELETIONBLOCK.
    if not can-find (first tPosting)
    then do :
        /* Here we raise a warning but we still leave the block as there is no any more actions to take */
        assign oiReturnStatus = (if oiReturnStatus >= 0 then 1 else oiReturnStatus)
               vcMessage      = trim(substitute(#T-21'No postings were found that matched entity (&1), daybook (&2), year (&3), and period (&4).  No postings were deleted, and no further action can be taken.':255(733738028)T-21#, icCompanyCode,icJournalCode,iiPostingYear,iiPostingPeriod)).
        <M-29 run SetMessage
           (input  vcMessage (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'W':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'qadfin-563002':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BPosting>
        Leave MAINPCDELETIONBLOCK.
    end. /* If not can-find (first tPosting) */
    
    /* =============================================================================== */
    /* Load also counter part of mirroring posting, which was created as part of the   */
    /* Periodic costing with activated Mirroring accounting                            */
    /* =============================================================================== */
    <M-67 run DataLoadMirrorPosting  (output viFcReturnSuper (oiReturnStatus)) in BPosting>
    if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper < 0 then leave MAINPCDELETIONBLOCK.    

    /* ================================================================================================ */
    /* Set tc_status = D for al tPosting record and create a record in the output temp-table for it     */
    /* ================================================================================================ */
    for each tPosting on error undo, throw: 
        assign tPosting.tc_Status = "D":U.       

        create tApiPeriodicCostingPostings.
        assign tApiPeriodicCostingPostings.tcCompanyCode                = icCompanyCode
               tApiPeriodicCostingPostings.tiPostingYear                = tPosting.PostingYear
               tApiPeriodicCostingPostings.tcJournalCode                = tPosting.tcJournalCode
               tApiPeriodicCostingPostings.tiPostingVoucher             = tPosting.PostingVoucher
               tApiPeriodicCostingPostings.tcPostingOriginReference     = tPosting.PostingOriginReference
               tApiPeriodicCostingPostings.tcPostingOriginatorReference = tPosting.PostingOriginatorReference.
    end. /* For each tPosting */
END. /* MAINPCDELETIONBLOCK */