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 |
BBankEntry | input | dataset | class dataset |
oiReturnStatus | output | integer | error status |
program code (program/bbankentry.p)
for each t_sBankState:
if t_sBankState.tc_Status = "D":U
then do:
run gipr_Delete_sBankStateLine (input t_sBankState.tc_Rowid).
end.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sBankState.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sBankState.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oBankState where
not can-find (t_sBankState where t_sBankState.tc_Rowid = t_oBankState.tc_Rowid):
create t_sBankState.
raw-transfer t_oBankState to t_sBankState.
end.
for each t_sBankStateLine:
if t_sBankStateLine.tc_Status = "D":U
then do:
run gipr_Delete_sBankStateAlloc (input t_sBankStateLine.tc_Rowid).
end.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sBankStateLine.tc_ParentRowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sBankStateLine.tc_ParentRowid = tFcRowidConvert.tcFcNewRowid.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sBankStateLine.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sBankStateLine.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oBankStateLine where
not can-find (t_sBankStateLine where t_sBankStateLine.tc_Rowid = t_oBankStateLine.tc_Rowid) and
not can-find (t_sBankState where t_sBankState.tc_Rowid = t_oBankStateLine.tc_ParentRowid and t_sBankState.tc_Status = "D":U):
create t_sBankStateLine.
raw-transfer t_oBankStateLine to t_sBankStateLine.
end.
for each t_sBankStateAlloc:
if t_sBankStateAlloc.tc_Status = "D":U
then do:
run gipr_Delete_sBankStateAllocColl (input t_sBankStateAlloc.tc_Rowid).
run gipr_Delete_sBankStateStageAlloc (input t_sBankStateAlloc.tc_Rowid).
end.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sBankStateAlloc.tc_ParentRowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sBankStateAlloc.tc_ParentRowid = tFcRowidConvert.tcFcNewRowid.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sBankStateAlloc.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sBankStateAlloc.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oBankStateAlloc where
not can-find (t_sBankStateAlloc where t_sBankStateAlloc.tc_Rowid = t_oBankStateAlloc.tc_Rowid) and
not can-find (t_sBankStateLine where t_sBankStateLine.tc_Rowid = t_oBankStateAlloc.tc_ParentRowid and t_sBankStateLine.tc_Status = "D":U):
create t_sBankStateAlloc.
raw-transfer t_oBankStateAlloc to t_sBankStateAlloc.
end.
for each t_sBankStateAllocColl:
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sBankStateAllocColl.tc_ParentRowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sBankStateAllocColl.tc_ParentRowid = tFcRowidConvert.tcFcNewRowid.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sBankStateAllocColl.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sBankStateAllocColl.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oBankStateAllocColl where
not can-find (t_sBankStateAllocColl where t_sBankStateAllocColl.tc_Rowid = t_oBankStateAllocColl.tc_Rowid) and
not can-find (t_sBankStateAlloc where t_sBankStateAlloc.tc_Rowid = t_oBankStateAllocColl.tc_ParentRowid and t_sBankStateAlloc.tc_Status = "D":U):
create t_sBankStateAllocColl.
raw-transfer t_oBankStateAllocColl to t_sBankStateAllocColl.
end.
for each t_sBankStateStageAlloc:
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sBankStateStageAlloc.tc_ParentRowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sBankStateStageAlloc.tc_ParentRowid = tFcRowidConvert.tcFcNewRowid.
find first tFcRowidConvert where
tFcRowidConvert.tcFcOldRowid = t_sBankStateStageAlloc.tc_Rowid and
tFcRowidConvert.tlFcOk no-error.
if available tFcRowidConvert
then assign t_sBankStateStageAlloc.tc_Rowid = tFcRowidConvert.tcFcNewRowid.
end.
for each t_oBankStateStageAlloc where
not can-find (t_sBankStateStageAlloc where t_sBankStateStageAlloc.tc_Rowid = t_oBankStateStageAlloc.tc_Rowid) and
not can-find (t_sBankStateAlloc where t_sBankStateAlloc.tc_Rowid = t_oBankStateStageAlloc.tc_ParentRowid and t_sBankStateAlloc.tc_Status = "D":U):
create t_sBankStateStageAlloc.
raw-transfer t_oBankStateStageAlloc to t_sBankStateStageAlloc.
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.