project QadFinancials > class BBankNumber > method CreateBankNumberAsCopy
Description
Create new supplier/customer bank accounts based on existing ones.
Parameters
tBankNumberToCreate | input-output | temp-table | |
ilClearData | input | logical | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program3/bbanknumber.p)
if oiReturnStatus = 0
then oiReturnStatus = -98.
if ilClearData = true
then do:
/* clear the class table */
<M-2 run ClearData (output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
end. /* end of if ilClearData */
/* get data of existing bank numbers which are copied */
assign vcBankNumberIDList = '':U.
for each tBankNumberToCreate:
if not can-find (first tBankNumber
where tBankNumber.BankNumber_ID = tBankNumberToCreate.tiOldBankNumberId)
then assign vcBankNumberIDList = if vcBankNumberIDList = "":U
then string(tBankNumberToCreate.tiOldBankNumberId)
else
if lookup(string(tBankNumberToCreate.tiOldBankNumberId), vcBankNumberIDList, chr(4)) = 0
then vcBankNumberIDList + chr(4) + string (tBankNumberToCreate.tiOldBankNumberId)
else vcBankNumberIDList.
end. /* end of for each tBankNumberToCreate */
/* get the old bank number record to be duplicated */
if vcBankNumberIDList <> '':U
then do:
<M-1 run DataLoad
(input '':U (icRowids),
input vcBankNumberIDList (icPkeys),
input '':U (icObjectIds),
input '':U (icFreeform),
input not ilClearData (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
if viFcReturnSuper <> 0
then do:
assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then do :
assign vcMessage = trim(substitute(#T-7'Data could not be loaded: unable to load the list of Bank Number (&1).':100(65687)T-7#, replace(vcBankNumberIDList, chr(4), ",":U))).
<M-5 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 1 (iiSeverity),
input '':U (icRowid),
input 'QadFin-7521':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
return.
end. /* end of if viFcReturnSuper < 0 */
end. /* end of if vifcreturnsuper < 0 */
end. /* if vcBankNumberIDList <> '':U */
/* loop the input temp-table, to create new records */
for each tBankNumberToCreate:
find first bBankNumber where
bBankNumber.BankNumber_ID = tBankNumberToCreate.tiOldBankNumberId
no-error.
if not available bBankNumber
then do:
assign vcMessage = trim(#T-8'The specified bank number is not defined in the system. The system cannot update it.':100(65688)t-8#).
<M-9 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 1 (iiSeverity),
input '':U (icRowid),
input 'QadFin-7522':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
Next.
end. /* if not available bBankNumber */
/* check if new record doesn't exist already, check on logical key of banknumber */
if can-find(first tBankNumber where
tBankNumber.BankNumber = bBankNumber.BankNumber and
tBankNumber.BankNumberExtension = bBankNumber.BankNumberExtension and
tBankNumber.BankNumberValidation = bBankNumber.BankNumberValidation and
tBankNumber.BankPayFormat_ID = tBankNumberToCreate.tiBankPayFormatId and
tBankNumber.ParentObject_ID = bBankNumber.ParentObject_ID )
then next.
/* create a new blank record */
<M-3 run AddDetailLine
(input 'BankNumber':U (icTable),
input '':U (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
/* buffer-copy */
buffer-copy bBankNumber
except bBankNumber.BankNumber_ID
bBankNumber.tc_ParentRowid
bBankNumber.tc_Rowid
bBankNumber.tc_Status
bBankNumber.BankPayFormat_ID
to tBankNumber.
assign tBankNumberToCreate.tiNewBankNumberId = tBankNumber.BankNumber_ID
tBankNumber.BankPayFormat_ID = tBankNumberToCreate.tiBankPayFormatId
tBankNumber.BankNumberIsDefault = tBankNumberToCreate.tlIsBankNumberDefault.
if tBankNumberToCreate.tlIsBankNumberDefault
then do:
<M-15 run ChangeDefaultBankNumber
(input tBankNumberToCreate.tiOldBankNumberId (iiNewDefaultBankNumberID),
output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
assign bBankNumber.BankNumberIsDefault = false
bBankNumber.tc_Status = "C":U.
end.
/* Create payment attributes if have any */
if tBankNumberToCreate.tlIsFormatTypeChanged = false
then do:
for each bBankNumberPayCode
where bBankNumberPayCode.BankNumber_ID = tBankNumberToCreate.tiOldBankNumberId:
<M-4 run AddDetailLine
(input 'BankNumberPayCode':U (icTable),
input tBankNumber.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
/* buffer-copy the attributes */
buffer-copy bBankNumberPayCode
except bBankNumberPayCode.BankNumberPayCode_ID
bBankNumberPayCode.tc_Rowid
bBankNumberPayCode.tc_ParentRowid
bBankNumberPayCode.tc_Status
bBankNumberPayCode.BankNumber_ID
to tBankNumberPayCode.
/* assign tBankNumberPayCode.BankNumber_ID = tBankNumber.BankNumber_ID. */
assign tBankNumberPayCode.tc_ParentRowid = tBankNumber.tc_Rowid.
end. /* end of for each tBankNumberPayCode */
end. /* end of if tBankNumberToCreate.tlIsBankPayFormatChanged = true */
end. /* end of for each tBankNumberToCreate */
if oiReturnStatus = -98
then assign oiReturnStatus = 0.