Make every PaymentRequest changelist column sortable ascending/descending
(computed amount/user/jalali columns get an `ordering` so they sort by the
underlying DB field; only the "check success again" action button stays
unsortable). Add a default `-created_at` ordering and surface `updated_at`
as its own sortable column. The created_at/updated_at DateTimeRangeFilters
are retained and compose with sorting.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Introduce templates/pg/pg_base.html holding the common layout, Vazirmatn
typography, colour tokens and reusable components (buttons, rows, dividers,
gateway cards, alerts). All four payer-facing screens now extend it for a
consistent, mobile-first UI matching the approved UI/UX design:
- payment_request: card layout with amount row + gateway picker cards
- payment_confirm: restyled "in review" state
- payment_success: extends base, adds tracking-code row
- payment_failure: extends base, keeps refund notice
Mobile: full-bleed white screen, centred content, primary action pinned to
the bottom with safe-area padding. >=480px: floated centred card on a grey
canvas. No view/logic changes.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The deposit_income_submit/deposit_income_verify/charge_wallet_income
machinery and income_uuid added in 7dcb730 were not intended. Remove
them and the trailing charge_wallet_income() call.
The wallet charge is back to a single deposit: paid from IPG's own
application wallet (WALLET_IPG_CREDIT) into the user's rial wallet
(WALLET_RIAL_DEPOSIT).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
deposit_submit/deposit_verify passed WALLET_RIAL_DEPOSIT (a user-side
wallet type) as the company-side payer wallet. The payer must be IPG's
application wallet, WALLET_IPG_CREDIT; the user's rial wallet stays as
the body payee_wallet. deposit_income_* already used WALLET_IPG_CREDIT
correctly.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Rename the wallet-service UUID setting and its env var from
WALLET_INCOME_FROM_IPG to WALLET_IPG_CREDIT across settings and the
income-deposit flow in apps/pg/models.py. Deployments must rename the
corresponding environment variable.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Rename the wallet-service UUID setting and its env var from
WALLET_INCOME_FROM_IPG to WALLET_IPG_TRANSIT across settings and the
income-deposit flow in apps/pg/models.py. Deployments must rename the
corresponding environment variable.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
WALLET_RIAL -> WALLET_RIAL_DEPOSIT to match the naming used for the same
wallet-service UUID in the advertising/settlement/promotions repos. Also
adds WALLET_INCOME_FROM_IPG and wires it in: after a successful wallet
charge, the commission portion is deposited separately into it (attributed
to the requesting OAuth2 application) instead of never entering the wallet
ledger. The income deposit is best-effort and logs on failure rather than
failing an already-successful charge.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>