Description
API method to allow the operationals validate daybook codes for consecutive and chronological numbering violations.
Parameters
iiCompanyId | input | integer | Input parameter : company id number. |
tAPIDaybookValidation | input-output | temp-table | |
itPostingDate | input | date | Posting Date |
olIsConsecutiveNbr | output | logical | Consecutive numbering is enabled. |
olIsChronologicalNbr | output | logical | Chronological Numbering is enabled. |
olChronoWarning | output | logical | Choronological numbering will return a warning instead of an error. |
tApiDinvoiceDaybookSets | input-output | temp-table | Input-output parameter: daybook sets to be validated. |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program5/bdinvoice.p)
/* =================================================================================================================== */
/* API method to allow the operationals validate daybook codes for chronological numbering violations. Note this method*/
/* does not check consecutive numbering !! */
/* This method is called as part of Print and Post. The daybook codes are the codes which might which are used during */
/* the invoice run */
/* called by us/so/soivpval.p */
/* =================================================================================================================== */
/* input iiCompanyId company id number */
/* input itPostingDate Posting Date */
/* input-output tAPIDaybookValidation */
/* input-output tApiDinvoiceDaybookSets daybook sets to be validated */
/* output olIsConsecutiveNbr Consecutive numbering is enabled */
/* output olIsChronologicalNbr Chronological Numbering is enabled */
/* output olChronoWarning Choronological numbering will return a warning or error */
/* It should be read in combination with vlCCNIsChronolNr */
/* vlCCNIsChronolNr=no --> nothing to happen */
/* vlCCNIsChronolNr=yes olChronoWarning=no --> Warning message */
/* vlCCNIsChronolNr=yes olChronoWarning=yes --> Error message */
/* output oiReturnStatus Return status of the method */
/* =================================================================================================================== */
/* 1 The output parameters olIsConsecutiveNbr olIsChronologicalNbr olChronoWarning reflect the setup of the system */
/* 2 tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod */
/* * Contains the DayBookSets used in the Print and Post run */
/* * The system will check if there are Invoices created for this daybookset in the period holding itPostingDate */
/* if so tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod is set to true */
/* 3 tAPIDaybookValidation.tlChronologicalError */
/* * Contains the DayBooks linked to the daybooksets which are used in the Print and Post run */
/* * For each Daybook, the system will check the chronological order if needed. If any invoice using the daybook */
/* has been posted in a date greater than the posting date, the field stlChronologicalError is set to yes */
/* =================================================================================================================== */
assign oiReturnStatus = -98
viLocalReturnStatus = 0.
/* Set the Entity to the working entity if not supplied */
if iiCompanyId = 0 or iiCompanyId = ?
then assign iiCompanyId = viCompanyId.
/* =================================================================================================================== */
/* 1. Set the class data items that hold the consecutive and chronological numbering settings for the working domain */
/* =================================================================================================================== */
<Q-90 run CompanyForDomainProperties (all) (Read) (NoCache)
(input iiCompanyId, (CompanyId)
input ?, (CompanyCode)
output dataset tqCompanyForDomainProperties) in BCompany>
find first tqCompanyForDomainProperties no-error.
if available tqCompanyForDomainProperties
then do:
assign vlCCNIsConsecutNr = tqCompanyForDomainProperties.tlDomainPropertyIsConsecutNr
vlCCNIsChronolNr = tqCompanyForDomainProperties.tlDomainPropertyIsChronolNr
vlCCNIsPopupInvNr = tqCompanyForDomainProperties.tlDomainPropertyIsPopupInvNr.
if vlCCNIsChronolNr and tqCompanyForDomainProperties.tcDomainPropertyNonChronErr = {&NONCHRONOLOGICAL-ERROR}
then assign vlCCNNonChronError = TRUE.
else assign vlCCNNonChronError = FALSE.
end. /* if available tqDomainPropertyForNumbering */
else do:
assign vlCCNIsConsecutNr = false
vlCCNIsChronolNr = false
vlCCNIsPopupInvNr = false
vlCCNNonChronError = false.
end. /* NOT if available tqDomainPropertyForNumbering */
/* =================================================================================================================== */
/* If chronological numbering is active, determine tlInvoiceFoundInPeriod and tlChronologicalError */
/* =================================================================================================================== */
if vlCCNIsConsecutNr = TRUE and vlCCNIsChronolNr = TRUE
then do:
/* =============================================================================================================== */
/* 2. Determine tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod (this is per daybookset) */
/* =============================================================================================================== */
<Q-93 run PeriodByStartEndDate (all) (Read) (NoCache)
(input iiCompanyId, (CompanyId)
input itPostingDate, (Date)
output dataset tqPeriodByStartEndDate) in BPeriod>
find first tqPeriodByStartEndDate where
tqPeriodByStartEndDate.tiCompany_ID = iiCompanyId and
tqPeriodByStartEndDate.ttPeriodStartDate <= itPostingDate and
tqPeriodByStartEndDate.ttPeriodEndDate >= itPostingDate and
tqPeriodByStartEndDate.tcPeriodTypeCode = {&PERIODTYPECODE-NORMAL}
no-error.
if available tqPeriodByStartEndDate
then do:
for each tApiDinvoiceDaybookSets :
/* Get all the daybooks linked to the DaybookSet */
<Q-10 run DaybookSetBeginsCode (all) (Read) (NoCache)
(input tApiDinvoiceDaybookSets.tcDaybookSet, (DaybookSetCode)
input tqCompanyForDomainProperties.tcDomainCode, (DomainCode)
output dataset tqDaybookSetBeginsCode) in BMfgDaybookSet>
find tqDaybookSetBeginsCode where
tqDaybookSetBeginsCode.tcdybs_domain = tqCompanyForDomainProperties.tcDomainCode and
tqDaybookSetBeginsCode.tcdybs_code = tApiDinvoiceDaybookSets.tcDaybookSet
no-error.
if available tqDaybookSetBeginsCode
then do:
/* 1 Check tcdybs_invoices_dybk */
if tqDaybookSetBeginsCode.tcdybs_invoices_dybk <> '' and tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod = false
then do :
<M-38 run APIJournalNbrValDet1
(input iiCompanyId (iiCompany_ID),
input tqDaybookSetBeginsCode.tcdybs_invoices_dybk (icJournalCode),
input tqPeriodByStartEndDate.tiPeriod_ID (iiPeriod_ID),
output tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod (olInvoiceFound),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end. /* tcdybs_invoices_dybk */
/* 2 Check tcdybs_credit_dybk */
if tqDaybookSetBeginsCode.tcdybs_credit_dybk <> '' and tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod = false
then do :
<M-89 run APIJournalNbrValDet1
(input iiCompanyId (iiCompany_ID),
input tqDaybookSetBeginsCode.tcdybs_credit_dybk (icJournalCode),
input tqPeriodByStartEndDate.tiPeriod_ID (iiPeriod_ID),
output tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod (olInvoiceFound),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end. /* tcdybs_credit_dybk */
/* 3 Check tcdybs_pos_criv_dybk */
if tqDaybookSetBeginsCode.tcdybs_pos_criv_dybk <> '' and tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod = false
then do :
<M-42 run APIJournalNbrValDet1
(input iiCompanyId (iiCompany_ID),
input tqDaybookSetBeginsCode.tcdybs_pos_criv_dybk (icJournalCode),
input tqPeriodByStartEndDate.tiPeriod_ID (iiPeriod_ID),
output tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod (olInvoiceFound),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end. /* tcdybs_pos_criv_dybk */
/* 4 Check tcdybs_neg_criv_dybk */
if tqDaybookSetBeginsCode.tcdybs_neg_criv_dybk <> '' and tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod = false
then do :
<M-91 run APIJournalNbrValDet1
(input iiCompanyId (iiCompany_ID),
input tqDaybookSetBeginsCode.tcdybs_neg_criv_dybk (icJournalCode),
input tqPeriodByStartEndDate.tiPeriod_ID (iiPeriod_ID),
output tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod (olInvoiceFound),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end. /* tcdybs_neg_criv_dybk */
/* 5 Check tcdybs_pos_crcn_dybk */
if tqDaybookSetBeginsCode.tcdybs_pos_crcn_dybk <> '' and tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod = false
then do :
<M-21 run APIJournalNbrValDet1
(input iiCompanyId (iiCompany_ID),
input tqDaybookSetBeginsCode.tcdybs_pos_crcn_dybk (icJournalCode),
input tqPeriodByStartEndDate.tiPeriod_ID (iiPeriod_ID),
output tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod (olInvoiceFound),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end. /* tcdybs_pos_crcn_dybk */
/* 6 Check tcdybs_neg_crcn_dybk */
if tqDaybookSetBeginsCode.tcdybs_neg_crcn_dybk <> '' and tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod = false
then do :
<M-92 run APIJournalNbrValDet1
(input iiCompanyId (iiCompany_ID),
input tqDaybookSetBeginsCode.tcdybs_neg_crcn_dybk (icJournalCode),
input tqPeriodByStartEndDate.tiPeriod_ID (iiPeriod_ID),
output tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod (olInvoiceFound),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end. /* tcdybs_neg_crcn_dybk */
/* 7 Check tcdybs_interco_dybk */
if tqDaybookSetBeginsCode.tcdybs_interco_dybk <> '' and tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod = false
then do :
<M-85 run APIJournalNbrValDet1
(input iiCompanyId (iiCompany_ID),
input tqDaybookSetBeginsCode.tcdybs_interco_dybk (icJournalCode),
input tqPeriodByStartEndDate.tiPeriod_ID (iiPeriod_ID),
output tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod (olInvoiceFound),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end. /* tcdybs_interco_dybk */
/* 8 Check tcdybs_adjustment_dybk */
if tqDaybookSetBeginsCode.tcdybs_adjustment_dybk <> '' and tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod = false
then do :
<M-43 run APIJournalNbrValDet1
(input iiCompanyId (iiCompany_ID),
input tqDaybookSetBeginsCode.tcdybs_adjustment_dybk (icJournalCode),
input tqPeriodByStartEndDate.tiPeriod_ID (iiPeriod_ID),
output tApiDinvoiceDaybookSets.tlInvoiceFoundInPeriod (olInvoiceFound),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end. /* tcdybs_adjustment_dybk */
end. /* if available tqDaybookSetBeginsCode */
end. /* for each tApiDinvoiceDaybookSets */
end. /* if available tqGLCalendarYrByDateDomain */
/* =============================================================================================================== */
/* 3. Determine tAPIDaybookValidation.tlChronologicalError (this is per daybook) */
/* =============================================================================================================== */
for each tAPIDaybookValidation:
assign tAPIDaybookValidation.tlChronologicalError = FALSE.
<M-18 run APIJournalNbrValDet2
(input iiCompanyId (iiCompany_ID),
input tAPIDaybookValidation.tcJournalCode (icJournalCode),
input itPostingDate (itInvoicePostingDate),
output tAPIDaybookValidation.tlChronologicalError (olInvoiceFound),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
end. /* for each tAPIDaybookValidation */
end. /* if vlCCNIsConsecutNr = TRUE and vlCCNIsChronolNr = TRUE */
/* ========================================================================= */
/* Set the output variables */
/* Note the setting of olChronoWarning is strange and indicates error or not */
/* vlCCNIsChronolNr=no --> nothing to happen */
/* vlCCNIsChronolNr=yes olChronoWarning=no --> Warning message */
/* vlCCNIsChronolNr=yes olChronoWarning=yes --> Error message */
/* ========================================================================= */
assign olIsConsecutiveNbr = vlCCNIsConsecutNr
olIsChronologicalNbr = vlCCNIsChronolNr
olChronoWarning = vlCCNNonChronError.
assign oiReturnStatus = viLocalReturnStatus.