# Generated by Django 5.2.4 on 2026-07-20 07:46 from decimal import Decimal import django.core.validators import django.db.models.deletion from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ("finance", "0009_alter_payroll_input_sources"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="PayrollDailyWorkEntry", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("work_date", models.DateField(verbose_name="Дата выработки")), ( "target_points", models.DecimalField( decimal_places=4, max_digits=19, validators=[ django.core.validators.MinValueValidator(Decimal("0.0001")) ], verbose_name="Норма баллов за день", ), ), ( "actual_points", models.DecimalField( decimal_places=4, max_digits=19, validators=[ django.core.validators.MinValueValidator(Decimal("0")) ], verbose_name="Фактические баллы за день", ), ), ("note", models.TextField(blank=True, verbose_name="Комментарий")), ( "lock_version", models.PositiveIntegerField( default=0, verbose_name="Версия записи" ), ), ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Создана"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="Обновлена"), ), ( "employee", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="payroll_daily_work_entries", to=settings.AUTH_USER_MODEL, verbose_name="Сотрудник", ), ), ( "period", models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="daily_work_entries", to="finance.payrollperiod", verbose_name="Период", ), ), ], options={ "verbose_name": "Ежедневная выработка", "verbose_name_plural": "Ежедневная выработка", "ordering": ["-work_date", "-id"], "indexes": [ models.Index( fields=["period", "employee", "work_date"], name="pay_daily_period_employee_idx", ) ], "constraints": [ models.CheckConstraint( condition=models.Q(("target_points__gt", 0)), name="pay_daily_target_positive", ), models.CheckConstraint( condition=models.Q(("actual_points__gte", 0)), name="pay_daily_actual_nonnegative", ), models.UniqueConstraint( fields=("period", "employee", "work_date"), name="pay_daily_employee_date_unique", ), ], }, ), ]