Corp/backend/finance/migrations/0039_payrolloffcyclepayment.py

144 lines
5.3 KiB
Python

import uuid
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", "0038_payrollperiod_component_snapshot"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name="PayrollOffCyclePayment",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"payee_name",
models.CharField(max_length=250, verbose_name="Получатель"),
),
(
"paid_on",
models.DateField(db_index=True, verbose_name="Дата выдачи"),
),
(
"amount",
models.DecimalField(
max_digits=19,
decimal_places=2,
validators=[
django.core.validators.MinValueValidator(Decimal("0.01"))
],
verbose_name="Выдано",
),
),
(
"currency",
models.CharField(
default="RUB",
max_length=3,
validators=[
django.core.validators.RegexValidator("^[A-Z]{3}$")
],
),
),
("note", models.CharField(max_length=1000, verbose_name="Основание")),
(
"request_id",
models.UUIDField(default=uuid.uuid4, editable=False, unique=True),
),
("created_at", models.DateTimeField(auto_now_add=True)),
("voided_at", models.DateTimeField(blank=True, null=True)),
("void_reason", models.CharField(blank=True, max_length=1000)),
(
"employee",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="off_cycle_payments",
to=settings.AUTH_USER_MODEL,
),
),
(
"created_by",
models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT,
related_name="off_cycle_payments_created",
to=settings.AUTH_USER_MODEL,
),
),
(
"voided_by",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="off_cycle_payments_voided",
to=settings.AUTH_USER_MODEL,
),
),
(
"source_period",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="off_cycle_payments",
to="finance.payrollperiod",
),
),
(
"source_statement",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="off_cycle_payments",
to="finance.payrollstatement",
),
),
],
options={
"verbose_name": "Выплата вне периода",
"verbose_name_plural": "Выплаты вне периода",
"ordering": ["-paid_on", "-pk"],
"constraints": [
models.CheckConstraint(
condition=models.Q(amount__gt=0),
name="off_cycle_payment_positive",
),
models.CheckConstraint(
condition=(
models.Q(
voided_at__isnull=True,
voided_by__isnull=True,
void_reason="",
)
| (
models.Q(
voided_at__isnull=False, voided_by__isnull=False
)
& ~models.Q(void_reason="")
)
),
name="off_cycle_payment_void_consistent",
),
],
},
),
]