Fix OTP/SMS, ledger accounting, order tracking, and add reviews app

- 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)
This commit is contained in:
2026-09-15 23:18:05 +03:30
parent 61b7c91b02
commit 831e656fa3
32 changed files with 1036 additions and 77 deletions
+5
View File
@@ -58,6 +58,7 @@ LOCAL_APPS = [
"apps.landing",
"apps.orders",
"apps.telemetry",
"apps.reviews",
]
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
@@ -204,6 +205,10 @@ SIMPLE_JWT = {
# ============================================
KAVENEGAR_API_KEY = config("KAVENEGAR_API_KEY", default="")
SMS_PATTERN_NAME = config("SMS_PATTERN_NAME", default="shopshipotp")
# قالبِ پیامکِ «هدیه‌ی جم از پنل ادمین» — باید جدا از SMS_PATTERN_NAME در
# کاوه‌نگار ثبت شود (لوکاپ/پترن فقط با یک token عدد کار می‌کند، همان
# تعداد جمِ هدیه‌داده‌شده).
SMS_GIFT_PATTERN_NAME = config("SMS_GIFT_PATTERN_NAME", default="")
# برای سازگاری با کدهای قدیمی (استفاده نمی‌شود)
SMS_TOKEN_URL = config("SMS_TOKEN_URL", default="")