2e8e4a0f86
- transformExpense surfaces invoiced (billed_invoice_id), paid (supplier_paid), paidAt, paymentMethod, customerAccountId - updateExpense throws EXPENSE_LOCKED once invoiced (edit until then) - rebillExpense mints a client invoice line + locks the expense - markExpensePaid toggles manual paid state - adminExpenses: POST /:id/invoice (rebill) + POST /:id/paid - adminTaxReport now gated by accounting master + taxReport sub-flag (independent of bills; tax export moved out of CRM into Accounting)