project BLF > class BReportRequestBase > method ValidateComponent
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/breportrequestbase.p)
<ANCESTOR-CODE>
assign vcNoEmailUsers = "".
for each t_sRptRequest where
t_sRptRequest.tc_Status <> "D" on error undo, throw:
if t_sRptRequest.tc_Status = "C"
then do:
find t_iRptRequest where
t_iRptRequest.tc_Rowid = t_sRptRequest.tc_Rowid
no-error.
if not available t_iRptRequest
then do:
<M-50 run SetMessage
(input trim(#T-52'Internal error: no initial record found for modified RptRequest record.':255(865413501)T-52#) (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sRptRequest.tc_Rowid (icRowid),
input 'BLF-198872':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportRequestBase>
assign oiReturnStatus = -3.
next.
end.
end.
if t_sRptRequest.RptRequestMailSubject = "" and
(t_sRptRequest.RptRequestMailBCC <> "" or
t_sRptRequest.RptRequestMailCC <> "" or
t_sRptRequest.RptRequestMailTo <> "" or
can-find(first t_sRptRequestMail where
t_sRptRequestMail.tc_ParentRowid = t_sRptRequest.tc_Rowid and
t_sRptRequestMail.tc_Status <> "D")) and
(t_sRptRequest.tc_Status = "N" or
t_sRptRequest.tc_Status = "C" and
(t_sRptRequest.RptRequestMailSubject <> t_iRptRequest.RptRequestMailSubject or
t_sRptRequest.RptRequestMailBCC <> t_iRptRequest.RptRequestMailBCC or
t_sRptRequest.RptRequestMailCC <> t_iRptRequest.RptRequestMailCC or
t_sRptRequest.RptRequestMailTo <> t_iRptRequest.RptRequestMailTo))
then do:
<M-1 run SetMessage
(input #T-1'You must enter the mail subject.':100(6480)T-1# (icMessage),
input '' (icArguments),
input 'tRptRequest.RptRequestMailSubject' (icFieldName),
input t_sRptRequest.RptRequestMailSubject (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sRptRequest.tc_Rowid (icRowid),
input 'BLF-148':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportRequestBase>
assign oiReturnStatus = -1.
end.
for each t_sRptRequestMail where
t_sRptRequestMail.tc_ParentRowid = t_sRptRequest.tc_Rowid and
(t_sRptRequestMail.tc_Status = "N" or
t_sRptRequestMail.tc_Status = "C") on error undo, throw:
if t_sRptRequestMail.tc_Status = "C"
then do:
find t_iRptRequestMail where
t_iRptRequestMail.tc_Rowid = t_sRptRequestMail.tc_Rowid
no-error.
if not available t_iRptRequestMail
then do:
<M-53 run SetMessage
(input trim(#T-28'Internal error: no initial record found for modified RptRequestMail record.':255(108077002)T-28#) (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sRptRequestMail.tc_Rowid (icRowid),
input 'BLF-484780':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportRequestBase>
assign oiReturnStatus = -3.
next.
end.
end.
if t_sRptRequestMail.Role_ID <> 0 and
t_sRptRequestMail.Role_ID <> ? and
(t_sRptRequestMail.tc_Status = "N" or
t_sRptRequestMail.tc_Status = "C" and
t_sRptRequestMail.Role_ID <> t_iRptRequestMail.Role_ID)
then do:
<Q-72 run UserByRoleId (all) (Read) (Cache)
(input t_sRptRequestMail.Role_ID, (RoleId)
input true, (UsrIsActive)
input viCompanyId, (CompanyId)
output dataset tqUserByRoleId) in BUser >
for each tqUserByRoleId where
tqUserByRoleId.tcUsrMailAddress = "" or
tqUserByRoleId.tcUsrMailAddress = ? on error undo, throw:
if vcNoEmailUsers <> ""
then assign vcNoEmailUsers = vcNoEmailUsers + ", ".
assign vcNoEmailUsers = vcNoEmailUsers + tqUserByRoleId.tcUsrName.
end.
end.
end.
end.
if vcNoEmailUsers <> ""
then do:
<M-2 run SetMessage
(input trim(#T-22'The following users will not receive an e-mail because their user profile does not contain an e-mail address:':255(166289427)T-22#) (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'W' (icType),
input 4 (iiSeverity),
input '' (icRowid),
input 'BLF-607816':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportRequestBase>
<M-13 run SetMessage
(input vcNoEmailUsers (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'W' (icType),
input 4 (iiSeverity),
input '' (icRowid),
input 'BLF-201161':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportRequestBase>
if oiReturnStatus = 0
then assign oiReturnStatus = 1.
end.