project QadFinancials > class BDInvoice > method ValidateComponentAllModify
Description
This method is a submethod of ValidateComponentAll.
This method validates some fields of the Debtor Invoice that can't be modified.
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program5/bdinvoice.p)
/* ======================================================================== */
/* IMPORTANT: This method is run from ValidateComponentAll */
/* The code in this method is nested within the for each t_sDInvoice */
/* This can only work when both methods are defined in the same segment (5) */
/* ======================================================================== */
if t_sDInvoice.tc_status = "C":U
then do:
find first t_iDInvoice where
t_iDInvoice.tc_Rowid = t_sDInvoice.tc_Rowid
no-error.
if available t_iDInvoice
then do:
/* ================================================ */
/* Invoice Certification fields may not be modified */
/* ================================================ */
if t_sDInvoice.DInvoiceInvCertCertificate <> t_iDInvoice.DInvoiceInvCertCertificate or
t_sDInvoice.DInvoiceInvCertKey <> t_iDInvoice.DInvoiceInvCertKey or
t_sDInvoice.DInvoiceInvCertSignatureCurr <> t_iDInvoice.DInvoiceInvCertSignatureCurr or
t_sDInvoice.DInvoiceInvCertSignaturePrev <> t_iDInvoice.DInvoiceInvCertSignaturePrev
then do:
assign vcMessage = #T-58'Invoice Certification fields can not be modified after creation.':255(611912985)T-58# + chr(10) +
substitute(#T-37'Invoice Certification Certificate (New - Old): &1 - &2':255(733445926)T-37#, t_sDInvoice.DInvoiceInvCertCertificate, t_iDInvoice.DInvoiceInvCertCertificate) + chr(10) +
substitute(#T-93'Invoice Certification Key (New - Old): &1 - &2':255(739265283)T-93#, t_sDInvoice.DInvoiceInvCertKey, t_iDInvoice.DInvoiceInvCertKey) + chr(10) +
substitute(#T-45'Invoice Certification Signature Current (New - Old): &1 - &2':255(648403153)T-45#, t_sDInvoice.DInvoiceInvCertSignatureCurr, t_iDInvoice.DInvoiceInvCertSignatureCurr) + chr(10) +
substitute(#T-40'Invoice Certification Signature Previous (New - Old): &1 - &2':255(389070722)T-40#, t_sDInvoice.DInvoiceInvCertSignaturePrev, t_iDInvoice.DInvoiceInvCertSignaturePrev)
oiReturnStatus = -1.
<M-85 run SetMessage
(input vcMessage (icMessage),
input '' (icArguments),
input 'tDInvoice.DInvoiceInvCertCertificate':U (icFieldName),
input t_sDInvoice.DInvoiceInvCertCertificate (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDInvoice.tc_Rowid (icRowid),
input 'qadfin-863480':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end. /* if t_sDInvoice.DInvoiceInvCertCertificate <> t_iDInvoice.DInvoiceInvCertCertificate or */
if t_iDInvoice.LinkedDInvoice_ID <> t_sDInvoice.LinkedDInvoice_ID and
t_iDInvoice.LinkedDInvoice_ID <> 0 and
t_iDInvoice.LinkedDInvoice_ID <> ?
then do:
assign oiReturnStatus = -1.
<M-95 run SetMessage
(input #T-69'Linked Invoice cannot be modified':255(866022244)T-69# (icMessage),
input '':U (icArguments),
input 't_sDInvoice.LinkedDInvoice_ID':U (icFieldName),
input t_sDInvoice.LinkedDInvoice_ID (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDInvoice.tc_Rowid (icRowid),
input 'QadFin-682168':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end.
if t_sDInvoice.DInvoiceIsTaxable <> t_iDInvoice.DInvoiceIsTaxable
then do:
assign vcMessage = trim(#T-32'Invoice Taxable cannot be modified':255(591287479)T-32#)
oiReturnStatus = -1.
<M-30 run SetMessage
(input vcMessage (icMessage),
input '' (icArguments),
input 'tDInvoice.DInvoiceIsTaxExcluded':U (icFieldName),
input t_sDInvoice.DInvoiceIsTaxExcluded (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'QadFin-9671':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end.
if t_sDInvoice.DInvoiceIsTaxExcluded <> t_iDInvoice.DInvoiceIsTaxExcluded
then do:
<M-27 run SetMessage
(input #T-29'Tax Excluded cannot be modified':100(413957481)T-29# (icMessage),
input '' (icArguments),
input 'tDInvoice.DInvoiceIsTaxExcluded':U (icFieldName),
input t_sDInvoice.DInvoiceIsTaxExcluded (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'QadFin-9670':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
oiReturnStatus = -1.
end.
if (t_sDInvoice.DInvoiceIsTaxExcluded = false and
(t_sDInvoice.DInvoiceOriginalDebitTC <> t_iDInvoice.DInvoiceOriginalDebitTC or
t_sDInvoice.DInvoiceOriginalCreditTC <> t_iDInvoice.DInvoiceOriginalCreditTC)) OR
(t_sDInvoice.DInvoiceIsTaxExcluded = true and
(t_sDInvoice.DInvoiceVatBaseDebitTC <> t_iDInvoice.DInvoiceVatBaseDebitTC or
t_sDInvoice.DInvoiceVatBaseCreditTC <> t_iDInvoice.DInvoiceVatBaseCreditTC))
then do:
assign vcMessage = trim(substitute(#T-23'TC Invoice Amount cannot be modified. Original value: &1, Current value: &2':255(733742780)T-23#,
(if t_sDInvoice.DInvoiceIsTaxExcluded = false
then (t_iDInvoice.DInvoiceOriginalDebitTC - t_iDInvoice.DInvoiceOriginalCreditTC)
else (t_iDInvoice.DInvoiceVatBaseDebitTC - t_iDInvoice.DInvoiceVatBaseCreditTC)),
(if t_sDInvoice.DInvoiceIsTaxExcluded = false
then (t_sDInvoice.DInvoiceOriginalDebitTC - t_sDInvoice.DInvoiceOriginalCreditTC)
else (t_sDInvoice.DInvoiceVatBaseDebitTC - t_sDInvoice.DInvoiceVatBaseCreditTC))))
oiReturnStatus = -1.
<M-10 run SetMessage
(input vcMessage (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'QadFin-7411':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end.
if (t_sDInvoice.DInvoiceIsTaxExcluded = false and
(t_sDInvoice.DInvoiceOriginalDebitLC <> t_iDInvoice.DInvoiceOriginalDebitLC or
t_sDInvoice.DInvoiceOriginalCreditLC <> t_iDInvoice.DInvoiceOriginalCreditLC)) OR
(t_sDInvoice.DInvoiceIsTaxExcluded = true and
(t_sDInvoice.DInvoiceVatBaseDebitLC <> t_iDInvoice.DInvoiceVatBaseDebitLC or
t_sDInvoice.DInvoiceVatBaseCreditLC <> t_iDInvoice.DInvoiceVatBaseCreditLC))
then do:
assign vcMessage = trim(substitute(#T-25'LC Invoice Amount cannot be modified. Original value: &1, Current value: &2':255(733744668)T-25#,
(if t_sDInvoice.DInvoiceIsTaxExcluded = false
then (t_iDInvoice.DInvoiceOriginalDebitLC - t_iDInvoice.DInvoiceOriginalCreditLC)
else (t_iDInvoice.DInvoiceVatBaseDebitLC - t_iDInvoice.DInvoiceVatBaseCreditLC)),
(if t_sDInvoice.DInvoiceIsTaxExcluded = false
then (t_sDInvoice.DInvoiceOriginalDebitLC - t_sDInvoice.DInvoiceOriginalCreditLC)
else (t_sDInvoice.DInvoiceVatBaseDebitLC - t_sDInvoice.DInvoiceVatBaseCreditLC))))
oiReturnStatus = -1.
<M-11 run SetMessage
(input vcMessage (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'QadFin-7412':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end.
if t_sDInvoice.DInvoiceExchangeRate <> t_iDInvoice.DInvoiceExchangeRate
then do:
<M-12 run SetMessage
(input #T-18'You cannot modify the Invoice exchange rate.':100(887225165)T-18# (icMessage),
input '' (icArguments),
input 'tDInvoice.DInvoiceExchangeRate':U (icFieldName),
input t_sDInvoice.DInvoiceExchangeRate (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'QadFin-7413':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
oiReturnStatus = -1.
end.
if t_sDInvoice.DinvoiceRateScale <> t_iDInvoice.DinvoiceRateScale
then do:
<M-13 run SetMessage
(input #T-21'Invoice Rate Scale cannot be modified':100(878015398)T-21# (icMessage),
input '' (icArguments),
input tDInvoice.DInvoiceRateScale (icFieldName),
input 'tDInvoice.DInvoiceRateScale':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'QadFin-7414':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
oiReturnStatus = -1.
end.
/* Modification on TSM Number is only allowed as long as the invoice
is not included in a payment in treatment or is (partially) paid */
if not(t_sDInvoice.DInvoiceIsOpen = True and
t_sDInvoice.DInvoiceIsSelected = False and
(((t_sDInvoice.DInvoiceType = {&INVOICETYPE-INVOICE} or
t_sDInvoice.DInvoiceType = {&INVOICETYPE-FINANCECHARGE} or
t_sDInvoice.DInvoiceType = {&INVOICETYPE-INVOICECORRECTION})and
t_sDInvoice.DInvoiceBalanceDebitTC = t_sDInvoice.DInvoiceOriginalDebitTC) or
((t_sDInvoice.DInvoiceType = {&INVOICETYPE-CREDITNOTE} or
t_sDInvoice.DInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION})and
t_sDInvoice.DInvoiceBalanceCreditTC = t_sDInvoice.DInvoiceOriginalCreditTC)))
then do:
if t_iDInvoice.DInvoiceTSMNumber <> t_sDInvoice.DInvoiceTSMNumber
then do:
assign vcMessage = trim(#T-4'You cannot modify the TSM number because the invoice is (partly) paid or included in a payment that is currently being processed.':150(1223)T-4#) + chr(10) +
trim(substitute(#T-5'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-5#,string(t_sDInvoice.DInvoicePostingYear),string(t_sDInvoice.DInvoicePostingPeriod), t_sDInvoice.tcJournalCode, string(t_sDInvoice.DInvoiceVoucher)))
oiReturnStatus = -1.
<M-1 run SetMessage (input vcMessage (icMessage),
input '':U (icArguments),
input 'tDInvoice.DInvoiceTSMNumber':U (icFieldName),
input t_sDInvoice.DInvoiceTSMNumber (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDInvoice.tc_Rowid (icRowid),
input 'QADFIN-4468':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end.
end.
/* modification of Payment allowed from 'yes' to 'no' only allowed if no movements */
/* were registered on the debtor credit note */
if t_sDInvoice.DInvoiceType = {&INVOICETYPE-CREDITNOTE} or
t_sDInvoice.DInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION}
then do:
if t_iDInvoice.DInvoiceIsPaymentAllowed = yes and
t_sDInvoice.DInvoiceIsPaymentAllowed = no and
can-find(first t_sDInvoiceMovement where
t_sDInvoiceMovement.tc_ParentRowid = t_sDInvoice.tc_Rowid)
then do:
assign vcMessage = trim(#T-6'You can only switch from TRUE to FALSE if no activity was registered on the customer credit note.':150(1768)T-6#) + chr(10) +
trim(substitute(#T-7'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-7#,string(t_sDInvoice.DInvoicePostingYear),string(t_sDInvoice.DInvoicePostingPeriod), t_sDInvoice.tcJournalCode, string(t_sDInvoice.DInvoiceVoucher)))
oiReturnStatus = -1.
<M-2 run SetMessage (input vcMessage (icMessage),
input '':U (icArguments),
input 'tDInvoice.DInvoiceIsPaymentAllowed':u (icFieldName),
input t_sDInvoice.DInvoiceIsPaymentAllowed (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDInvoice.tc_Rowid (icRowid),
input 'QADFIN-4469':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end.
end.
end.
end.
for each t_sDInvoiceBank where
(t_sDInvoiceBank.tc_status = "C":U or
t_sDInvoiceBank.tc_Status = "D":U ) and
t_sDInvoiceBank.tc_ParentRowid = t_sDInvoice.tc_Rowid and
/* PWI only for the records that are modified by another program then payment selection */
t_sDInvoiceBank.tlValidatePayment = true:
find first t_iDInvoice where
t_iDInvoice.tc_Rowid = t_sDInvoiceBank.tc_ParentRowid
no-error.
if not available t_iDInvoice
then next.
if t_iDInvoice.DInvoiceIsSelected = true and
t_sDInvoice.DInvoiceIsSelected = true
then do:
find first t_iDInvoiceBank where
t_iDInvoiceBank.tc_Rowid = t_sDInvoiceBank.tc_Rowid
no-error.
if available t_iDInvoiceBank
then do:
if t_iDInvoiceBank.DInvoiceBankToPayTC <> t_sDInvoiceBank.DInvoiceBankToPayTC
then do:
assign vcMessage = trim(#T-8'You cannot modify the payment accounts because the invoice is (partly) paid or included in a payment that is currently being processed.':150(1224)T-8#) + chr(10) +
trim(substitute(#T-9'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-9#,string(t_iDInvoice.DInvoicePostingYear),string(t_iDInvoice.DInvoicePostingPeriod), t_iDInvoice.tcJournalCode, string(t_iDInvoice.DInvoiceVoucher)))
oiReturnStatus = -1.
<M-3 run SetMessage (input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDInvoice.tc_Rowid (icRowid),
input 'QADFIN-4470':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
return.
end.
end.
end.
end.