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/bcdocumentstatus.p)
<ANCESTOR-CODE>
for each t_sCDocumentStatus where
t_sCDocumentStatus.tc_Status = "D":U:
find t_iCDocumentStatus where
t_iCDocumentStatus.tc_Rowid = t_sCDocumentStatus.tc_Rowid
no-error.
<Q-16 assign vlFcQueryRecordsAvailable = CDocumentByTypeStatus (NoCache)
(input viCompanyId, (CompanyId)
input t_iCDocumentStatus.CDocumentStatusDocType, (CDocumentType)
input t_iCDocumentStatus.CDocumentStatusStatus, (CDocumentStatus)
input t_iCDocumentStatus.BankGL_ID, (GLID)) in BCDocument >
if vlFcQueryRecordsAvailable <> false
then do:
/* Translated document type and status codes */
vcDocumentType = t_iCDocumentStatus.CDocumentStatusDocType.
assign vcDOCUMENTTYPECREDITORS= {&DOCUMENTTYPECREDITORS}.
do viFcCount1=1 to num-entries(vcDOCUMENTTYPECREDITORS,chr(2)) - 1 by 2:
if(entry(viFcCount1 + 1,vcDOCUMENTTYPECREDITORS,chr(2)) = t_iCDocumentStatus.CDocumentStatusDocType) then do:
vcDocumentType = entry(viFcCount1,vcDOCUMENTTYPECREDITORS,chr(2)).
leave.
end.
end.
vcDocumentStatus = t_iCDocumentStatus.CDocumentStatusStatus.
do viFcCount1=1 to num-entries(vcDOCUMENTTYPECREDITORS,chr(2)) - 1 by 2:
if(entry(viFcCount1 + 1,vcDOCUMENTTYPECREDITORS,chr(2)) = t_iCDocumentStatus.CDocumentStatusStatus) then do:
vcDocumentStatus = entry(viFcCount1,vcDOCUMENTTYPECREDITORS,chr(2)).
leave.
end.
end.
<M-9 run SetMessage
(input trim(#T-24'A payment was found with type $1 and status $2. The system cannot delete the payment status.':250(960)t-24#) (icMessage),
input vcDocumentType + chr(2) + vcDocumentStatus (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-2247':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCDocumentStatus>
assign oiReturnStatus = -1.
end.
end.
<Q-28 run GLByCode (Start) in BGL >
for each t_sCDocumentStatus where
t_sCDocumentStatus.tc_Status = "N":U or
t_sCDocumentStatus.tc_Status = "C":U:
if t_sCDocumentStatus.tc_Status = "C":U
then do:
find t_iCDocumentStatus where
t_iCDocumentStatus.tc_Rowid = t_sCDocumentStatus.tc_Rowid
no-error.
<Q-22 assign vlFcQueryRecordsAvailable = CDocumentByTypeStatus (NoCache)
(input viCompanyId, (CompanyId)
input t_iCDocumentStatus.CDocumentStatusDocType, (CDocumentType)
input t_iCDocumentStatus.CDocumentStatusStatus, (CDocumentStatus)
input t_iCDocumentStatus.BankGL_ID, (GLID)) in BCDocument >
if vlFcQueryRecordsAvailable <> false
then do:
assign vcDocumentStatusTr = <M-37 GetCDocumentStatusTranslation (input t_iCDocumentStatus.CDocumentStatusStatus (icStatus)) in BCDocumentStatus>.
<M-23 run SetMessage
(input trim(#T-25'Document found with type $1 and status $2. Cannot modify the document status.':250(961)t-25#) (icMessage),
input t_iCDocumentStatus.CDocumentStatusDocType + chr(2) + vcDocumentStatusTr (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-2516':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCDocumentStatus>
assign oiReturnStatus = -1.
end.
end.
assign vcDocumentStatusTr = <M-36 GetCDocumentStatusTranslation (input t_sCDocumentStatus.CDocumentStatusStatus (icStatus)) in BCDocumentStatus>.
if (t_sCDocumentStatus.tc_Status = "N":U or
t_sCDocumentStatus.CDocumentStatusStatus <> t_iCDocumentStatus.CDocumentStatusStatus) and
t_sCDocumentStatus.CDocumentStatusStatus <> {&DOCUMENTSTATUS-INIT} and
t_sCDocumentStatus.CDocumentStatusStatus <> {&DOCUMENTSTATUS-VOID}
then do:
if t_sCDocumentStatus.tcGLCode = "":U or
t_sCDocumentStatus.tcGLCode = ?
then do:
if (t_sCDocumentStatus.CDocumentStatusStatus = {&DOCUMENTSTATUS-PAID})
then do:
<Q-34 assign vlFcQueryRecordsAvailable = CDocumentStatusByTypeStatusGL (NoCache)
(input viCompanyId, (CompanyId)
input t_sCDocumentStatus.CDocumentStatusDocType, (CDocumentStatusDocumentType)
input {&DOCUMENTSTATUS-DISCONT}, (CDocumentStatusStatus)
input t_sCDocumentStatus.BankGL_ID, (BankGLId)
input t_sCDocumentStatus.tcBankGLCode, (BankGLCode)) in BCDocumentStatus >
end.
if (t_sCDocumentStatus.CDocumentStatusStatus = {&DOCUMENTSTATUS-BOUNCED})
then do:
<Q-35 assign vlFcQueryRecordsAvailable = CDocumentStatusByTypeStatusGL (NoCache)
(input viCompanyId, (CompanyId)
input t_sCDocumentStatus.CDocumentStatusDocType, (CDocumentStatusDocumentType)
input {&DOCUMENTSTATUS-PAIDCON}, (CDocumentStatusStatus)
input t_sCDocumentStatus.BankGL_ID, (BankGLId)
input t_sCDocumentStatus.tcBankGLCode, (BankGLCode)) in BCDocumentStatus >
end.
if ((t_sCDocumentStatus.CDocumentStatusStatus <> {&DOCUMENTSTATUS-PAID} and
t_sCDocumentStatus.CDocumentStatusStatus <> {&DOCUMENTSTATUS-BOUNCED})or
(t_sCDocumentStatus.CDocumentStatusStatus = {&DOCUMENTSTATUS-BOUNCED} and vlFcQueryRecordsAvailable <> false ) or
(t_sCDocumentStatus.CDocumentStatusStatus = {&DOCUMENTSTATUS-PAID} and vlFcQueryRecordsAvailable <> false))
then do:
<M-20 run SetMessage
(input trim(#T-26'You must enter the GL account for status $1.':250(962)T-26#) (icMessage),
input vcDocumentStatusTr (icArguments),
input 'tCDocumentStatus.tcGLCode':U (icFieldName),
input t_sCDocumentStatus.tcGLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-2515':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCDocumentStatus>
assign oiReturnStatus = -1.
end.
end.
if t_sCDocumentStatus.tcJournalCode = "":U or
t_sCDocumentStatus.tcJournalCode = ?
then do:
<M-19 run SetMessage
(input trim(#T-27'You must enter the daybook for status $1.':250(963)T-27#) (icMessage),
input vcDocumentStatusTr (icArguments),
input 'tCDocumentStatus.tcJournalCode':U (icFieldName),
input t_sCDocumentStatus.tcJournalCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-2514':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCDocumentStatus>
assign oiReturnStatus = -1.
end.
end.
if (t_sCDocumentStatus.tc_Status = "N":U or
t_sCDocumentStatus.tcGLCode <> t_iCDocumentStatus.tcGLCode or
t_sCDocumentStatus.CDocumentStatusStatus <> t_iCDocumentStatus.CDocumentStatusStatus) and
t_sCDocumentStatus.tcGLCode <> "":U and
t_sCDocumentStatus.tcGLCode <> ?
then do:
<Q-29 run GLByCode (all) (Read) (NoCache)
(input t_sCDocumentStatus.Company_ID, (CompanyId)
input t_sCDocumentStatus.tcGLCode, (GLCode)
output dataset tqGLByCode) in BGL >
find first tqGLByCode where
tqGLByCode.tcGLCode = t_sCDocumentStatus.tcGLCode
no-error.
if not available tqGLByCode
then do:
<M-30 run SetMessage
(input trim(#T-28'GL account $1 cannot be found.':250(14942)t-28#) (icMessage),
input t_sCDocumentStatus.tcGLCode (icArguments),
input 'tCDocumentStatus.tcGLCode':U (icFieldName),
input t_sCDocumentStatus.tcGLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-3524':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCDocumentStatus>
assign oiReturnStatus = -1.
end.
else
if t_sCDocumentStatus.CDocumentStatusStatus = {&DOCUMENTSTATUS-BOUNCED} and
tqGLByCode.tcGLTypeCode <> {&GLTYPECODE-OPEN}
then do:
<M-31 run SetMessage
(input trim(#T-29'Only GL accounts of type $1 are allowed when document status is $2.':250(14943)t-29#) (icMessage),
input {&GLTYPECODE-OPEN-TR} + chr(2) + {&DOCUMENTSTATUS-BOUNCED-TR} (icArguments),
input 'tCDocumentStatus.tcGLCode':U (icFieldName),
input t_sCDocumentStatus.tcGLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-3525':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCDocumentStatus>
assign oiReturnStatus = -1.
end.
else
if t_sCDocumentStatus.CDocumentStatusStatus <> {&DOCUMENTSTATUS-BOUNCED} and
tqGLByCode.tcGLTypeCode <> {&GLTYPECODE-CDOC}
then do:
<M-32 run SetMessage
(input trim(#T-30'Only GL accounts of type $1 are allowed when document status is not $2.':250(14944)t-30#) (icMessage),
input {&GLTYPECODE-CDOC-TR} + chr(2) + {&DOCUMENTSTATUS-BOUNCED-TR} (icArguments),
input 'tCDocumentStatus.tcGLCode':U (icFieldName),
input t_sCDocumentStatus.tcGLCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCDocumentStatus.tc_Rowid (icRowid),
input 'QADFIN-3526':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCDocumentStatus>
assign oiReturnStatus = -1.
end.
end.
end.
<Q-33 run GLByCode (Stop) in BGL >