Change proposals' rows on the consolidated capex plan from a spreadsheet, row by row, or say what stops each one.
Headers
Preference
params=single-object Body
Change proposals' rows on the consolidated capex plan from a spreadsheet, row by row, or say what stops each one.
p_payload is {"lines": [...]}, a row of the file each, at most 2,000. Each names its row of the plan by scheme_code, the Request ID, among the rows you may see; it never adds a row, since a proposal comes onto the plan only when it is approved for the consolidation plan, and rows the file does not mention are left alone. A row may give item_description, justification and carryover_order_reference as words; quantity, fresh_sanction_amount, approved_carryover_amount, carryover_cashflow_cy, py1_carryover_outflow, py1_fresh_outflow, py2_outflow to py5_outflow and py1_month_01 to py1_month_12 as numbers; coordinator by email or name; nature by code or name; gst_rate by the code, name or percentage of a value of your organisation's GST Rate Master list; and asset_block by the code or name of a value of its Asset Block Master list. Nothing else is read. A key left out keeps what the row holds, and a key given empty clears it. A name the row already holds keeps the value it holds, even one no longer offered. A figure only the other investment type is asked is refused where it differs from what the row holds, and is otherwise ignored. An optional row key, the row's place in the file, is given back with its outcome.
Each row that would change something is saved exactly as save_capex_consolidated_line saves it, with every check, permission and Form Studio setting that applies there, and alone: a refused row is left as it was and the others are still saved. While a row is with its approvers only the approver it is waiting on may change it; otherwise it needs finance.capex_consolidation.edit. A row that would change nothing is counted in lines_unchanged and not saved, whoever may change it. Nothing is written unless p_dry_run is false; a dry run, the default, saves each row and takes it back, so its answer is the upload's.
Returns ok, dry_run, written (whether anything was), lines_updated, lines_unchanged, lines_refused and outcomes: for each row updated (or that would be, in a dry run) or refused, its row, scheme_code, outcome (UPDATED or REFUSED), the columns it changes, and for a refusal its error_code, message and hint.
Response
OK

