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 |
BExpenseNote | input | dataset | class dataset |
oiReturnStatus | output | integer | error status |
program code (program/bexpensenote.p)
for each t_sExpNote:
if t_sExpNote.tc_Status = "D":U
then do:
run gipr_Delete_sExpNoteCInvoice (input t_sExpNote.tc_Rowid).
run gipr_Delete_sExpNoteLine (input t_sExpNote.tc_Rowid).
end.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sExpNote.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sExpNote.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oExpNote where
not can-find (t_sExpNote where t_sExpNote.tc_Rowid = t_oExpNote.tc_Rowid):
create t_sExpNote.
raw-transfer t_oExpNote to t_sExpNote.
end.
for each t_sExpNoteCInvoice:
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sExpNoteCInvoice.tc_ParentRowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sExpNoteCInvoice.tc_ParentRowid = tFcRowidConvert.tcFcNewRowid.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sExpNoteCInvoice.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sExpNoteCInvoice.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oExpNoteCInvoice where
not can-find (t_sExpNoteCInvoice where t_sExpNoteCInvoice.tc_Rowid = t_oExpNoteCInvoice.tc_Rowid) and
not can-find (t_sExpNote where t_sExpNote.tc_Rowid = t_oExpNoteCInvoice.tc_ParentRowid and t_sExpNote.tc_Status = "D":U):
create t_sExpNoteCInvoice.
raw-transfer t_oExpNoteCInvoice to t_sExpNoteCInvoice.
end.
for each t_sExpNoteLine:
if t_sExpNoteLine.tc_Status = "D":U
then do:
run gipr_Delete_sExpNoteLineSaf (input t_sExpNoteLine.tc_Rowid).
end.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sExpNoteLine.tc_ParentRowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sExpNoteLine.tc_ParentRowid = tFcRowidConvert.tcFcNewRowid.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sExpNoteLine.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sExpNoteLine.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oExpNoteLine where
not can-find (t_sExpNoteLine where t_sExpNoteLine.tc_Rowid = t_oExpNoteLine.tc_Rowid) and
not can-find (t_sExpNote where t_sExpNote.tc_Rowid = t_oExpNoteLine.tc_ParentRowid and t_sExpNote.tc_Status = "D":U):
create t_sExpNoteLine.
raw-transfer t_oExpNoteLine to t_sExpNoteLine.
end.
for each t_sExpNoteLineSaf:
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sExpNoteLineSaf.tc_ParentRowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sExpNoteLineSaf.tc_ParentRowid = tFcRowidConvert.tcFcNewRowid.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sExpNoteLineSaf.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sExpNoteLineSaf.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oExpNoteLineSaf where
not can-find (t_sExpNoteLineSaf where t_sExpNoteLineSaf.tc_Rowid = t_oExpNoteLineSaf.tc_Rowid) and
not can-find (t_sExpNoteLine where t_sExpNoteLine.tc_Rowid = t_oExpNoteLineSaf.tc_ParentRowid and t_sExpNoteLine.tc_Status = "D":U):
create t_sExpNoteLineSaf.
raw-transfer t_oExpNoteLineSaf to t_sExpNoteLineSaf.
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.