project QadFinancials > class BDInvoice > method UpdateDInvoiceOpInfo

Description

update dinvoice operational info


Parameters


tApiUpdateDInvoiceOpInfoinputtemp-table
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BDInvoice.ApiUpdateDInvoiceOpInfo


program code (program3/bdinvoice.p)

UPDATE_BLOCK:
do on error undo, throw:

    /* Make sure no data exists in tTables */
    <M-39 run ClearData  (output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
    if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
    then assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0
    then leave UPDATE_BLOCK.

    /* get all dinvoice ids */
    assign vcDInvoiceIds = "":U.
    for each tApiUpdateDInvoiceOpInfo:

        if vcDInvoiceIds <> "":U
        then assign vcDInvoiceIds = vcDInvoiceIds + ",":U.
    
        assign vcDInvoiceIds = vcDInvoiceIds + string(tApiUpdateDInvoiceOpInfo.tiDInvoiceId).
    end. /* for each tApiUpdateDInvoiceOpInfo: */
    
    /* load data */
    if length(vcDInvoiceIds,"CHARACTER") > 30000
    then do:
        <M-97 run DataLoad
           (input  '':U (icRowids), 
            input  '':U (icPkeys), 
            input  vcDInvoiceIds (icObjectIds), 
            input  '':U (icFreeform), 
            input  yes (ilKeepPrevious), 
            output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
        if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
        then assign oiReturnStatus = viFcReturnSuper.
        if oiReturnStatus < 0
        then leave UPDATE_BLOCK.
        
        assign vcDInvoiceIds = "":U.
        
    end. /* if length(vcDInvoiceIds,"CHARACTER") > 30000 */
    
    if vcDInvoiceIds <> "":U
    then do:
    
        <M-50 run DataLoad
           (input  '':U (icRowids), 
            input  '':U (icPkeys), 
            input  vcDInvoiceIds (icObjectIds), 
            input  '':U (icFreeform), 
            input  false (ilKeepPrevious), 
            output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
        if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
        then assign oiReturnStatus = viFcReturnSuper.
        if oiReturnStatus < 0
        then leave UPDATE_BLOCK.
        
    end. /* if vcDInvoiceIds = "":U */
    
    /* check if tDinvoice buffer available */
    find first tDInvoice no-error.
    if not available tDInvoice
    then do:
        assign oiReturnStatus = 0.
        leave UPDATE_BLOCK.
    end.

    /* begin to update DInvoiceOpInfo table */
    for each tApiUpdateDInvoiceOpInfo:

        find first tDInvoiceOpInfo where 
            tDInvoiceOpInfo.DInvoice_ID            = tApiUpdateDInvoiceOpInfo.tiDInvoiceId and
            tDInvoiceOpInfo.DInvoiceOpInfoGTDocNbr = tApiUpdateDInvoiceOpInfo.tcDocNbr and
            tDInvoiceOpInfo.DInvoiceOpInfoType     = {&DINVOICEOPINFOTYPE-GOLDENTAX} and
            tDInvoiceOpInfo.tc_Status              <> 'N':U no-error.
        
        if available tDInvoiceOpInfo
        then do:
            /* update */
            assign tDInvoiceOpInfo.DInvoiceOpInfoCode         = tApiUpdateDInvoiceOpInfo.tcGTInvNbr  
                   tDInvoiceOpInfo.DInvoiceOpInfoGTUpdateType = {&GOLDENTAX-UPDATE-TYPE-AUT}
                   tDInvoiceOpInfo.tc_Status                  = 'C':U.     
        end.
        else do:
            /* create */
            find first tDInvoice where tDInvoice.DInvoice_ID = tApiUpdateDInvoiceOpInfo.tiDInvoiceId no-error.
            if available tDInvoice
            then do:
                <M-35 run AddDetailLine
                   (input  'DInvoiceOpInfo':U (icTable), 
                    input  tDInvoice.tc_Rowid (icParentRowid), 
                    output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
                if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
                then assign oiReturnStatus = viFcReturnSuper.
                if oiReturnStatus < 0
                then leave UPDATE_BLOCK.
                assign tDInvoiceOpInfo.DInvoice_ID                = tApiUpdateDInvoiceOpInfo.tiDInvoiceId
                       tDInvoiceOpInfo.DInvoiceOpInfoType         = {&DINVOICEOPINFOTYPE-GOLDENTAX}
                       tDInvoiceOpInfo.DInvoiceOpInfoCode         = tApiUpdateDInvoiceOpInfo.tcGTInvNbr
                       tDInvoiceOpInfo.DInvoiceOpInfoGTDocNbr     = tApiUpdateDInvoiceOpInfo.tcDocNbr
                       tDInvoiceOpInfo.DInvoiceOpInfoGTUpdateType = {&GOLDENTAX-UPDATE-TYPE-AUT}.
            end.   
        end. /* else do: */
    end. /* for each tApiUpdateDInvoiceOpInfo: */
end. /* do on error undo, return: */