# 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'], }, ), ]