project QadFinancials > class BCInvoice > method ValidateComponentPostAnalysis
Description
This method is a submethod of ValidateComponentAll.
This method validates the Creditor Invoices fields related to analysis : division, cost centre and project
Parameters
blStart4 | input-output | logical | Is query tqProjectForInvoiceValidation already started or not ? |
blStart8 | input-output | logical | Is query tqGLForInvoiceVal already started or not ? |
blStart9 | input-output | logical | Is query tqCostCentreForInvoiceVal already started or not ? |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program5/bcinvoice.p)
/* Read control account if necessary */
if ((t_sCInvoice.tc_Status = "N":U or
t_sCInvoice.tc_Status = "C":U and
(t_sCInvoice.ControlGL_ID <> t_iCInvoice.ControlGL_ID or
t_sCInvoice.Division_ID <> t_iCInvoice.Division_ID)) and
(t_sCInvoice.Division_ID = 0 or
t_sCInvoice.Division_ID = ?)) or
(t_sCInvoice.tc_Status = "N":U or
t_sCInvoice.tc_Status = "C":U and
(t_sCInvoice.ControlGL_ID <> t_iCInvoice.ControlGL_ID or
t_sCInvoice.Project_ID <> t_iCInvoice.Project_ID or
t_sCInvoice.CostCentre_ID <> t_iCInvoice.CostCentre_ID))
then do:
if not blStart8
then do:
<Q-14 run GLForInvoiceVal (Start) in BGL >
assign blStart8 = true.
end.
<Q-15 run GLForInvoiceVal (all) (Read) (Cache)
(input ?, (CompanyId)
input t_sCInvoice.ControlGL_ID, (GLId)
output dataset tqGLForInvoiceVal) in BGL >
find first tqGLForInvoiceVal where
tqGLForInvoiceVal.tiGL_ID = t_sCInvoice.ControlGL_ID
no-error.
end.
/* Division is mandatory if control account is with divisions */
if (t_sCInvoice.tc_Status = "N":U or
t_sCInvoice.tc_Status = "C":U and
(t_sCInvoice.ControlGL_ID <> t_iCInvoice.ControlGL_ID or
t_sCInvoice.Division_ID <> t_iCInvoice.Division_ID)) and
(t_sCInvoice.Division_ID = 0 or
t_sCInvoice.Division_ID = ?) and
tqGLForInvoiceVal.tlGLIsDivisionAccount
then do:
<M-16 run SetMessage
(input trim(#T-17'You must specify a sub-account because the control account ($1) is defined with cost center analysis.':255(65488)T-17#) (icMessage),
input t_sCInvoice.tcControlGLCode (icArguments),
input 'tCInvoice.tcDivisionCode':U (icFieldName),
input t_sCInvoice.tcDivisionCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCInvoice.tc_Rowid (icRowid),
input 'QadFin-7092':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
end.
/* Project is mandatory if control account is with projects */
if (t_sCInvoice.tc_Status = "N":U or
t_sCInvoice.tc_Status = "C":U and
(t_sCInvoice.ControlGL_ID <> t_iCInvoice.ControlGL_ID or
t_sCInvoice.Project_ID <> t_iCInvoice.Project_ID)) and
(t_sCInvoice.Project_ID = 0 or
t_sCInvoice.Project_ID = ?) and
tqGLForInvoiceVal.tlGLIsProjectAccount
then do:
<M-18 run SetMessage
(input trim(#T-18'You must specify a project because the control account ($1) is defined with project analysis.':255(65493)T-18#) (icMessage),
input t_sCInvoice.tcControlGLCode (icArguments),
input 'tCInvoice.tcProjectCode':U (icFieldName),
input t_sCInvoice.tcProjectCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCInvoice.tc_Rowid (icRowid),
input 'QadFin-7093':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
end.
/* Cost centre is mandatory if control account is with cost centres */
if (t_sCInvoice.tc_Status = "N":U or
t_sCInvoice.tc_Status = "C":U and
(t_sCInvoice.ControlGL_ID <> t_iCInvoice.ControlGL_ID or
t_sCInvoice.CostCentre_ID <> t_iCInvoice.CostCentre_ID)) and
(t_sCInvoice.CostCentre_ID = 0 or
t_sCInvoice.CostCentre_ID = ?) and
tqGLForInvoiceVal.tlGLIsCostCentreAccount
then do:
<M-19 run SetMessage
(input trim(#T-20'You must specify a cost centerbecause the control account ($1) is defined with cost center analysis..':255(65496)T-20#) (icMessage),
input t_sCInvoice.tcControlGLCode (icArguments),
input 'tCInvoice.tcCostCentreCode':U (icFieldName),
input t_sCInvoice.tcCostCentreCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCInvoice.tc_Rowid (icRowid),
input 'QadFin-7094':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
end.
/* Validate Project */
if (t_sCInvoice.tc_Status = "N":U or
t_sCInvoice.tc_Status = "C":U and
t_sCInvoice.Project_ID <> t_iCInvoice.Project_ID) and
t_sCInvoice.Project_ID <> 0 and
t_sCInvoice.Project_ID <> ?
then do:
if not blStart4
then do:
<Q-1 run ProjectForInvoiceValidation (Start) in BProject >
assign blStart4 = true.
end.
<Q-2 run ProjectForInvoiceValidation (all) (Read) (Cache)
(input ?, (CompanyId)
input t_sCInvoice.Project_ID, (ProjectId)
output dataset tqProjectForInvoiceValidation) in BProject >
find first tqProjectForInvoiceValidation where
tqProjectForInvoiceValidation.tiProject_ID = t_sCInvoice.Project_ID
no-error.
if not available tqProjectForInvoiceValidation
then do:
<M-3 run SetMessage
(input trim(#T-1'The specified project is not defined in the system or is invalid.':255(65450)T-1#) (icMessage),
input '':U (icArguments),
input 'tCInvoice.tcProjectCode':U (icFieldName),
input t_sCInvoice.tcProjectCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCInvoice.tc_Rowid (icRowid),
input 'QadFin-7068':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
return.
end.
if tqProjectForInvoiceValidation.tlProjectIsTemplate
then do:
<M-4 run SetMessage
(input trim(#T-5'Template projects are not allowed on supplier invoices.':250(1091)T-5#) (icMessage),
input '':U (icArguments),
input 'tCInvoice.tcProjectCode':U (icFieldName),
input t_sCInvoice.tcProjectCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCInvoice.tc_Rowid (icRowid),
input 'QadFin-7069':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
return.
end.
if tqProjectForInvoiceValidation.tlProjectStatusIsActive <> true
then do:
<M-6 run SetMessage
(input trim(#T-6'You can only specify projects with an active project status.':255(65451)T-6#) (icMessage),
input '':U (icArguments),
input 'tCInvoice.tcProjectCode':U (icFieldName),
input t_sCInvoice.tcProjectCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCInvoice.tc_Rowid (icRowid),
input 'QadFin-7070':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
end.
if tqProjectForInvoiceValidation.tlProjectStatusIsActive <> true
then do:
<M-7 run SetMessage
(input trim(#T-8'You can only specify projects with an active project status.':255(65451)T-8#) (icMessage),
input '':U (icArguments),
input 'tCInvoice.tcProjectCode':U (icFieldName),
input t_sCInvoice.tcProjectCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCInvoice.tc_Rowid (icRowid),
input 'QadFin-7071':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
end.
if tqProjectForInvoiceValidation.tcProjectStatusSystemStatus <> {&PROJECTSYSTEMSTATUS-OPEN}
then do:
<M-9 run SetMessage
(input trim(#T-9'Only projects with system status $1 are allowed.':255(65452)T-9#) (icMessage),
input {&PROJECTSYSTEMSTATUS-OPEN-TR} (icArguments),
input 'tCInvoice.tcProjectCode':U (icFieldName),
input t_sCInvoice.tcProjectCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCInvoice.tc_Rowid (icRowid),
input 'QadFin-7072':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
end.
end.
/* Validate Cost Centre */
if (t_sCInvoice.tc_Status = "N":U or
t_sCInvoice.tc_Status = "C":U and
t_sCInvoice.CostCentre_ID <> t_iCInvoice.CostCentre_ID) and
t_sCInvoice.CostCentre_ID <> 0 and
t_sCInvoice.CostCentre_ID <> ?
then do:
if not blStart9
then do:
<Q-22 run CostCentreForInvoiceVal (Start) in BCostCentre >
assign blStart9 = true.
end.
<Q-23 run CostCentreForInvoiceVal (all) (Read) (NoCache)
(input ?, (CompanyId)
input t_sCInvoice.CostCentre_ID, (CostCentreId)
output dataset tqCostCentreForInvoiceVal) in BCostCentre >
find first tqCostCentreForInvoiceVal where
tqCostCentreForInvoiceVal.tiCostCentre_ID = t_sCInvoice.CostCentre_ID
no-error.
if not available tqCostCentreForInvoiceVal
then do:
<M-24 run SetMessage
(input trim(#T-22'The specified cost center is not defined in the system.':255(65499)T-22#) (icMessage),
input '':U (icArguments),
input 'tCInvoice.tcCostCentreCode':U (icFieldName),
input t_sCInvoice.tcCostCentreCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCInvoice.tc_Rowid (icRowid),
input 'QadFin-7096':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
return.
end.
<M-25 run ValIsActive
(input t_sCInvoice.tcCostCentreCode (icTargetField),
input 'tCInvoice.tcCostCentreCode':U (icTargetFieldName),
input t_sCInvoice.tc_Rowid (icRowid),
input tqCostCentreForInvoiceVal.tlCostCentreIsActive (ilIsActive),
input trim(#T-23'Cost Center':40(5214)T-23#) (icParentObjectLabel),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper < 0 or
oiReturnStatus = 0
then assign oiReturnStatus = viFcReturnSuper.
end.