Answer
Query the underlying table directly (voucher_row_tab) instead of the view (voucher_row) — since this code is running inside an event/trigger context, tables can be queried directly there, and doing so avoids the mutating-table restriction that querying the view (which itself selects from the table currently being modified) can trigger.