• DevPilot's avatar
    fix(ui): buttons that led nowhere, across the financial screens · 72d9ec28
    DevPilot authored
    Swept every link and form action in the financial modules against the real
    route patterns. The asset problem was not a one-off.
    
    **Screens you could reach but not use.** Three edit screens existed, worked, and
    had nothing linking to them: vendor invoices, return-to-vendor, and the legacy
    pricing configs. Buttons added on both the list and the detail page, gated on
    the same status the controller already enforces — draft only, since neither
    document should change once verified or submitted.
    
    **Links pointing at routes that do not exist.**
    
      - Asset custody was entirely unusable: both the transfer button and the
        transfer form posted to /inventory/assets/{id}/transfer, but the route is
        /inventory/assets/custody/{id}/transfer. Nobody could ever hand over an
        asset.
      - Pricing configs was broken at both ends — the list linked to
        /pricing/{id}/edit and the form posted to /pricing/{id}, while the routes
        are under /pricing/configs. The edit screen was unreachable and unsavable.
      - Quote comparison posted to /select-winner, which was never built; the
        endpoint is /procurement/quotes/evaluate.
      - The quotes list "عرض" pointed at a detail page that does not exist. It now
        opens the response screen, which is what a quote is actually for.
      - "تظلم" on a fine was an <a>, so it issued a GET against a POST-only route.
        It is a form now, with a confirmation, since it records something.
    
    **Buttons for things that were never built.** BOM edit had no route and no
    controller method — a guaranteed 404 in two places. Removed rather than faked;
    creating and viewing a BOM both work, and editing one is a feature nobody has
    written yet. Settlements had exactly one action and it opened a detail page that
    does not exist either; replaced with اعتماد, the action that does exist and the
    only thing a draft settlement is waiting on.
    
    Not changed, having checked: vouchers and budgets flagged in the sweep were
    artifacts of my own parser — PHP unescapes '\\d+' in single quotes, and the
    budgets links emit a query string from inside the PHP tag. Both resolve fine.
    
    Verified: 1503 routes resolve, 255 controllers instantiate, 243 services load,
    zero orphaned edit screens remain, and every screen touched renders.
    Co-Authored-By: 's avatarClaude Opus 5 <noreply@anthropic.com>
    72d9ec28
Name
Last commit
Last update
..
accruals Loading commit data...
bank_accounts Loading commit data...
bank_reconciliation Loading commit data...
billing Loading commit data...
branch_fees Loading commit data...
budgets Loading commit data...
chains Loading commit data...
chart_of_accounts Loading commit data...
cost_centers Loading commit data...
daily_transactions Loading commit data...
dashboard Loading commit data...
dimensions Loading commit data...
documentary_credits Loading commit data...
fiscal_years Loading commit data...
gaps Loading commit data...
guarantees Loading commit data...
instruments Loading commit data...
journal_entries Loading commit data...
journal_types Loading commit data...
loans Loading commit data...
notes_payable Loading commit data...
opening_entries Loading commit data...
period_closing Loading commit data...
portfolios Loading commit data...
reclassification Loading commit data...
reports Loading commit data...
revenue_mapping Loading commit data...
settlements Loading commit data...
statements Loading commit data...
vouchers Loading commit data...