# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-11-09 08:11
from __future__ import unicode_literals

from decimal import Decimal
from django.core.management import call_command
import django.core.serializers.json
from django.db import migrations, models
import django.db.models.deletion
import django_boxberry.fields


def load_data(apps, schema_editor):
    call_command('loaddata', 'status', app_label='django_boxberry')


def remove_data(apps, schema_editor):
    pass


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='DeliveryAct',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('act_id', models.CharField(blank=True, max_length=20, null=True, verbose_name='Номер акта')),
                ('label', models.URLField(blank=True, null=True, verbose_name='Ссылка')),
                ('sticker', models.URLField(blank=True, null=True, verbose_name='Ссылка на этикетки')),
            ],
            options={
                'verbose_name': 'Акт передачи',
                'verbose_name_plural': 'Акты передачи',
            },
        ),
        migrations.CreateModel(
            name='Parsel',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('label', models.URLField(blank=True, null=True, verbose_name='Ссылка на скачивание PDF файла с этикетками')),
                ('comment', models.TextField(blank=True, null=True, verbose_name='Комментарий боксберри')),
                ('track', models.CharField(blank=True, help_text='Если параметр будет не пустым, считается что вы хотите обновить ранее созданную посылку', max_length=10, null=True, verbose_name='Трекинг код')),
                ('order_id', models.CharField(blank=True, max_length=100, null=True, verbose_name='Внутренний ID заказа')),
                ('pallet_number', models.CharField(blank=True, max_length=100, null=True, verbose_name='Номер палеты')),
                ('price', models.DecimalField(decimal_places=2, max_digits=9, verbose_name='Общая (объявленная) стоимость')),
                ('payment_sum', models.DecimalField(decimal_places=2, default=Decimal('0'), help_text='Сумма, которую необходимо взять с получателя), руб', max_digits=9, verbose_name='Сумма к оплате')),
                ('delivery_sum', models.DecimalField(decimal_places=2, max_digits=9, verbose_name='Стоимость доставки')),
                ('delivery_type', models.PositiveSmallIntegerField(choices=[(1, 'Самовывоз (доставка до ПВЗ)'), (2, 'Курьерская доставка')], verbose_name='Тип доставки')),
                ('pick_up_point', models.CharField(blank=True, help_text='Заполняется для самовывоза, для КД – оставить пустым', max_length=30, null=True, verbose_name='Код ПВЗ, в котором будет получен заказ')),
                ('point_of_issue', models.CharField(help_text='Код ПВЗ, в который ИМ сдаёт посылки для доставки. Заполняется всегда, не зависимо от вида доставки. Для ИМ, сдающих отправления на ЦСУ Москва заполняется значением 010', max_length=30, verbose_name='Код пункта поступления ЗП')),
                ('customer_fio', models.CharField(blank=True, help_text='Возможные варианты заполнения: «Фамилия Имя Отчество» или «Фамилия Имя» (разделитель – пробел). Внимание, для полностью предоплаченных заказов необходимо указывать Фамилию, Имя и Отчество получателя, т. к. при выдаче на ПВЗ проверяются паспортные данные.', max_length=200, null=True, verbose_name='ФИО получателя ЗП')),
                ('phone', models.CharField(blank=True, help_text='В формате 9ХХХХХХХХХ (10 цифр, начиная с девятки)', max_length=20, null=True, verbose_name='Номер мобильного телефона')),
                ('phone2', models.CharField(blank=True, help_text='В формате 9ХХХХХХХХХ (10 цифр, начиная с девятки)', max_length=20, null=True, verbose_name='Доп. номер телефона')),
                ('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='E-mail для оповещений')),
                ('ul_name', models.CharField(blank=True, max_length=250, null=True, verbose_name='Наименование')),
                ('ul_address', models.TextField(blank=True, null=True, verbose_name='Адрес')),
                ('ul_inn', models.CharField(blank=True, max_length=50, null=True, verbose_name='ИНН')),
                ('ul_kpp', models.CharField(blank=True, max_length=50, null=True, verbose_name='КПП')),
                ('ul_bik', models.CharField(blank=True, max_length=50, null=True, verbose_name='БИК')),
                ('ul_r_s', models.CharField(blank=True, max_length=50, null=True, verbose_name='Расчетный счет')),
                ('ul_kor_s', models.CharField(blank=True, max_length=50, null=True, verbose_name='Кор. счет')),
                ('ul_bank_name', models.CharField(blank=True, max_length=150, null=True, verbose_name='Наименование банка')),
                ('cur_index', models.CharField(blank=True, max_length=100, null=True, verbose_name='Индекс')),
                ('cur_city', models.CharField(blank=True, max_length=100, null=True, verbose_name='Город')),
                ('cur_address', models.TextField(blank=True, null=True, verbose_name='Адрес получателя')),
                ('cur_times_from_1', models.TimeField(blank=True, null=True, verbose_name='Время доставки, от')),
                ('cur_times_to_1', models.TimeField(blank=True, null=True, verbose_name='Время доставки, до')),
                ('cur_times_from_2', models.TimeField(blank=True, null=True, verbose_name='Альтернативное время доставки, от')),
                ('cur_times_to_2', models.TimeField(blank=True, null=True, verbose_name='Альтернативное время доставки, до')),
                ('cur_time_text', models.CharField(blank=True, max_length=200, null=True, verbose_name='Время доставки текстовый формат')),
                ('cur_comment', models.TextField(blank=True, null=True, verbose_name='Комментарий')),
                ('items', django_boxberry.fields.JSONFieldCustom(encoder=django.core.serializers.json.DjangoJSONEncoder, help_text='[{"id": "Артикул товара в БД", "name": "Наименование товара", "UnitName": "Единица измерения", "nds": "Процент НДС", "price": "Цена товара", "quantity": "Количество"}, ...]', verbose_name='Блок с информацией по товарным позициям')),
                ('weights', django_boxberry.fields.JSONFieldCustom(encoder=django.core.serializers.json.DjangoJSONEncoder, help_text='{ "weight": 5, "weight2": 5, ... "weight5": 5 , "barcode": "1", ... "barcode5": "1"} weight должно быть заполнено обязательно!, баркоды - опционально, но если у заполненных мест указан хотя бы один баркод, то и остальные необходимо указать', verbose_name='Веса и баркоды с 1 по 5 место (от 5 до 30000 г. на место)')),
            ],
            options={
                'verbose_name': 'Посылка',
                'verbose_name_plural': 'Посылки',
            },
        ),
        migrations.CreateModel(
            name='Status',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=50, verbose_name='Наименование')),
            ],
            options={
                'verbose_name': 'Статус',
                'verbose_name_plural': 'Статусы',
                'ordering': ('id',),
            },
        ),
        migrations.CreateModel(
            name='StatusHistory',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created', models.DateTimeField(verbose_name='Дата')),
                ('comment', models.TextField(default='', verbose_name='Комментарий')),
                ('parsel', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='django_boxberry.Parsel', verbose_name='Посылка')),
                ('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='django_boxberry.Status', verbose_name='Статус')),
            ],
            options={
                'ordering': ('-created', '-id'),
            },
        ),
        migrations.AddField(
            model_name='parsel',
            name='current_status',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='current_parsel', to='django_boxberry.StatusHistory', verbose_name='Текущий статус'),
        ),
        migrations.AddField(
            model_name='parsel',
            name='delivery_act',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='parsels', to='django_boxberry.DeliveryAct', verbose_name='Акт передачи'),
        ),
        migrations.AddField(
            model_name='parsel',
            name='status_history',
            field=models.ManyToManyField(related_name='parsels', through='django_boxberry.StatusHistory', to='django_boxberry.Status'),
        ),
        migrations.RunPython(load_data, remove_data),
    ]
