From 534a84f9779cd53cbd53c434952568d19ac16f33 Mon Sep 17 00:00:00 2001 From: javad Date: Wed, 21 Oct 2026 10:50:42 +0330 Subject: [PATCH] improve bazdid --- PROJECT_TREE.txt | 8 +- .../migrations/0079_customer_visit_hold.py | 23 + admin_panel/models/customers.py | 19 + .../admin_panel/customerActionInc.html | 494 ++++++++++++-- .../templates/admin_panel/entezar.html | 490 +++++++++----- admin_panel/templatetags/custom_tags.py | 17 +- admin_panel/views/actions.py | 41 +- admin_panel/views/customers.py | 193 +++++- admin_panel/visit_policy.py | 285 +++++++-- docs/visit_hold_entezar.md | 468 ++++++++++++++ tests/test_customer_name_fix.py | 2 + tests/test_visit_policy.py | 604 ++++++++++++++++-- 12 files changed, 2305 insertions(+), 339 deletions(-) create mode 100644 admin_panel/migrations/0079_customer_visit_hold.py create mode 100644 docs/visit_hold_entezar.md diff --git a/PROJECT_TREE.txt b/PROJECT_TREE.txt index ea2be3f..d010a73 100644 --- a/PROJECT_TREE.txt +++ b/PROJECT_TREE.txt @@ -1,10 +1,10 @@ Project Root: khatibi -Generated At: 2026-10-20T14:01:53+00:00 -Python Files: 186 +Generated At: 2026-10-20T17:07:57+00:00 +Python Files: 187 Django Files: 12 JavaScript/TypeScript Files: 14 HTML Files: 58 -Total Files: 744 +Total Files: 746 Total Directories: 78 khatibi @@ -128,6 +128,7 @@ khatibi │ │ ├── 0075_cheque_funding_before_due.py │ │ ├── 0076_alter_smstemplate_text_help.py │ │ ├── 0077_alter_smstemplate_text_balance_help.py +│ │ ├── 0078_action_visit_covering_index.py │ │ └── __init__.py │ ├── models │ │ ├── __init__.py @@ -321,6 +322,7 @@ khatibi │ ├── viewsBK.py │ └── visit_policy.py ├── data9 +│ ├── backup-20261020-180934.sqlite3 │ ├── db2 (2).sqlite32 │ ├── db2.sqlite32 │ ├── db222.sqlite3 diff --git a/admin_panel/migrations/0079_customer_visit_hold.py b/admin_panel/migrations/0079_customer_visit_hold.py new file mode 100644 index 0000000..8ea80d9 --- /dev/null +++ b/admin_panel/migrations/0079_customer_visit_hold.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.25 on 2026-10-20 18:07 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('admin_panel', '0078_action_visit_covering_index'), + ] + + operations = [ + migrations.AddField( + model_name='customer', + name='visit_hold_set_at', + field=models.DateTimeField(blank=True, help_text='برای حسابرسی: آخرین باری که مقدار «قرار بعدی» نوشته شد.', null=True, verbose_name='زمان ثبت قرار'), + ), + migrations.AddField( + model_name='customer', + name='visit_hold_until', + field=models.DateTimeField(blank=True, help_text='تا پایان این روز پیگیری لازم نیست؛ از فرم «هماهنگی» تنظیم می\u200cشود.', null=True, verbose_name='قرار بعدی (تعویق بازدید)'), + ), + ] diff --git a/admin_panel/models/customers.py b/admin_panel/models/customers.py index bcc8bfa..4c9179b 100644 --- a/admin_panel/models/customers.py +++ b/admin_panel/models/customers.py @@ -39,6 +39,25 @@ class Customer(models.Model): help_text="شماره‌های نرمال‌شده (+98…) جدا‌شده با کاما؛ خالی = شمارهٔ اول مشتری.", ) + # ------------------------------------------------------------------ + # «قرار بعدی» — تعویقِ دستیِ بازدید (تصمیم محصولی) + # ------------------------------------------------------------------ + # این ستون **اعتبار مستقل ندارد**: فقط وقتی اثر دارد که یک اقدام «هماهنگی» + # فعال (``waite``/``finish``) با تاریخ آینده برای همان مشتری وجود داشته باشد. + # منبع حقیقت همچنان جدول ``Action`` است و این مقدار یک میان‌بر سریع برای + # نمایش/فیلتر است. اگر هماهنگی حذف/لغو شود، این مقدار خودبه‌خود بی‌اثر می‌شود + # (نگاه کنید به ``visit_policy.manual_holds_map``). + visit_hold_until = models.DateTimeField( + null=True, blank=True, + verbose_name="قرار بعدی (تعویق بازدید)", + help_text="تا پایان این روز پیگیری لازم نیست؛ از فرم «هماهنگی» تنظیم می‌شود.", + ) + visit_hold_set_at = models.DateTimeField( + null=True, blank=True, + verbose_name="زمان ثبت قرار", + help_text="برای حسابرسی: آخرین باری که مقدار «قرار بعدی» نوشته شد.", + ) + def __str__(self): return self.name_family diff --git a/admin_panel/templates/admin_panel/customerActionInc.html b/admin_panel/templates/admin_panel/customerActionInc.html index 412d0d5..4ae8889 100644 --- a/admin_panel/templates/admin_panel/customerActionInc.html +++ b/admin_panel/templates/admin_panel/customerActionInc.html @@ -161,27 +161,160 @@ + + {% if customer %}