project QadFinancials > class BDInvoice > method UpdateDInvoiceOpInfo
Description
update dinvoice operational info
Parameters
Internal usage
QadFinancials
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: */