project QadFinancials > class BCInvoice > method CreateCInvoicesReason
Description
default all values based on reason code
Parameters
| blStartReasonByIdCode | input-output | logical | Checks if the query tqReasonByIdCode was already started or not ? |
| blStartReasonByInitialStatus | input-output | logical | Checks if the query tqReasonByInitialStatus was already started or not ? |
| ilIsReasonFromCreditor | input | logical | |
| oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program3/bcinvoice.p)
/* ======================== */
/* Exception handling */
/* ======================== */
assign oiReturnStatus = -98
viLocalReturnStatus = 0.
REASONBLOCK : Do:
if tCInvoice.Reason_ID <> 0 or
tCInvoice.tcReasonCode <> "":U
then do:
if not blStartReasonByIdCode
then do:
<Q-5 run ReasonByIdCode (Start) in BReason >
assign blStartReasonByIdCode = true.
end.
<Q-1 run ReasonByIdCode (all) (Read) (Cache)
(input tCInvoice.Reason_ID, (ReasonId)
input if tCInvoice.Reason_ID = 0 then tCInvoice.tcReasonCode else '':U, (ReasonCode)
output dataset tqReasonByIdCode) in BReason >
find first tqReasonByIdCode no-error.
if available tqReasonByIdCode
then assign tCInvoice.CInvoiceIsLockPayment = tqReasonByIdCode.tlReasonIsLockPayment
tCInvoice.CInvoiceIsInitialStatus = tqReasonByIdCode.tlReasonIsInitialStatus
tCInvoice.CInvoiceIsInvoiceApproved = tqReasonByIdCode.tlReasonIsInvoiceApproved
tCInvoice.tcReasonAllocationStatus = tqReasonByIdCode.tcReasonAllocationStatus
tCInvoice.CInvoiceAllocationStatus = tqReasonByIdCode.tcReasonAllocationStatus
tCInvoice.CInvoiceIsLogisticMatching = tqReasonByIdCode.tlReasonIsLogisticMatching.
else assign tCInvoice.CInvoiceIsLockPayment = false
tCInvoice.CInvoiceIsInitialStatus = false
tCInvoice.CInvoiceIsInvoiceApproved = false
tCInvoice.tcReasonAllocationStatus = "":U
tCInvoice.CInvoiceAllocationStatus = "":U
tCInvoice.CInvoiceIsLogisticMatching = false.
/* if not prepayment, initial and status is taken from creditor , then search first record *
* that is not initial and use that, if no record found, give error */
if tCInvoice.CInvoiceType <> {&INVOICETYPE-PREPAYMENT} and
tCInvoice.CInvoiceIsInitialStatus and
ilIsReasonFromCreditor
then do:
if not blStartReasonByInitialStatus
then do:
<Q-6 run ReasonByInitialStatus (Start) in BReason >
assign blStartReasonByInitialStatus = true.
end.
<Q-2 run ReasonByInitialStatus (all) (Read) (Cache)
(input false, (ReasonIsInitialStatus)
output dataset tqReasonByInitialStatus) in BReason >
find first tqReasonByInitialStatus where
tqReasonByInitialStatus.tlReasonIsInitialStatus = false
no-lock no-error.
if available tqReasonByInitialStatus
then assign tCInvoice.tcReasonCode = tqReasonByInitialStatus.tcReasonCode
tCInvoice.CInvoiceIsLockPayment = tqReasonByInitialStatus.tlReasonIsLockPayment
tCInvoice.CInvoiceIsInitialStatus = tqReasonByInitialStatus.tlReasonIsInitialStatus
tCInvoice.CInvoiceIsInvoiceApproved = tqReasonByInitialStatus.tlReasonIsInvoiceApproved
tCInvoice.tcReasonAllocationStatus = tqReasonByInitialStatus.tcReasonAllocationStatus
tCInvoice.CInvoiceAllocationStatus = tqReasonByInitialStatus.tcReasonAllocationStatus
tCInvoice.CInvoiceIsLogisticMatching = tqReasonByInitialStatus.tlReasonIsLogisticMatching.
else do:
assign viLocalReturnStatus = -1.
<M-3 run SetMessage
(input trim(#T-31'No Invoice Status Code found that is not Initial. Please create one first.':255(999890087)T-31#) (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-8821':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
Leave REASONBLOCK.
end.
end.
/* if prepayment, initial or lock payment and status is taken from creditor , then search *
* first record that is not initial, active, invoice approved, not lock payment, Allocation *
* status = Allocation or Any, not logistics matching and use that, if no record found, give error */
if tCInvoice.CInvoiceType = {&INVOICETYPE-PREPAYMENT} and
ilIsReasonFromCreditor and
(tCInvoice.CInvoiceIsInitialStatus or tCInvoice.CInvoiceIsLockPayment)
then do:
if not blStartReasonByInitialStatus
then do:
<Q-90 run ReasonByInitialStatus (Start) in BReason>
assign blStartReasonByInitialStatus = true.
end.
<Q-49 run ReasonByInitialStatus (all) (Read) (Cache)
(input false, (ReasonIsInitialStatus)
output dataset tqReasonByInitialStatus) in BReason>
find first tqReasonByInitialStatus where
tqReasonByInitialStatus.tlReasonIsInitialStatus = false and
tqReasonByInitialStatus.tlReasonIsActive = true and
tqReasonByInitialStatus.tlReasonIsLockPayment = false and
tqReasonByInitialStatus.tlReasonIsInvoiceApproved = true and
tqReasonByInitialStatus.tlReasonIsLogisticMatching = false and
tqReasonByInitialStatus.tcReasonAllocationStatus = {&ALLOCSTATUS-ALLOC}
no-error.
if not available tqReasonByInitialStatus
then
find first tqReasonByInitialStatus where
tqReasonByInitialStatus.tlReasonIsInitialStatus = false and
tqReasonByInitialStatus.tlReasonIsActive = true and
tqReasonByInitialStatus.tlReasonIsLockPayment = false and
tqReasonByInitialStatus.tlReasonIsInvoiceApproved = true and
tqReasonByInitialStatus.tlReasonIsLogisticMatching = false and
tqReasonByInitialStatus.tcReasonAllocationStatus = {&ALLOCSTATUS-ANY}
no-error.
if available tqReasonByInitialStatus
then
assign tCInvoice.tcReasonCode = tqReasonByInitialStatus.tcReasonCode
tCInvoice.CInvoiceIsLockPayment = tqReasonByInitialStatus.tlReasonIsLockPayment
tCInvoice.CInvoiceIsInitialStatus = tqReasonByInitialStatus.tlReasonIsInitialStatus
tCInvoice.CInvoiceIsInvoiceApproved = tqReasonByInitialStatus.tlReasonIsInvoiceApproved
tCInvoice.tcReasonAllocationStatus = tqReasonByInitialStatus.tcReasonAllocationStatus
tCInvoice.CInvoiceAllocationStatus = if tqReasonByInitialStatus.tcReasonAllocationStatus = {&ALLOCSTATUS-ALLOC} then {&ALLOCSTATUS-ALLOC} else {&ALLOCSTATUS-NOALLOC}
tCInvoice.CInvoiceIsLogisticMatching = tqReasonByInitialStatus.tlReasonIsLogisticMatching.
else do:
assign viLocalReturnStatus = -1.
<M-61 run SetMessage
(input trim(#T-14'No Invoice Status Code found that is not Initial. Please make active or create one.':255(786738999)T-14#) (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'qadfin-266566':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
Leave REASONBLOCK.
end.
end.
if tCInvoice.CInvoiceType = {&INVOICETYPE-PREPAYMENT} and
tCInvoice.CInvoiceAllocationStatus = {&ALLOCSTATUS-ANY}
then assign tCInvoice.CInvoiceAllocationStatus = {&ALLOCSTATUS-NOALLOC}.
end.
end.
/* ======================== */
/* Exception handling */
/* ======================== */
assign oiReturnStatus = viLocalReturnStatus.