# -*- coding: utf-8 -*-
# Generated by Django 1.10 on 2016-08-06 14:59
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion
import phonenumber_field.modelfields
import uuid


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='DeliveryAddress',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=300, verbose_name='Имя')),
                ('email', models.EmailField(max_length=254, verbose_name='Email')),
                ('phone', phonenumber_field.modelfields.PhoneNumberField(max_length=128, verbose_name='Телефон')),
                ('address', models.CharField(blank=True, max_length=500, verbose_name='Адрес')),
                ('city', models.CharField(blank=True, max_length=200, verbose_name='Город/Населенный пункт')),
                ('zip_code', models.CharField(blank=True, max_length=20, verbose_name='Индекс')),
                ('province', models.CharField(blank=True, max_length=200, verbose_name='Регион/Облась')),
                ('country', models.CharField(blank=True, max_length=200, verbose_name='Страна')),
            ],
        ),
        migrations.CreateModel(
            name='DeliveryType',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(help_text='Короткое название способа доставки', max_length=200, verbose_name='Название')),
                ('description', models.TextField(blank=True, help_text='Короткое (в одно-два предложения) описание способа доставки', verbose_name='Описание')),
                ('pricing_method', models.CharField(choices=[('free', 'Бесплатно'), ('constant', 'Заданная цена'), ('percent', 'Процент от стоимости'), ('api', 'Получение по API')], help_text='Способ вычисления цены доставки', max_length=30, verbose_name='Определение цены')),
                ('delivery_hook', models.CharField(blank=True, help_text='Используется при указании цены для API', max_length=30, verbose_name='Метод определения цены')),
                ('address_select', models.CharField(choices=[('full', 'Ввод полного адреса'), ('local', 'Ввод адреса в Петербурге'), ('metro', 'Ввод станции метро и контактов'), ('contacts', 'Ввод контактов')], default='full', help_text='Выбор вида отображаемой формы адреса', max_length=30, verbose_name='Форма ввода адреса')),
                ('price', models.DecimalField(blank=True, decimal_places=2, help_text='Цена доставки, указывается в случае, если для вычисления цены используются методы "Заданная цена" и "Процент от стоимости". Во втором случае нужно указать процент от суммы покупки, который будет стоить доставка', max_digits=9, null=True, verbose_name='Цена')),
                ('is_active', models.BooleanField(default=True, help_text='С помощью этой опции можно временно отключить способ доставки', verbose_name='Используется')),
            ],
            options={
                'verbose_name_plural': 'способы доставки',
                'verbose_name': 'способ доставки',
            },
        ),
        migrations.CreateModel(
            name='Order',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True, verbose_name='Уникальный ключ')),
                ('sid', models.CharField(editable=False, max_length=50, verbose_name='ID клиента')),
                ('created', models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')),
                ('changed', models.DateTimeField(auto_now=True, verbose_name='Дата изменения')),
                ('state', models.CharField(choices=[('Created', 'Создан'), ('Confirmed', 'Подтвержден'), ('Declined', 'Не подтвержден'), ('Shipped', 'Отправлен'), ('Delivered', 'Доставлен'), ('Rejected', 'Отказ в получении'), ('NCCreated', 'Создан (безнал)'), ('NCPaid', 'Оплачен (безнал)'), ('NCPayError', 'Ошибка оплаты (безнал)'), ('NCConfirmed', 'Подтвержден (безнал)'), ('NCDeclined', 'Не подтвержден (безнал)'), ('NCShipped', 'Отправлен (безнал)'), ('NCDelivered', 'Доставлен (безнал)'), ('NCRejected', 'Отказ в получении (безнал)')], default='Created', max_length=50, verbose_name='Статус')),
                ('delivery_price', models.DecimalField(decimal_places=2, max_digits=9, verbose_name='Стоимость доставки')),
                ('delivery_address', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, to='django_shop.DeliveryAddress', verbose_name='Адрес доставки')),
                ('delivery_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='django_shop.DeliveryType', verbose_name='Способ доставки')),
            ],
            options={
                'verbose_name_plural': 'заказы',
                'verbose_name': 'заказ',
            },
        ),
        migrations.CreateModel(
            name='PaymentType',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(help_text='Короткое название способа оплаты', max_length=200, verbose_name='Название')),
                ('description', models.TextField(blank=True, help_text='Короткое (в одно-два предложения) описание способа оплаты', verbose_name='Описание')),
                ('payment_type', models.IntegerField(choices=[(1, 'Оплата при получении'), (2, 'Оплата онлаин')], verbose_name='Тип оплаты')),
                ('payment_hook', models.CharField(blank=True, max_length=50, verbose_name='Конкретный тип онлайн оплаты')),
                ('is_active', models.BooleanField(default=True, help_text='С помощью этой опции можно временно отключить способ оплаты', verbose_name='Используется')),
            ],
            options={
                'verbose_name_plural': 'способы оплаты',
                'verbose_name': 'способ оплаты',
            },
        ),
        migrations.CreateModel(
            name='Product',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=200, verbose_name='Название')),
                ('slug', models.SlugField(unique=True)),
                ('price', models.DecimalField(decimal_places=2, max_digits=9, verbose_name='Цена')),
                ('is_unlimited', models.BooleanField(default=False, help_text='Если количество товара неограничено - для него не нужно заводить поставки', verbose_name='Количество неорганичено')),
                ('is_weight', models.BooleanField(default=False, help_text='Весовой товар - это товар, которого можно приобрести дробное количество', verbose_name='Весовой товар')),
                ('weight', models.IntegerField(help_text='Масса единицы товара в упаковке (брутто) в граммах, нужна для расчета стоимости доставки', verbose_name='Вес')),
                ('measure', models.CharField(blank=True, help_text='Обязательно заполнить, если товар весовой', max_length=10, verbose_name='Единица измерения')),
                ('short_description', models.TextField(help_text='Описание, состоящее из одного абзаца текста, помещается рядом с картинкой товара в каталоге.', verbose_name='Короткое описание')),
                ('description', models.TextField(help_text='Полное описание продукта, будет показано в его карточке.', verbose_name='Полное описание')),
                ('always_visible', models.BooleanField(default=False, help_text='Включите, если товар должен отображаться, даже если его нет в наличии', verbose_name='Виден всегда')),
            ],
            options={
                'verbose_name_plural': 'продукты',
                'verbose_name': 'продукт',
            },
        ),
        migrations.CreateModel(
            name='ProductCategory',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=200, verbose_name='Название')),
                ('slug', models.SlugField(unique=True)),
                ('description', models.TextField(verbose_name='Описание')),
                ('image', models.ImageField(upload_to='categories/%Y/', verbose_name='Изображение')),
            ],
            options={
                'verbose_name_plural': 'категории',
                'verbose_name': 'категория',
            },
        ),
        migrations.CreateModel(
            name='ProductEntry',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('quantity', models.DecimalField(decimal_places=2, max_digits=9, verbose_name='Количество')),
                ('price', models.DecimalField(decimal_places=2, max_digits=9, verbose_name='Стоимость')),
                ('date', models.DateTimeField(auto_now_add=True, verbose_name='Дата')),
                ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='entries', to='django_shop.Product')),
            ],
            options={
                'verbose_name_plural': 'поставки продукта',
                'ordering': ['date'],
                'verbose_name': 'поставка продукта',
            },
        ),
        migrations.CreateModel(
            name='ProductImage',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('image', models.ImageField(help_text='Изображение должно быть больше 600 пикселей по ширине', upload_to='products/%Y/', verbose_name='Изображение')),
                ('priority', models.PositiveSmallIntegerField(help_text='Чем меньше это число, тем раньше будет отображено изображение', verbose_name='Приоритет')),
                ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='django_shop.Product')),
            ],
            options={
                'verbose_name_plural': 'изображения продукта',
                'ordering': ['priority'],
                'verbose_name': 'изображение продукта',
            },
        ),
        migrations.CreateModel(
            name='ProductOrder',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('quantity', models.DecimalField(decimal_places=2, max_digits=9, verbose_name='Количество')),
                ('price', models.DecimalField(decimal_places=2, max_digits=9, verbose_name='Стоимость')),
                ('stock_reduced', models.BooleanField(default=False, editable=False)),
                ('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='products', to='django_shop.Order')),
                ('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='orders', to='django_shop.Product')),
            ],
            options={
                'verbose_name_plural': 'продукты',
                'verbose_name': 'продукт',
            },
        ),
        migrations.AddField(
            model_name='product',
            name='category',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='products', to='django_shop.ProductCategory', verbose_name='Категория'),
        ),
        migrations.AddField(
            model_name='order',
            name='payment_method',
            field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_shop.PaymentType', verbose_name='Способ оплаты'),
        ),
    ]
