project QadFinancials > class BBankNumber > method CreateCDBankNumberAsCopy
Description
Create supplier/customer bank number from the copy of existing one. Different bank payment format is linked.
Parameters
| iiOriginalBankNumberID | input | integer | |
| iiNewPayFormatID | input | integer | |
| oiNewBankNumberID | output | integer | |
| oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program3/bbanknumber.p)
/* =================================================================================================== */
/* Method : CreateCDBankNumberAsCopy */
/* Desc : This method creates a bank number for customer/supplier */
/* --------------------------------------------------------------------------------------------------- */
/* Params: (I) OriginalBankNumberID ID of original bank number */
/* (I) NewPayFormatID New Payment format ID for new bank number */
/* (O) NewBankNumberID ID of new bank number */
/* =================================================================================================== */
assign oiReturnStatus = -98.
if iiOriginalBankNumberID = ? or iiOriginalBankNumberID = 0
then do:
assign oiReturnStatus = -1
vcMsg = #T-7'Original bank number cannot be empty.':255(70309)T-7#.
<M-4 run SetMessage
(input vcMsg (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'S':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-8305':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
return.
end. /* if iiOriginalBankNumberID = ? or iiOriginalBankNumberID = 0 */
if not can-find (first tBankNumber where
tBankNumber.BankNumber_ID = iiOriginalBankNumberID)
then do:
<M-1 run DataLoad
(input '':U (icRowids),
input string(iiOriginalBankNumberID) (icPkeys),
input '':U (icObjectIds),
input '':U (icFreeform),
input true (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
end. /* if not can-find (first tBankNumber where */
find first bBankNumber where
bBankNumber.BankNumber_ID = iiOriginalBankNumberID no-error.
if not available bBankNumber
then do:
assign oiReturnStatus = -1
vcMsg = #T-8'The bank number specified is not defined in the system (ID: $1).':255(70311)T-8#
vcMsg = substitute(vcMsg, string(iiOriginalBankNumberID)).
<M-5 run SetMessage
(input vcMsg (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'S':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-8306':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
return.
end. /* if not available bBankNumber */
assign viParentObjectID = bBankNumber.ParentObject_ID.
find first tBankNumber where
tBankNumber.ParentObject_ID = bBankNumber.ParentObject_ID and
tBankNumber.BankPayFormat_ID = iiNewPayFormatID
no-lock no-error.
if not available tBankNumber then do:
/* Create copy from original bank number */
<M-2 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 bBankNumber
except bBankNumber.BankNumber_ID
bBankNumber.tc_ParentRowid
bBankNumber.tc_Rowid
bBankNumber.tc_Status
bBankNumber.BankPayFormat_ID
to tBankNumber.
assign tBankNumber.BankPayFormat_ID = iiNewPayFormatID.
end.
oiNewBankNumberID = tBankNumber.BankNumber_ID.
if bBankNumber.BankNumberIsDefault = true
then assign bBankNumber.BankNumberIsDefault = false
bBankNumber.tc_Status = "C":U.
else assign tBankNumber.BankNumberIsDefault = true.
/* Copy BankNumberPayCode records */
for each bBankNumberPayCode where
bBankNumberPayCode.BankNumber_ID = bBankNumber.BankNumber_ID:
find first tBankNumberPayCode where
tBankNumberPayCode.BankNumber_ID = tBankNumber.BankNumber_ID and
tBankNumberPayCode.PayFormatGroup_ID = bBankNumberPayCode.PayFormatGroup_ID
no-lock no-error.
if not available tBankNumberPayCode
then do:
<M-3 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 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
tBankNumberPayCode.tc_ParentRowid = tBankNumber.tc_Rowid.
end.
end. /* for each bBankNumberPayCode where */
/*Change Default Bank Number*/
<Q-15 run BankNumberByPayFormatParentObj (all) (Read) (NoCache)
(input ?, (PaymentFormatID)
input bBankNumber.ParentObject_ID, (ParentObjectID)
input viCompanyId, (CompanyId)
output dataset tqBankNumberByPayFormatParentObj) in BBankNumber >
assign vcList = "":U.
for each tqBankNumberByPayFormatParentObj where
tqBankNumberByPayFormatParentObj.tiParentObject_ID = bBankNumber.ParentObject_ID and
tqBankNumberByPayFormatParentObj.tiCompany_ID = viCompanyId:
if vcList = "":U then assign vcList = string(tqBankNumberByPayFormatParentObj.tiBankNumber_ID).
else assign vcList = vcList + chr(4) + string(tqBankNumberByPayFormatParentObj.tiBankNumber_ID).
end. /* for each tqBankNumberByPayFormatParentObj where */
if vcList <> "":U
then do:
<M-40 run DataLoad
(input '':U (icRowids),
input vcList (icPkeys),
input '':U (icObjectIds),
input '':U (icFreeform),
input true (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
end.
for each tBankNumber where
tBankNumber.ParentObject_ID = viParentObjectID:
if can-find (first tqBankNumberByPayFormatParentObj where
tqBankNumberByPayFormatParentObj.tiBankNumber_ID = tBankNumber.BankNumber_ID and
tqBankNumberByPayFormatParentObj.tiCompany_ID = viCompanyId) or
(tBankNumber.tc_Status = 'N':U and
tBankNumber.ParentObject_ID = bBankNumber.ParentObject_ID)
then do:
if tBankNumber.BankNumberIsDefault = true and
tBankNumber.BankNumber_ID <> oiNewBankNumberID
then assign tBankNumber.BankNumberIsDefault = false.
if tBankNumber.tc_Status <> 'N':U and
tBankNumber.ParentObject_ID = bBankNumber.ParentObject_ID
then assign tBankNumber.tc_Status = "C":U.
end.
end. /* for each tBankNumber where */
<M-6 run ValidateBCAndAdditionalUpdates (output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
if oiReturnStatus = -98 then assign oiReturnStatus = 0.