# Generated by Django 5.2.14 on 2026-09-07 15:05

import django.db.models.deletion
import simple_history.models
from decimal import Decimal
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='InternalCategory',
            fields=[
                ('id', models.AutoField(primary_key=True, serialize=False)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(auto_now_add=True, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(auto_now=True, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('name', models.CharField(max_length=100, verbose_name='Nombre de Categoría')),
                ('description', models.TextField(blank=True, verbose_name='Descripción')),
            ],
            options={
                'verbose_name': 'Categoría Interna',
                'verbose_name_plural': 'Categorías Internas',
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='EmployeeProfile',
            fields=[
                ('id', models.AutoField(primary_key=True, serialize=False)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(auto_now_add=True, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(auto_now=True, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('employee_number', models.CharField(help_text='Código o ficha identificadora del trabajador en la empresa', max_length=50, unique=True, verbose_name='Número de Empleado')),
                ('department', models.CharField(max_length=100, verbose_name='Departamento')),
                ('position', models.CharField(max_length=100, verbose_name='Cargo')),
                ('salary', models.DecimalField(decimal_places=2, default=Decimal('0.00'), max_digits=12, verbose_name='Salario')),
                ('is_active', models.BooleanField(default=True, verbose_name='Activo en Tienda')),
                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='employee_profile', to=settings.AUTH_USER_MODEL, verbose_name='Usuario')),
            ],
            options={
                'verbose_name': 'Perfil de Empleado',
                'verbose_name_plural': 'Perfiles de Empleados',
                'ordering': ['employee_number'],
            },
        ),
        migrations.CreateModel(
            name='DebtPayment',
            fields=[
                ('id', models.AutoField(primary_key=True, serialize=False)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(auto_now_add=True, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(auto_now=True, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('amount', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='Monto del Abono')),
                ('payment_type', models.CharField(choices=[('PAYROLL_DEDUCTION', 'Descuento de Nómina'), ('CASH', 'Efectivo'), ('TRANSFER', 'Transferencia Bancaria')], default='PAYROLL_DEDUCTION', max_length=30, verbose_name='Tipo de Pago')),
                ('reference', models.CharField(blank=True, max_length=100, verbose_name='Referencia / Comprobante')),
                ('notes', models.TextField(blank=True, verbose_name='Notas')),
                ('registered_by', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='debt_payments_registered', to=settings.AUTH_USER_MODEL, verbose_name='Registrado por')),
                ('employee', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='payments', to='employee_store.employeeprofile', verbose_name='Empleado')),
            ],
            options={
                'verbose_name': 'Abono / Pago de Deuda',
                'verbose_name_plural': 'Abonos / Pagos de Deuda',
                'ordering': ['-created_at', '-id'],
            },
        ),
        migrations.CreateModel(
            name='HistoricalDebtPayment',
            fields=[
                ('id', models.IntegerField(blank=True, db_index=True)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('amount', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='Monto del Abono')),
                ('payment_type', models.CharField(choices=[('PAYROLL_DEDUCTION', 'Descuento de Nómina'), ('CASH', 'Efectivo'), ('TRANSFER', 'Transferencia Bancaria')], default='PAYROLL_DEDUCTION', max_length=30, verbose_name='Tipo de Pago')),
                ('reference', models.CharField(blank=True, max_length=100, verbose_name='Referencia / Comprobante')),
                ('notes', models.TextField(blank=True, verbose_name='Notas')),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                ('employee', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='employee_store.employeeprofile', verbose_name='Empleado')),
                ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('registered_by', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Registrado por')),
            ],
            options={
                'verbose_name': 'historical Abono / Pago de Deuda',
                'verbose_name_plural': 'historical Abonos / Pagos de Deuda',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='HistoricalEmployeeProfile',
            fields=[
                ('id', models.IntegerField(blank=True, db_index=True)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('employee_number', models.CharField(db_index=True, help_text='Código o ficha identificadora del trabajador en la empresa', max_length=50, verbose_name='Número de Empleado')),
                ('department', models.CharField(max_length=100, verbose_name='Departamento')),
                ('position', models.CharField(max_length=100, verbose_name='Cargo')),
                ('salary', models.DecimalField(decimal_places=2, default=Decimal('0.00'), max_digits=12, verbose_name='Salario')),
                ('is_active', models.BooleanField(default=True, verbose_name='Activo en Tienda')),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Usuario')),
            ],
            options={
                'verbose_name': 'historical Perfil de Empleado',
                'verbose_name_plural': 'historical Perfiles de Empleados',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='HistoricalInternalCategory',
            fields=[
                ('id', models.IntegerField(blank=True, db_index=True)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('name', models.CharField(max_length=100, verbose_name='Nombre de Categoría')),
                ('description', models.TextField(blank=True, verbose_name='Descripción')),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'verbose_name': 'historical Categoría Interna',
                'verbose_name_plural': 'historical Categorías Internas',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='HistoricalInternalOrder',
            fields=[
                ('id', models.IntegerField(blank=True, db_index=True)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('order_number', models.CharField(db_index=True, max_length=50, verbose_name='Número de Orden')),
                ('total_amount', models.DecimalField(decimal_places=2, default=Decimal('0.00'), max_digits=12, verbose_name='Monto Total')),
                ('status', models.CharField(choices=[('COMPLETED', 'Completada'), ('CANCELLED', 'Cancelada')], default='COMPLETED', max_length=20, verbose_name='Estado')),
                ('notes', models.TextField(blank=True, verbose_name='Notas u Observaciones')),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                ('created_by', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Despachado por')),
                ('employee', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='employee_store.employeeprofile', verbose_name='Empleado')),
                ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'verbose_name': 'historical Orden Interna',
                'verbose_name_plural': 'historical Órdenes Internas',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='HistoricalInternalProduct',
            fields=[
                ('id', models.IntegerField(blank=True, db_index=True)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('barcode', models.CharField(db_index=True, help_text='Código único para lectura rápida en punto de venta', max_length=100, verbose_name='Código de Barras')),
                ('name', models.CharField(max_length=200, verbose_name='Nombre del Producto')),
                ('description', models.TextField(blank=True, verbose_name='Descripción')),
                ('price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Precio Unitario')),
                ('stock', models.PositiveIntegerField(default=0, verbose_name='Stock Físico')),
                ('weekly_limit_per_employee', models.PositiveIntegerField(default=0, help_text='Máximo de unidades que un trabajador puede comprar en 7 días (0 = sin límite)', verbose_name='Límite Semanal por Empleado')),
                ('is_active', models.BooleanField(default=True, verbose_name='Activo')),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('category', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='employee_store.internalcategory', verbose_name='Categoría')),
            ],
            options={
                'verbose_name': 'historical Producto Interno',
                'verbose_name_plural': 'historical Productos Internos',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='InternalOrder',
            fields=[
                ('id', models.AutoField(primary_key=True, serialize=False)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(auto_now_add=True, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(auto_now=True, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('order_number', models.CharField(max_length=50, unique=True, verbose_name='Número de Orden')),
                ('total_amount', models.DecimalField(decimal_places=2, default=Decimal('0.00'), max_digits=12, verbose_name='Monto Total')),
                ('status', models.CharField(choices=[('COMPLETED', 'Completada'), ('CANCELLED', 'Cancelada')], default='COMPLETED', max_length=20, verbose_name='Estado')),
                ('notes', models.TextField(blank=True, verbose_name='Notas u Observaciones')),
                ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='internal_orders_created', to=settings.AUTH_USER_MODEL, verbose_name='Despachado por')),
                ('employee', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='orders', to='employee_store.employeeprofile', verbose_name='Empleado')),
            ],
            options={
                'verbose_name': 'Orden Interna',
                'verbose_name_plural': 'Órdenes Internas',
                'ordering': ['-created_at', '-id'],
            },
        ),
        migrations.CreateModel(
            name='InternalProduct',
            fields=[
                ('id', models.AutoField(primary_key=True, serialize=False)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(auto_now_add=True, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(auto_now=True, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('barcode', models.CharField(db_index=True, help_text='Código único para lectura rápida en punto de venta', max_length=100, unique=True, verbose_name='Código de Barras')),
                ('name', models.CharField(max_length=200, verbose_name='Nombre del Producto')),
                ('description', models.TextField(blank=True, verbose_name='Descripción')),
                ('price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Precio Unitario')),
                ('stock', models.PositiveIntegerField(default=0, verbose_name='Stock Físico')),
                ('weekly_limit_per_employee', models.PositiveIntegerField(default=0, help_text='Máximo de unidades que un trabajador puede comprar en 7 días (0 = sin límite)', verbose_name='Límite Semanal por Empleado')),
                ('is_active', models.BooleanField(default=True, verbose_name='Activo')),
                ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='products', to='employee_store.internalcategory', verbose_name='Categoría')),
            ],
            options={
                'verbose_name': 'Producto Interno',
                'verbose_name_plural': 'Productos Internos',
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='InternalOrderItem',
            fields=[
                ('id', models.AutoField(primary_key=True, serialize=False)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(auto_now_add=True, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(auto_now=True, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('quantity', models.PositiveIntegerField(default=1, verbose_name='Cantidad')),
                ('unit_price', models.DecimalField(decimal_places=2, help_text='Precio al momento exacto de la compra (inmutable)', max_digits=10, verbose_name='Precio Unitario (Snapshot)')),
                ('subtotal', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='Subtotal')),
                ('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='employee_store.internalorder', verbose_name='Orden')),
                ('product', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='order_items', to='employee_store.internalproduct', verbose_name='Producto')),
            ],
            options={
                'verbose_name': 'Ítem de Orden Interna',
                'verbose_name_plural': 'Ítems de Órdenes Internas',
            },
        ),
        migrations.CreateModel(
            name='HistoricalInternalOrderItem',
            fields=[
                ('id', models.IntegerField(blank=True, db_index=True)),
                ('is_deleted', models.BooleanField(default=False, verbose_name='Eliminado')),
                ('created_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Creación')),
                ('updated_at', models.DateField(blank=True, editable=False, verbose_name='Fecha de Modificación')),
                ('deleted_at', models.DateField(blank=True, null=True, verbose_name='Fecha de Eliminación')),
                ('quantity', models.PositiveIntegerField(default=1, verbose_name='Cantidad')),
                ('unit_price', models.DecimalField(decimal_places=2, help_text='Precio al momento exacto de la compra (inmutable)', max_digits=10, verbose_name='Precio Unitario (Snapshot)')),
                ('subtotal', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='Subtotal')),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
                ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
                ('order', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='employee_store.internalorder', verbose_name='Orden')),
                ('product', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='employee_store.internalproduct', verbose_name='Producto')),
            ],
            options={
                'verbose_name': 'historical Ítem de Orden Interna',
                'verbose_name_plural': 'historical Ítems de Órdenes Internas',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
    ]
