Description
Write here all tests on database update (new / modify / delete) that cannot be coded with a validation mask.
The type of update can be found in tc_status (N/C/D).
If you find incorrect data, you must write an entry in tFcMessages (using SetMessage) and set the return status of this method to either +1 or -1.
Return status +1 = data will still be accepted.
Return status -1 = data will not be accepted.
This method is run from SetPublicTables, before transferring the received data into the class temp-tables.
Parameters
oiReturnStatus | output | integer | |
Internal usage
unused
program code (program/bddocumentstatus.p)
<ANCESTOR-CODE>
assign vcDOCUMENTTYPEDEBTORS ={&DOCUMENTTYPEDEBTORS}.
for each t_sDDocumentStatus where
t_sDDocumentStatus.tc_Status = "D":U:
find t_iDDocumentStatus where
t_iDDocumentStatus.tc_Rowid = t_sDDocumentStatus.tc_Rowid
no-error.
<Q-2 assign vlFcQueryRecordsAvailable = DDocumentByTypeStatus (NoCache)
(input viCompanyId, (CompanyId)
input t_iDDocumentStatus.DDocumentStatusStatus, (DDocumentStatus)
input t_iDDocumentStatus.DDocumentStatusDocType, (DDocumentType)
input t_iDDocumentStatus.BankGL_ID, (GLID)) in BDDocument >
if vlFcQueryRecordsAvailable <> false
then do:
/* Translated document type and status codes */
vcDocumentType = t_iDDocumentStatus.DDocumentStatusDocType.
do viFcCount1=1 to num-entries(vcDOCUMENTTYPEDEBTORS,chr(2)) - 1 by 2:
if(entry(viFcCount1 + 1,vcDOCUMENTTYPEDEBTORS,chr(2)) = t_iDDocumentStatus.DDocumentStatusDocType) then do:
vcDocumentType = entry(viFcCount1,vcDOCUMENTTYPEDEBTORS,chr(2)).
leave.
end.
end.
vcDocumentStatus = t_iDDocumentStatus.DDocumentStatusStatus.
do viFcCount1=1 to num-entries(vcDOCUMENTTYPEDEBTORS,chr(2)) - 1 by 2:
if(entry(viFcCount1 + 1,vcDOCUMENTTYPEDEBTORS,chr(2)) = t_iDDocumentStatus.DDocumentStatusStatus) then do:
vcDocumentStatus = entry(viFcCount1,vcDOCUMENTTYPEDEBTORS,chr(2)).
leave.
end.
end.
<M-3 run SetMessage
(input trim(#T-9'A payment was found with type $1 and status $2. The system cannot delete the payment status.':250(960)t-9#) (icMessage),
input vcDocumentType + chr(2) + vcDocumentStatus (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-2538':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDDocumentStatus>
assign oiReturnStatus = -1.
end.
end.
<Q-13 run GLByCode (Start) in BGL >
for each t_sDDocumentStatus where
t_sDDocumentStatus.tc_Status = "N":U or
t_sDDocumentStatus.tc_Status = "C":U:
if t_sDDocumentStatus.tc_Status = "C":U
then do:
find t_iDDocumentStatus where
t_iDDocumentStatus.tc_Rowid = t_sDDocumentStatus.tc_Rowid
no-error.
<Q-4 assign vlFcQueryRecordsAvailable = DDocumentByTypeStatus (NoCache)
(input viCompanyId, (CompanyId)
input t_iDDocumentStatus.DDocumentStatusStatus, (DDocumentStatus)
input t_iDDocumentStatus.DDocumentStatusDocType, (DDocumentType)
input t_iDDocumentStatus.BankGL_ID, (GLID)) in BDDocument >
if vlFcQueryRecordsAvailable <> false
then do:
assign vcDocumentStatusTr = <M-21 GetDDocumentStatusTranslation (input t_iDDocumentStatus.DDocumentStatusStatus (icStatus)) in BDDocumentStatus>
vcMessage = trim(#T-24'A document was found with type $1 and status $2. You can no longer modify this document status.':255(999890189)T-24#).
<M-5 run SetMessage
(input vcMessage (icMessage),
input t_iDDocumentStatus.DDocumentStatusDocType + chr(2) + vcDocumentStatusTr (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-2539':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDDocumentStatus>
assign oiReturnStatus = -1.
end.
end.
assign vcDocumentStatusTr = <M-22 GetDDocumentStatusTranslation (input t_sDDocumentStatus.DDocumentStatusStatus (icStatus)) in BDDocumentStatus>.
if (t_sDDocumentStatus.tc_Status = "N":U or
t_sDDocumentStatus.DDocumentStatusStatus <> t_iDDocumentStatus.DDocumentStatusStatus) and
t_sDDocumentStatus.DDocumentStatusStatus <> {&DOCUMENTSTATUS-INIT}
then do:
if t_sDDocumentStatus.tcGLCode = "":U or
t_sDDocumentStatus.tcGLCode = ?
then do:
if(t_sDDocumentStatus.DDocumentStatusStatus = {&DOCUMENTSTATUS-PAID})
then do:
<Q-19 assign vlFcQueryRecordsAvailable = DDocumentStatusByTypeStatusGL (NoCache)
(input viCompanyId, (CompanyId)
input t_sDDocumentStatus.DDocumentStatusDocType, (DDocumentStatusDocumentType)
input {&DOCUMENTSTATUS-DISCONT}, (DDocumentStatusStatus)
input t_sDDocumentStatus.BankGL_ID, (BankGLId)
input t_sDDocumentStatus.tcBankGLCode, (BankGLCode)) in BDDocumentStatus >
end.
if(t_sDDocumentStatus.DDocumentStatusStatus = {&DOCUMENTSTATUS-BOUNCED})
then do:
<Q-20 assign vlFcQueryRecordsAvailable = DDocumentStatusByTypeStatusGL (NoCache)
(input viCompanyId, (CompanyId)
input t_sDDocumentStatus.DDocumentStatusDocType, (DDocumentStatusDocumentType)
input {&DOCUMENTSTATUS-PAIDCON}, (DDocumentStatusStatus)
input t_sDDocumentStatus.BankGL_ID, (BankGLId)
input t_sDDocumentStatus.tcBankGLCode, (BankGLCode)) in BDDocumentStatus >
end.
if ((t_sDDocumentStatus.DDocumentStatusStatus <> {&DOCUMENTSTATUS-PAID} and
t_sDDocumentStatus.DDocumentStatusStatus <> {&DOCUMENTSTATUS-BOUNCED})or
(t_sDDocumentStatus.DDocumentStatusStatus = {&DOCUMENTSTATUS-PAID} and vlFcQueryRecordsAvailable <> false) or
(t_sDDocumentStatus.DDocumentStatusStatus = {&DOCUMENTSTATUS-BOUNCED} and vlFcQueryRecordsAvailable <> false))
then do:
<M-6 run SetMessage
(input trim(#T-11'You must enter the GL account for status $1.':250(962)T-11#) (icMessage),
input vcDocumentStatusTr (icArguments),
input 'tDDocumentStatus.tcGLCode':U (icFieldName),
input t_sDDocumentStatus.tcGLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-2540':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDDocumentStatus>
assign oiReturnStatus = -1.
end.
end.
if t_sDDocumentStatus.tcJournalCode = "":U or
t_sDDocumentStatus.tcJournalCode = ?
then do:
assign vcMessage = trim(#T-25'Journal is mandatory for status $1.':255(999890190)T-25#).
<M-7 run SetMessage
(input vcMessage (icMessage),
input vcDocumentStatusTr (icArguments),
input 'tDDocumentStatus.tcJournalCode':U (icFieldName),
input t_sDDocumentStatus.tcJournalCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-2541':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDDocumentStatus>
assign oiReturnStatus = -1.
end.
end.
if (t_sDDocumentStatus.tc_Status = "N":U or
t_sDDocumentStatus.tcGLCode <> t_iDDocumentStatus.tcGLCode or
t_sDDocumentStatus.DDocumentStatusStatus <> t_iDDocumentStatus.DDocumentStatusStatus) and
t_sDDocumentStatus.tcGLCode <> "":U and
t_sDDocumentStatus.tcGLCode <> ?
then do:
<Q-14 run GLByCode (all) (Read) (NoCache)
(input t_sDDocumentStatus.Company_ID, (CompanyId)
input t_sDDocumentStatus.tcGLCode, (GLCode)
output dataset tqGLByCode) in BGL >
find first tqGLByCode where
tqGLByCode.tcGLCode = t_sDDocumentStatus.tcGLCode
no-error.
if not available tqGLByCode
then do:
<M-15 run SetMessage
(input trim(#T-13'GL account $1 cannot be found.':250(14942)t-13#) (icMessage),
input t_sDDocumentStatus.tcGLCode (icArguments),
input 'tDDocumentStatus.tcGLCode':U (icFieldName),
input t_sDDocumentStatus.tcGLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-3528':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDDocumentStatus>
assign oiReturnStatus = -1.
end.
else
if t_sDDocumentStatus.DDocumentStatusStatus = {&DOCUMENTSTATUS-BOUNCED} and
tqGLByCode.tcGLTypeCode <> {&GLTYPECODE-OPEN}
then do:
<M-16 run SetMessage
(input trim(#T-14'Only GL accounts of type $1 are allowed when document status is $2.':250(14943)t-14#) (icMessage),
input {&GLTYPECODE-OPEN-TR} + chr(2) + {&DOCUMENTSTATUS-BOUNCED-TR} (icArguments),
input 'tDDocumentStatus.tcGLCode':U (icFieldName),
input t_sDDocumentStatus.tcGLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-3529':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDDocumentStatus>
assign oiReturnStatus = -1.
end.
else
if t_sDDocumentStatus.DDocumentStatusStatus <> {&DOCUMENTSTATUS-BOUNCED} and
tqGLByCode.tcGLTypeCode <> {&GLTYPECODE-DDOC}
then do:
<M-17 run SetMessage
(input trim(#T-15'Only GL accounts of type $1 are allowed when document status is not $2.':250(14944)t-15#) (icMessage),
input {&GLTYPECODE-DDOC-TR} + chr(2) + {&DOCUMENTSTATUS-BOUNCED-TR} (icArguments),
input 'tDDocumentStatus.tcGLCode':U (icFieldName),
input t_sDDocumentStatus.tcGLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-3530':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDDocumentStatus>
assign oiReturnStatus = -1.
end.
end.
end.
<Q-18 run GLByCode (Stop) in BGL >