- Add MessageTemplate.runtime_field_labels so mobile's per-field
execution-time labels are actually persisted (were silently dropped)
- Fix AdvanceOrderStageView reading the wrong extra-input key, and be
honest about SMS send failures instead of always claiming success
- Add admin gift-gem SMS notification via Kavenegar
- Post real double-entry Transactions for plain (non-invoice) ledger
entries so trial balance, the معین screen, and CSV/XLSX exports
actually include everyday income/expense entries; backfill existing
historical entries via data migration
- Rewrite CSV ledger export to produce an actual دفتر معین structure
(per-account running balance) instead of a flat row dump
- Add invoice percent/promotional discounts, tax presets, ledger
discount-percent handling, product SKU/category/expiry fields, and
manual ledger-book archiving (replacing auto-archive on new book)
- Add reviews app (models, API, admin) for the comments/reviews feature
- Update tests for the above; fix two stale assertions left over from
earlier work in this branch (معین sheet name, book auto-close)