# Generated by Django 2.1.1 on 2018-10-09 15:16

import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
import phonenumber_field.modelfields
import pplan.datautils


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Booking',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('start_date', models.DateField(default=pplan.datautils.today, verbose_name='Начало загрузки')),
                ('finish_date', models.DateField(default=pplan.datautils.tomorrow, verbose_name='Окончание загрузки')),
                ('load', models.FloatField(default=0, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100)], verbose_name='Процент загрузки')),
                ('state', models.CharField(choices=[('PL', 'Планируемое участие')], default='PL', max_length=2, verbose_name='Статус данных о загрузке')),
            ],
            options={
                'verbose_name': 'данные загрузки',
                'verbose_name_plural': 'данные загрузки',
                'ordering': ('project_member', 'start_date'),
            },
        ),
        migrations.CreateModel(
            name='Business',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=20, unique=True, verbose_name='Название')),
                ('lead', models.CharField(max_length=200, verbose_name='Руководитель')),
            ],
            options={
                'verbose_name': 'бизнес',
                'verbose_name_plural': 'бизнесы',
            },
        ),
        migrations.CreateModel(
            name='Division',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=40, unique=True, verbose_name='Подразделение')),
                ('full_name', models.TextField(verbose_name='Полное название')),
            ],
            options={
                'verbose_name': 'подразделение',
                'verbose_name_plural': 'подразделения',
                'ordering': ('name',),
            },
        ),
        migrations.CreateModel(
            name='Employee',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('last_name', models.CharField(db_index=True, max_length=200, verbose_name='Фамилия')),
                ('first_name', models.CharField(max_length=200, verbose_name='Имя')),
                ('sur_name', models.CharField(blank=True, max_length=200, verbose_name='Отчество')),
                ('hire_date', models.DateField(verbose_name='Дата приема на работу')),
                ('fire_date', models.DateField(blank=True, default=None, null=True, verbose_name='Дата увольнения')),
                ('is_3d', models.BooleanField(default=False, verbose_name='Участник системы 3D ?')),
                ('business_k', models.FloatField(default=0.5, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(1)], verbose_name='Коэффициент участия в бизнесе')),
                ('birthday', models.DateField(blank=True, default=None, null=True, verbose_name='День рождения')),
                ('local_phone', models.CharField(blank=True, max_length=10, verbose_name='Внутренний номер')),
                ('work_phone', phonenumber_field.modelfields.PhoneNumberField(blank=True, max_length=128, verbose_name='Телефон корпоративный')),
                ('mobile_phone', phonenumber_field.modelfields.PhoneNumberField(blank=True, max_length=128, verbose_name='Телефон мобильный')),
                ('division', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='pplan.Division', verbose_name='Подразделение')),
            ],
            options={
                'verbose_name': 'сотрудник',
                'verbose_name_plural': 'сотрудники',
                'ordering': ('last_name', 'first_name'),
            },
        ),
        migrations.CreateModel(
            name='MonthBooking',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('month', models.DateField(db_index=True, verbose_name='Месяц')),
                ('days', models.IntegerField(verbose_name='Участие, дней')),
                ('load', models.FloatField(default=0, verbose_name='Загрузка, %')),
                ('volume', models.FloatField(default=0, verbose_name='Объем, чел.дн.')),
                ('booking', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pplan.Booking', verbose_name='Запись по загрузке')),
            ],
            options={
                'verbose_name': 'месячная загрузка',
                'verbose_name_plural': 'статистика месячной загрузки',
            },
        ),
        migrations.CreateModel(
            name='Passport',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('doctype', models.CharField(choices=[('RF', 'Российский паспорт'), ('IN', 'Заграничный паспорт')], default='RF', max_length=2, verbose_name='Тип документа')),
                ('series', models.CharField(max_length=20, verbose_name='Серия')),
                ('number', models.CharField(max_length=20, verbose_name='Номер')),
                ('issue_date', models.DateField(verbose_name='Дата выдачи')),
                ('issuer', models.CharField(max_length=200, verbose_name='Кем выдан')),
                ('registered', models.TextField(blank=True, null=True, verbose_name='Зарегистрирован')),
                ('is_valid', models.BooleanField(default=True, verbose_name='Действителен')),
                ('employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pplan.Employee', verbose_name='Сотрудник')),
            ],
            options={
                'verbose_name': 'паспорт',
                'verbose_name_plural': 'паспортные данные',
                'ordering': ('-is_valid', 'issue_date'),
            },
        ),
        migrations.CreateModel(
            name='Position',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=200, unique=True, verbose_name='Наименование должности')),
            ],
            options={
                'verbose_name': 'должность',
                'verbose_name_plural': 'должности',
                'ordering': ('name',),
            },
        ),
        migrations.CreateModel(
            name='Project',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('short_name', models.CharField(db_index=True, max_length=40, verbose_name='Сокращенное название')),
                ('full_name', models.TextField(verbose_name='Полное название')),
                ('start_date', models.DateField(verbose_name='Дата начала')),
                ('finish_date', models.DateField(blank=True, default=None, verbose_name='Дата окончания')),
                ('state', models.CharField(choices=[('IN', 'Проект планируется'), ('OP', 'Проект открыт'), ('CL', 'Проект в стадии закрытия'), ('CD', 'Проект закрыт')], default='IN', max_length=2, verbose_name='Статус проекта')),
                ('budget_state', models.CharField(choices=[('NO', 'Бюджет отсутствует'), ('PR', 'Бюджет согласуется'), ('AP', 'Бюджет утвержден')], default='NO', max_length=2, verbose_name='Состояние бюджета')),
                ('business', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pplan.Business', verbose_name='Бизнес')),
            ],
            options={
                'verbose_name': 'проект',
                'verbose_name_plural': 'проекты',
                'ordering': ('start_date', 'short_name'),
                'get_latest_by': 'start_date',
            },
        ),
        migrations.CreateModel(
            name='ProjectMember',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pplan.Employee', verbose_name='Сотрудник')),
                ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pplan.Project', verbose_name='Проект')),
            ],
            options={
                'verbose_name': 'участник проекта',
                'verbose_name_plural': 'участники проектов',
                'ordering': ('project', '-role__is_lead', 'employee'),
            },
        ),
        migrations.CreateModel(
            name='Role',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('role', models.CharField(max_length=40, unique=True, verbose_name='Роль')),
                ('descr', models.TextField(blank=True, verbose_name='Описание роли')),
                ('is_lead', models.BooleanField(default=False, verbose_name='Руководитель проекта?')),
            ],
            options={
                'verbose_name': 'проектная роль',
                'verbose_name_plural': 'проектные роли',
            },
        ),
        migrations.CreateModel(
            name='Salary',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('amount', models.IntegerField(validators=[django.core.validators.MinValueValidator(1)], verbose_name='Оклад')),
                ('start_date', models.DateField(verbose_name='Дата изменения')),
                ('employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pplan.Employee', verbose_name='Сотрудник')),
            ],
            options={
                'verbose_name': 'оклад',
                'verbose_name_plural': 'оклады',
                'ordering': ('-start_date', 'employee'),
                'get_latest_by': 'start_date',
            },
        ),
        migrations.CreateModel(
            name='StaffingTable',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('count', models.IntegerField(default=1, validators=[django.core.validators.MinValueValidator(0)], verbose_name='Число позиций')),
                ('division', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pplan.Division', verbose_name='Подразделение')),
                ('position', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='pplan.Position', verbose_name='Должность')),
            ],
            options={
                'verbose_name': 'позиция штатного расписанию',
                'verbose_name_plural': 'позиции штатного расписания',
                'ordering': ('division', 'position'),
            },
        ),
        migrations.AddField(
            model_name='projectmember',
            name='role',
            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='pplan.Role', verbose_name='Роль в проекте'),
        ),
        migrations.AddField(
            model_name='employee',
            name='position',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pplan.Position', verbose_name='Занимаемая должность'),
        ),
        migrations.AddField(
            model_name='division',
            name='head',
            field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subordinate', to='pplan.Employee', verbose_name='Руководитель'),
        ),
        migrations.AddField(
            model_name='booking',
            name='project_member',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pplan.ProjectMember', verbose_name='Участник проекта'),
        ),
        migrations.CreateModel(
            name='ProjectBooking',
            fields=[
            ],
            options={
                'verbose_name': 'загрузка по проектам',
                'verbose_name_plural': 'статистика загрузки по проектам',
                'proxy': True,
                'indexes': [],
            },
            bases=('pplan.monthbooking',),
        ),
        migrations.AlterUniqueTogether(
            name='staffingtable',
            unique_together={('position', 'division')},
        ),
        migrations.AlterUniqueTogether(
            name='salary',
            unique_together={('employee', 'start_date')},
        ),
        migrations.AlterUniqueTogether(
            name='projectmember',
            unique_together={('project', 'employee')},
        ),
        migrations.AlterUniqueTogether(
            name='project',
            unique_together={('business', 'short_name')},
        ),
    ]
