adding
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
# Generated by Django 5.1.15 on 2026-08-23 11:25
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Appointment',
|
||||
fields=[
|
||||
('id', models.CharField(max_length=36, primary_key=True, serialize=False)),
|
||||
('customer_name', models.CharField(max_length=150, verbose_name='نام مشتری')),
|
||||
('customer_phone', models.CharField(blank=True, max_length=20, verbose_name='شماره مشتری')),
|
||||
('title', models.CharField(max_length=150, verbose_name='عنوان/خدمت')),
|
||||
('start_at', models.DateTimeField(verbose_name='زمان نوبت')),
|
||||
('status', models.CharField(choices=[('scheduled', 'زمان\u200cبندی\u200cشده'), ('done', 'انجام\u200cشده'), ('cancelled', 'لغوشده')], default='scheduled', max_length=10)),
|
||||
('notes', models.TextField(blank=True, verbose_name='یادداشت')),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='appointments', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'نوبت',
|
||||
'verbose_name_plural': 'نوبت\u200cدهی',
|
||||
'ordering': ['start_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Customer',
|
||||
fields=[
|
||||
('id', models.CharField(max_length=36, primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=150, verbose_name='نام')),
|
||||
('phone', models.CharField(blank=True, max_length=20, verbose_name='شماره تماس')),
|
||||
('email', models.CharField(blank=True, max_length=150, verbose_name='ایمیل')),
|
||||
('address', models.CharField(blank=True, max_length=255, verbose_name='آدرس')),
|
||||
('notes', models.TextField(blank=True, verbose_name='یادداشت')),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='customers', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'مشتری',
|
||||
'verbose_name_plural': 'مشتریان',
|
||||
'ordering': ['name'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='LedgerEntry',
|
||||
fields=[
|
||||
('id', models.CharField(max_length=36, primary_key=True, serialize=False)),
|
||||
('entry_type', models.CharField(choices=[('income', 'درآمد'), ('expense', 'هزینه')], max_length=10, verbose_name='نوع')),
|
||||
('title', models.CharField(max_length=150, verbose_name='عنوان')),
|
||||
('amount', models.FloatField(verbose_name='مبلغ')),
|
||||
('category', models.CharField(blank=True, max_length=100, verbose_name='دسته')),
|
||||
('entry_date', models.DateField(verbose_name='تاریخ')),
|
||||
('note', models.TextField(blank=True, verbose_name='یادداشت')),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ledger_entries', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'ردیف دفتر درآمد/هزینه',
|
||||
'verbose_name_plural': 'دفتر درآمد و هزینه',
|
||||
'ordering': ['-entry_date'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Product',
|
||||
fields=[
|
||||
('id', models.CharField(max_length=36, primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=150, verbose_name='نام کالا')),
|
||||
('sku', models.CharField(blank=True, max_length=100, verbose_name='کد کالا')),
|
||||
('quantity', models.FloatField(default=0, verbose_name='موجودی')),
|
||||
('unit_price', models.FloatField(default=0, verbose_name='قیمت واحد')),
|
||||
('low_stock_threshold', models.FloatField(default=0, verbose_name='آستانه\u200cی هشدار موجودی کم')),
|
||||
('notes', models.TextField(blank=True, verbose_name='یادداشت')),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='products', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'کالا',
|
||||
'verbose_name_plural': 'انبار',
|
||||
'ordering': ['name'],
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,38 @@
|
||||
# Generated by Django 5.1.15 on 2026-08-23 12:32
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('bizapps', '0001_initial'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='BrokerageTransaction',
|
||||
fields=[
|
||||
('id', models.CharField(max_length=36, primary_key=True, serialize=False)),
|
||||
('client_name', models.CharField(max_length=150, verbose_name='نام مشتری')),
|
||||
('client_phone', models.CharField(blank=True, max_length=20, verbose_name='شماره مشتری')),
|
||||
('symbol', models.CharField(max_length=50, verbose_name='نماد')),
|
||||
('side', models.CharField(choices=[('buy', 'خرید'), ('sell', 'فروش')], max_length=4, verbose_name='نوع معامله')),
|
||||
('quantity', models.FloatField(verbose_name='تعداد')),
|
||||
('price', models.FloatField(verbose_name='قیمت واحد')),
|
||||
('commission_percent', models.FloatField(default=0, verbose_name='درصد کارمزد')),
|
||||
('transaction_date', models.DateField(verbose_name='تاریخ')),
|
||||
('notes', models.TextField(blank=True, verbose_name='یادداشت')),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='brokerage_transactions', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'معامله\u200cی بورسی',
|
||||
'verbose_name_plural': 'کارگزاری',
|
||||
'ordering': ['-transaction_date'],
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,16 @@
|
||||
# Generated by Django 5.1.15 on 2026-08-23 14:51
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('bizapps', '0002_brokeragetransaction'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.DeleteModel(
|
||||
name='BrokerageTransaction',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,35 @@
|
||||
# Generated by Django 5.1.15 on 2026-08-23 20:24
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('bizapps', '0003_delete_brokeragetransaction'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='product',
|
||||
name='category',
|
||||
field=models.CharField(blank=True, max_length=100, verbose_name='دسته'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='StockMovement',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('delta', models.FloatField(verbose_name='تغییر')),
|
||||
('quantity_after', models.FloatField(verbose_name='موجودی بعد از تغییر')),
|
||||
('note', models.CharField(blank=True, max_length=255, verbose_name='یادداشت')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='movements', to='bizapps.product')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'تغییر موجودی',
|
||||
'verbose_name_plural': 'تاریخچه\u200cی موجودی',
|
||||
'ordering': ['-created_at'],
|
||||
},
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user