diff --git a/core/apps/wherehouse/migrations/0008_invalidproduct_invalid_status_and_more.py b/core/apps/wherehouse/migrations/0008_invalidproduct_invalid_status_and_more.py new file mode 100644 index 0000000..ed059c3 --- /dev/null +++ b/core/apps/wherehouse/migrations/0008_invalidproduct_invalid_status_and_more.py @@ -0,0 +1,29 @@ +# Generated by Django 5.2.4 on 2025-08-27 16:10 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wherehouse', '0007_inventory_unit_price'), + ] + + operations = [ + migrations.AddField( + model_name='invalidproduct', + name='invalid_status', + field=models.CharField(choices=[('BROKEN', 'singan'), ('LOST', 'yoqolgan'), ('OTHER', 'boshqa')], default='other', max_length=20), + ), + migrations.AddField( + model_name='invalidproduct', + name='wherehouse', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='invalid_products', to='wherehouse.wherehouse'), + ), + migrations.AlterField( + model_name='invalidproduct', + name='status', + field=models.CharField(choices=[('OPEN', 'ochiq'), ('EXPECTED', 'kutilmoqda'), ('ACCEPTED', 'qabul qilingan'), ('CANCELLED', 'bekor qilingan')], default='OPEN', max_length=20), + ), + ] diff --git a/core/apps/wherehouse/models/invalid_product.py b/core/apps/wherehouse/models/invalid_product.py index d8f129e..78a777c 100644 --- a/core/apps/wherehouse/models/invalid_product.py +++ b/core/apps/wherehouse/models/invalid_product.py @@ -11,11 +11,17 @@ from core.apps.accounts.models import User class InvalidProduct(BaseModel): - STATUS = ( + INVALID_STATUS = ( ('BROKEN', 'singan'), ('LOST', 'yoqolgan'), ('OTHER', 'boshqa'), ) + STATUS = ( + ('OPEN', 'ochiq'), + ('EXPECTED', 'kutilmoqda'), + ('ACCEPTED', 'qabul qilingan'), + ('CANCELLED', 'bekor qilingan') + ) # relationship inventory = models.ForeignKey(Inventory, on_delete=models.CASCADE, related_name='invalid_products') @@ -26,9 +32,11 @@ class InvalidProduct(BaseModel): work = models.ForeignKey( EstimateWork, on_delete=models.SET_NULL, null=True, blank=True, related_name='invalid_products' ) + wherehouse = models.ForeignKey(WhereHouse, on_delete=models.CASCADE, related_name='invalid_products', null=True) # required amount = models.PositiveIntegerField() - status = models.CharField(max_length=20, choices=STATUS, default='other') + invalid_status = models.CharField(max_length=20, choices=INVALID_STATUS, default='other') + status = models.CharField(max_length=20, choices=STATUS, default='OPEN') # optional created_date = models.DateField(null=True, blank=True) expiry_date = models.DateField(null=True, blank=True) diff --git a/core/apps/wherehouse/serializers/invalid_product.py b/core/apps/wherehouse/serializers/invalid_product.py index cd7773c..56d7b06 100644 --- a/core/apps/wherehouse/serializers/invalid_product.py +++ b/core/apps/wherehouse/serializers/invalid_product.py @@ -14,7 +14,7 @@ class InvalidProductCreateSerializer(serializers.Serializer): witnesses_ids = serializers.ListField(child=serializers.UUIDField()) work_id = serializers.UUIDField(required=False) amount = serializers.IntegerField() - status = serializers.ChoiceField(choices=InvalidProduct.STATUS) + status = serializers.ChoiceField(choices=InvalidProduct.INVALID_STATUS) created_date = serializers.DateField(required=False) expiry_date = serializers.DateField(required=False) comment = serializers.CharField(required=False) @@ -49,6 +49,7 @@ class InvalidProductCreateSerializer(serializers.Serializer): expiry_date=validated_data.get('expiry_date'), comment=validated_data.get('comment'), file=validated_data.get('file'), + wherehouse=validated_data.get('inventory').wherehouse ) invalid_product.witnesses.set(witnesses_ids) invalid_product.inventory.is_invalid = True @@ -62,16 +63,23 @@ class InvliadProductListSerializer(serializers.ModelSerializer): inventory = InventoryListSerializer() project_folder = serializers.SerializerMethodField(method_name='get_folder') witnesses = UserListSerializer(many=True) + wherehouse = serializers.SerializerMethodField(method_name='get_wherehouse') class Meta: model = InvalidProduct fields = [ - 'id', 'status', 'inventory', 'project_folder', 'witnesses', 'work', 'amount', - 'created_date', 'expiry_date', 'comment', 'file' + 'id', 'status', 'invalid_status', 'inventory', 'project_folder', 'witnesses', 'work', + 'amount', 'created_date', 'expiry_date', 'comment', 'file', 'wherehouse' ] def get_folder(self, obj): return { 'id': obj.project_folder.id, 'name': obj.project_folder.name, - } \ No newline at end of file + } + + def get_wherehouse(self, obj): + return { + 'id': obj.wherehouse.id, + 'name': obj.wherehouse.name + } if obj.wherehouse else None \ No newline at end of file