fix mandehesab, bazdid, sms
This commit is contained in:
1 parent
7e5c83bea2
commit
1fd27d0445
22 files changed
+16462
-5918
No files matched your search
@@ -0,0 +1,37 @@
|
||||
# Generated by Django 3.2.25 on 2026-10-16 10:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
"""افزودن ``choices`` به ``Action.actionType``.
|
||||
|
||||
این migration فقط وضعیت مدل را بهروز میکند: Django ``choices`` را در
|
||||
``deconstruct()`` فیلد نگه میدارد، پس بدون این migration دستور
|
||||
``makemigrations --check`` شکست میخورد. تعریف ستون در SQLite هیچ تغییری
|
||||
نمیکند (``choices`` در DDL بازتاب نمییابد) و هیچ دادهای بازنویسی نمیشود.
|
||||
"""
|
||||
|
||||
dependencies = [
|
||||
('admin_panel', '0072_customernamefixjob'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='action',
|
||||
name='actionType',
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
choices=[
|
||||
('bazdid', 'بازدید'),
|
||||
('nasb', 'نصب'),
|
||||
('vosol', 'وصول مطالبات'),
|
||||
('hamahangi', 'هماهنگی'),
|
||||
('inCall', 'تماس ورودی'),
|
||||
('outCall', 'تماس خروجی'),
|
||||
],
|
||||
max_length=50,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,37 @@
|
||||
# Generated by Django 3.2.25 on 2026-10-16 10:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
"""افزودن ``choices`` به ``Action.status``.
|
||||
|
||||
این migration فقط وضعیت مدل را بهروز میکند: Django ``choices`` را در
|
||||
``deconstruct()`` فیلد نگه میدارد، پس بدون این migration دستور
|
||||
``makemigrations --check`` شکست میخورد. تعریف ستون در SQLite هیچ تغییری
|
||||
نمیکند (``choices`` در DDL بازتاب نمییابد) و هیچ دادهای بازنویسی نمیشود.
|
||||
|
||||
املای مقادیر عیناً همان چیزی است که در دیتابیس و کد موجود بهکار رفته:
|
||||
``'waite'`` (نه ``'wait'``)، ``'finish'`` و ``'cancell'``.
|
||||
"""
|
||||
|
||||
dependencies = [
|
||||
('admin_panel', '0073_alter_action_actiontype_choices'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='action',
|
||||
name='status',
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
choices=[
|
||||
('waite', 'در انتظار (باز)'),
|
||||
('finish', 'انجام شده'),
|
||||
('cancell', 'لغو شده'),
|
||||
],
|
||||
max_length=50,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,49 @@
|
||||
"""یادآوری تأمین موجودی چک: تغییر جهت از «پس از سررسید» به «پیش از سررسید».
|
||||
|
||||
هدف این migration **فقط** همراستاکردن مقدار عددی ``offset_days`` قالب
|
||||
``cheque_registration`` با معنای جدید است (تعداد روز **قبل** از سررسید).
|
||||
|
||||
آنچه این migration عمداً **نمیکند**:
|
||||
|
||||
* ``text`` (متن پیامک) را تغییر نمیدهد — متنی که مدیر در پنل تنظیم کرده دستنخورده
|
||||
میماند. اگر متن فعلی از زمان گذشته حرف میزند («سررسید شده است»)، مدیر میتواند
|
||||
خودش از صفحهٔ «قالبهای پیامک» ویرایشش کند.
|
||||
* ``title``، ``is_enabled`` و ``auto_send`` را تغییر نمیدهد.
|
||||
* هیچ نوع/قالب دیگری را لمس نمیکند.
|
||||
|
||||
مقدار ``offset_days`` روی پیشفرض معنای جدید (۱ روز قبل از سررسید) تنظیم میشود تا
|
||||
نصبهای تازه و نصبهای موجود یکسان رفتار کنند؛ اما اگر مدیر قبلاً عددی غیر از مقدار
|
||||
قدیمی (``1``) گذاشته باشد، به آن دست نمیزنیم تا انتخابش از بین نرود.
|
||||
|
||||
idempotent است؛ اجرای دوباره بیخطر است.
|
||||
"""
|
||||
from django.db import migrations
|
||||
|
||||
SMS_TYPE = "cheque_registration"
|
||||
# مقدار پیشفرضِ منطق قدیم («۱ روز پس از سررسید») که با معنای جدید همعددی است؛
|
||||
# فقط رکوردهایی که هنوز روی همین مقدار هستند همراستا میشوند.
|
||||
OLD_DEFAULT = 1
|
||||
NEW_DEFAULT = 1
|
||||
|
||||
|
||||
def align_cheque_offset(apps, schema_editor):
|
||||
"""``offset_days`` قالب چک را روی پیشفرض جدید بگذارد (بدون لمس متن)."""
|
||||
SMSTemplate = apps.get_model("admin_panel", "SMSTemplate")
|
||||
SMSTemplate.objects.filter(
|
||||
sms_type=SMS_TYPE, offset_days=OLD_DEFAULT,
|
||||
).update(offset_days=NEW_DEFAULT)
|
||||
|
||||
|
||||
def noop(apps, schema_editor):
|
||||
pass
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("admin_panel", "0074_alter_action_status_choices"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(align_cheque_offset, noop),
|
||||
]
|
||||
@@ -0,0 +1,36 @@
|
||||
"""افزودن متغیر ``{sayyad_id}`` به راهنمای ``help_text`` متن قالب پیامک.
|
||||
|
||||
هدف: راهنمای متغیرها در پنل، «شناسهٔ صیاد چک» را هم نشان دهد.
|
||||
|
||||
آنچه این migration عمداً **نمیکند**:
|
||||
|
||||
* ``text`` (متن واقعی قالبها) را تغییر نمیدهد — فقط ``help_text`` فیلد عوض شده
|
||||
است که در ``deconstruct()`` میآید و state مدل را جلو میبرد.
|
||||
* هیچ رکورد ``SMSTemplate`` را لمس نمیکند.
|
||||
|
||||
idempotent است؛ اجرای دوباره بیخطر است.
|
||||
"""
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("admin_panel", "0075_cheque_funding_before_due"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="smstemplate",
|
||||
name="text",
|
||||
field=models.TextField(
|
||||
help_text=(
|
||||
"متغیرهای قابل استفاده: {name} نام مشتری، {amount} مبلغ، "
|
||||
"{amount_sep} مبلغ با جداکننده، {date} تاریخ جلالی، "
|
||||
"{days} تعداد روز، {check_row} شماره ردیف چک، "
|
||||
"{sayyad_id} شناسه صیاد چک، {owner_name} نام مالک چک."
|
||||
),
|
||||
verbose_name="متن پیامک",
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,39 @@
|
||||
"""افزودن متغیرهای ``{balance}`` / ``{balance_sep}`` به راهنمای متن قالب پیامک.
|
||||
|
||||
هدف: راهنمای متغیرها در پنل، «مانده حساب مشتری» را هم نشان دهد و تفاوتش را با
|
||||
مبلغ سررسیدشده روشن کند.
|
||||
|
||||
آنچه این migration عمداً **نمیکند**:
|
||||
|
||||
* ``text`` (متن واقعی قالبها) را تغییر نمیدهد — فقط ``help_text`` فیلد عوض شده
|
||||
است که در ``deconstruct()`` میآید و state مدل را جلو میبرد.
|
||||
* هیچ رکورد ``SMSTemplate`` را لمس نمیکند.
|
||||
|
||||
idempotent است؛ اجرای دوباره بیخطر است.
|
||||
"""
|
||||
from django.db import migrations, models
|
||||
|
||||
HELP_TEXT = (
|
||||
"متغیرهای قابل استفاده: {name} نام مشتری، {amount} مبلغ، "
|
||||
"{amount_sep} مبلغ با جداکننده، {date} تاریخ جلالی، {days} تعداد روز، "
|
||||
"{check_row} شماره ردیف چک، {sayyad_id} شناسه صیاد چک، "
|
||||
"{owner_name} نام مالک چک، {balance} مانده حساب مشتری، "
|
||||
"{balance_sep} مانده حساب با جداکننده. "
|
||||
"(توجه: {balance} مانده کل حساب است و با مبلغ سررسیدشدهٔ چک/نسیه "
|
||||
"که در {amount} میآید تفاوت دارد.)"
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("admin_panel", "0076_alter_smstemplate_text_help"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="smstemplate",
|
||||
name="text",
|
||||
field=models.TextField(help_text=HELP_TEXT, verbose_name="متن پیامک"),
|
||||
),
|
||||
]
|
||||
Reference in new issue
Block a user