• DevPilot's avatar
    feat(accounting): unified cheque register with full lifecycle history · 927edd62
    DevPilot authored
    The cheque data existed but the screen was a per-direction list and the
    status was overwritten in place — there was no record of who did what,
    when, or what the previous state was. Adds:
    
    - صادر ووارد شيكات بنكية: one screen for both directions, with the
      full filter set (date range on either the cheque date or the movement
      date, direction, number, party, bank, branch, status, amount range),
      a reset, and per-direction summary cards whose totals are clickable
      and drive the filters.
    - instrument_movements: every action is appended as an immutable row
      (action, from/to status, date, user, bank, reference, notes). Nothing
      is ever deleted, so each cheque carries a complete audit trail.
      Existing cheques get an opening "register" movement on migrate so the
      history starts from a known point.
    - The complete status sets for both directions — registered, ready,
      delivered, deposited, under collection, pending, collected, paid,
      bounced, endorsed, returned, replaced, cancelled, closed — with a
      direction-specific transition map that refuses illogical moves such
      as collecting a cancelled cheque.
    - Cheques with movements cannot be deleted; corrections are new
      actions, not edits.
    
    The older screens now funnel through the same service, and the bounce
    and resolve paths log movements too, so the trail stays complete no
    matter which screen the action came from.
    927edd62
register.php 11.1 KB