project QadFinancials > class BExpenseNote > method SetPublicTables

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_Validateinputlogicalvalidate input data
BExpenseNoteinputdatasetclass dataset
oiReturnStatusoutputintegererror 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"
          &parameters = "input true, output vl_validate" }
    end.

    if vl_Validate
    then do:
        { includes/bfcrun.i
          &procedure  = "gipr_CompleteSTables" }
        { includes/bfcrun.i
          &procedure  = "ValidateComponent"
          &parameters = "output oiReturnStatus" }
    end.

    if oiReturnStatus >= 0
    then do:
        { includes/bfcrun.i
          &procedure  = "gipr_SetTables"
          &parameters = "output viFcReturnSuper" }
        if viFcReturnSuper <> 0
        then assign oiReturnStatus = viFcReturnSuper.
    end.

    if  il_Validate
    and oiReturnStatus >= 0
    then do:
        { includes/bfcrun.i
          &procedure  = "AdditionalUpdates"
          &parameters = "output viFcReturnSuper" }
        if viFcReturnSuper <> 0
        then assign oiReturnStatus = viFcReturnSuper.
    end.

    if oiReturnStatus >= 0
    then assign vlFcDataValidated = il_Validate.