# Generated by Django 4.2.2 on 2024-03-28 22:05 import datetime from django.conf import settings import django.core.validators from django.db import migrations, models import django.db.models.deletion import mptt.fields import store.models class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=20, verbose_name='Название')), ('delivery_price_CN_RU', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Цена доставки Китай-РФ')), ('commission', models.DecimalField(decimal_places=2, default=0, max_digits=10, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100)], verbose_name='Дополнительная комиссия, %')), ('lft', models.PositiveIntegerField(editable=False)), ('rght', models.PositiveIntegerField(editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(editable=False)), ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='children', to='store.category', verbose_name='Родительская категория')), ], options={ 'verbose_name': 'Категория', 'verbose_name_plural': 'Категории', }, ), migrations.CreateModel( name='Gift', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='Название')), ('image', models.ImageField(blank=True, null=True, upload_to='gifts/', verbose_name='Фото')), ('min_price', models.DecimalField(decimal_places=2, default=0, help_text='от какой суммы доступен подарок', max_digits=10, verbose_name='Минимальная цена в юанях')), ('available_count', models.PositiveSmallIntegerField(default=0, verbose_name='Доступное количество')), ], options={ 'verbose_name': 'Подарок', 'verbose_name_plural': 'Подарки', }, ), migrations.CreateModel( name='GlobalSettings', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('yuan_rate', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Курс CNY/RUB')), ('yuan_rate_last_updated', models.DateTimeField(default=None, null=True, verbose_name='Дата обновления курса CNY/RUB')), ('yuan_rate_commission', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Наценка на курс юаня, руб')), ('delivery_price_CN', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Цена доставки по Китаю')), ('commission_rub', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Комиссия, руб')), ('pickup_address', models.CharField(blank=True, max_length=200, null=True, verbose_name='Адрес пункта самовывоза')), ('time_to_buy', models.DurationField(default=datetime.timedelta(seconds=10800), help_text="Через N времени заказ переходит из статуса 'Новый' в 'Черновик'", verbose_name='Время на покупку')), ], options={ 'verbose_name': 'Глобальные настройки', 'verbose_name_plural': 'Глобальные настройки', }, ), migrations.CreateModel( name='Image', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('image', models.ImageField(upload_to=store.models.image_upload_path, verbose_name='Файл изображения')), ('type', models.PositiveSmallIntegerField(choices=[(0, 'Изображение'), (1, 'Превью'), (2, 'Документ'), (3, 'Подарок')], default=0, verbose_name='Тип')), ], options={ 'verbose_name': 'Изображение', 'verbose_name_plural': 'Изображения', }, ), migrations.CreateModel( name='PaymentMethod', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=30, verbose_name='Название')), ('slug', models.SlugField(unique=True, verbose_name='Идентификатор')), ('cardnumber', models.CharField(blank=True, max_length=30, null=True, verbose_name='Номер карты')), ('requisites', models.CharField(blank=True, max_length=200, null=True, verbose_name='Реквизиты')), ], options={ 'verbose_name': 'Метод оплаты', 'verbose_name_plural': 'Методы оплаты', }, ), migrations.CreateModel( name='PriceSnapshot', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('yuan_rate', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Курс CNY/RUB')), ('delivery_price_CN', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Цена доставки по Китаю')), ('delivery_price_CN_RU', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Цена доставки Китай-РФ')), ('commission_rub', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Комиссия, руб')), ], ), migrations.CreateModel( name='Promocode', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, unique=True, verbose_name='Название')), ('discount', models.PositiveIntegerField(verbose_name='Скидка в рублях')), ('free_delivery', models.BooleanField(default=False, verbose_name='Бесплатная доставка')), ('no_comission', models.BooleanField(default=False, verbose_name='Без комиссии')), ('is_active', models.BooleanField(default=True, verbose_name='Активен')), ], options={ 'verbose_name': 'Промокод', 'verbose_name_plural': 'Промокоды', }, ), migrations.CreateModel( name='Checklist', fields=[ ('created_at', models.DateTimeField(auto_now_add=True)), ('status_updated_at', models.DateTimeField(auto_now_add=True, verbose_name='Дата обновления статуса заказа')), ('id', models.CharField(default=store.models.generate_checklist_id, editable=False, max_length=10, primary_key=True, serialize=False)), ('status', models.CharField(choices=[('draft', 'Черновик'), ('neworder', 'Новый заказ'), ('payment', 'Проверка оплаты'), ('buying', 'На закупке'), ('bought', 'Закуплен'), ('china', 'На складе в Китае'), ('chinarush', 'Доставка на склад РФ'), ('rush', 'На складе в РФ'), ('split_waiting', 'Сплит: ожидание оплаты 2й части'), ('split_paid', 'Сплит: полностью оплачено'), ('cdek', 'Доставляется СДЭК'), ('completed', 'Завершен')], default='neworder', max_length=15, verbose_name='Статус заказа')), ('product_link', models.URLField(blank=True, null=True, verbose_name='Ссылка на товар')), ('brand', models.CharField(blank=True, max_length=100, null=True, verbose_name='Бренд')), ('model', models.CharField(blank=True, max_length=100, null=True, verbose_name='Модель')), ('size', models.CharField(blank=True, max_length=30, null=True, verbose_name='Размер')), ('price_yuan', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Цена в юанях')), ('real_price', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='Реальная цена')), ('comment', models.CharField(blank=True, max_length=200, null=True, verbose_name='Комментарий')), ('buyer_name', models.CharField(blank=True, max_length=100, null=True, verbose_name='Имя покупателя')), ('buyer_phone', models.CharField(blank=True, max_length=100, null=True, verbose_name='Телефон покупателя')), ('buyer_telegram', models.CharField(blank=True, max_length=100, null=True, verbose_name='Telegram покупателя')), ('receiver_name', models.CharField(blank=True, max_length=100, null=True, verbose_name='Имя получателя')), ('receiver_phone', models.CharField(blank=True, max_length=100, null=True, verbose_name='Телефон получателя')), ('is_split_payment', models.BooleanField(default=False, verbose_name='Оплата частями')), ('payment_proof', models.ImageField(blank=True, null=True, upload_to='docs/', verbose_name='Подтверждение оплаты')), ('split_payment_proof', models.ImageField(blank=True, null=True, upload_to='docs/', verbose_name='Подтверждение оплаты сплита')), ('split_accepted', models.BooleanField(default=False, verbose_name='Сплит принят')), ('receipt', models.ImageField(blank=True, null=True, upload_to='docs/', verbose_name='Фото чека')), ('delivery', models.CharField(blank=True, choices=[('pickup', 'Самовывоз из шоурума'), ('cdek', 'Пункт выдачи заказов CDEK'), ('cdek_courier', 'Курьерская доставка CDEK')], max_length=15, null=True, verbose_name='Тип доставки')), ('poizon_tracking', models.CharField(blank=True, max_length=100, null=True, verbose_name='Трек-номер Poizon')), ('cdek_tracking', models.CharField(blank=True, max_length=100, null=True, verbose_name='Трек-номер СДЭК')), ('cdek_barcode_pdf', models.FileField(blank=True, null=True, upload_to='docs', verbose_name='Штрих-код СДЭК в PDF')), ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='store.category', verbose_name='Категория')), ('gift', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='store.gift', verbose_name='Подарок')), ('images', models.ManyToManyField(blank=True, related_name='+', to='store.image', verbose_name='Изображения')), ('manager', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Менеджер')), ('payment_method', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='store.paymentmethod', verbose_name='Метод оплаты')), ('price_snapshot', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='checklist', to='store.pricesnapshot', verbose_name='Сохраненные цены')), ('promocode', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='store.promocode', verbose_name='Промокод')), ], options={ 'verbose_name': 'Заказ', 'verbose_name_plural': 'Заказы', }, ), ]