Description
Updates the contents of the class dataset.
When requested, the input data will be validated first, and the class dataset will only be updated when the input data is correct.
When no validation is requested, the input data is written to the class dataset unconditionally, but this data cannot be written to the database (method DataSave will return an error). The data can only be saved as a draft instance.
Parameters
| il_Validate | input | logical | validate input data |
| BDPaymentSelection | input | dataset | class dataset |
| oiReturnStatus | output | integer | error status |
program code (program/bdpaymentselection.p)
for each t_sDPaySel:
if t_sDPaySel.tc_Status = "D":U
then do:
run gipr_Delete_sDPaySelLine (input t_sDPaySel.tc_Rowid).
run gipr_Delete_sDPaySelPayCode (input t_sDPaySel.tc_Rowid).
end.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sDPaySel.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sDPaySel.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oDPaySel where
not can-find (t_sDPaySel where t_sDPaySel.tc_Rowid = t_oDPaySel.tc_Rowid):
create t_sDPaySel.
raw-transfer t_oDPaySel to t_sDPaySel.
end.
for each t_sDPaySelLine:
if t_sDPaySelLine.tc_Status = "D":U
then do:
run gipr_Delete_sDPaySelLineStg (input t_sDPaySelLine.tc_Rowid).
run gipr_Delete_sDPaySelPayRef (input t_sDPaySelLine.tc_Rowid).
end.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sDPaySelLine.tc_ParentRowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sDPaySelLine.tc_ParentRowid = tFcRowidConvert.tcFcNewRowid.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sDPaySelLine.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sDPaySelLine.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oDPaySelLine where
not can-find (t_sDPaySelLine where t_sDPaySelLine.tc_Rowid = t_oDPaySelLine.tc_Rowid) and
not can-find (t_sDPaySel where t_sDPaySel.tc_Rowid = t_oDPaySelLine.tc_ParentRowid and t_sDPaySel.tc_Status = "D":U):
create t_sDPaySelLine.
raw-transfer t_oDPaySelLine to t_sDPaySelLine.
end.
for each t_sDPaySelLineStg:
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sDPaySelLineStg.tc_ParentRowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sDPaySelLineStg.tc_ParentRowid = tFcRowidConvert.tcFcNewRowid.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sDPaySelLineStg.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sDPaySelLineStg.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oDPaySelLineStg where
not can-find (t_sDPaySelLineStg where t_sDPaySelLineStg.tc_Rowid = t_oDPaySelLineStg.tc_Rowid) and
not can-find (t_sDPaySelLine where t_sDPaySelLine.tc_Rowid = t_oDPaySelLineStg.tc_ParentRowid and t_sDPaySelLine.tc_Status = "D":U):
create t_sDPaySelLineStg.
raw-transfer t_oDPaySelLineStg to t_sDPaySelLineStg.
end.
for each t_sDPaySelPayRef:
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sDPaySelPayRef.tc_ParentRowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sDPaySelPayRef.tc_ParentRowid = tFcRowidConvert.tcFcNewRowid.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sDPaySelPayRef.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sDPaySelPayRef.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oDPaySelPayRef where
not can-find (t_sDPaySelPayRef where t_sDPaySelPayRef.tc_Rowid = t_oDPaySelPayRef.tc_Rowid) and
not can-find (t_sDPaySelLine where t_sDPaySelLine.tc_Rowid = t_oDPaySelPayRef.tc_ParentRowid and t_sDPaySelLine.tc_Status = "D":U):
create t_sDPaySelPayRef.
raw-transfer t_oDPaySelPayRef to t_sDPaySelPayRef.
end.
for each t_sDPaySelPayCode:
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sDPaySelPayCode.tc_ParentRowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sDPaySelPayCode.tc_ParentRowid = tFcRowidConvert.tcFcNewRowid.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sDPaySelPayCode.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sDPaySelPayCode.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oDPaySelPayCode where
not can-find (t_sDPaySelPayCode where t_sDPaySelPayCode.tc_Rowid = t_oDPaySelPayCode.tc_Rowid) and
not can-find (t_sDPaySel where t_sDPaySel.tc_Rowid = t_oDPaySelPayCode.tc_ParentRowid and t_sDPaySel.tc_Status = "D":U):
create t_sDPaySelPayCode.
raw-transfer t_oDPaySelPayCode to t_sDPaySelPayCode.
end.
if il_Validate
then do:
{ includes/bfcrun.i
&procedure = "CheckValidationExceptionList"
¶meters = "input true, output vl_validate" }
end.
if vl_Validate
then do:
{ includes/bfcrun.i
&procedure = "gipr_CompleteSTables" }
{ includes/bfcrun.i
&procedure = "ValidateComponent"
¶meters = "output oiReturnStatus" }
end.
if oiReturnStatus >= 0
then do:
{ includes/bfcrun.i
&procedure = "gipr_SetTables"
¶meters = "output viFcReturnSuper" }
if viFcReturnSuper <> 0
then assign oiReturnStatus = viFcReturnSuper.
end.
if il_Validate
and oiReturnStatus >= 0
then do:
{ includes/bfcrun.i
&procedure = "AdditionalUpdates"
¶meters = "output viFcReturnSuper" }
if viFcReturnSuper <> 0
then assign oiReturnStatus = viFcReturnSuper.
end.
if oiReturnStatus >= 0
then assign vlFcDataValidated = il_Validate.