add: add new field to InvalidProduct model
This commit is contained in:
@@ -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),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -11,11 +11,17 @@ from core.apps.accounts.models import User
|
|||||||
|
|
||||||
|
|
||||||
class InvalidProduct(BaseModel):
|
class InvalidProduct(BaseModel):
|
||||||
STATUS = (
|
INVALID_STATUS = (
|
||||||
('BROKEN', 'singan'),
|
('BROKEN', 'singan'),
|
||||||
('LOST', 'yoqolgan'),
|
('LOST', 'yoqolgan'),
|
||||||
('OTHER', 'boshqa'),
|
('OTHER', 'boshqa'),
|
||||||
)
|
)
|
||||||
|
STATUS = (
|
||||||
|
('OPEN', 'ochiq'),
|
||||||
|
('EXPECTED', 'kutilmoqda'),
|
||||||
|
('ACCEPTED', 'qabul qilingan'),
|
||||||
|
('CANCELLED', 'bekor qilingan')
|
||||||
|
)
|
||||||
|
|
||||||
# relationship
|
# relationship
|
||||||
inventory = models.ForeignKey(Inventory, on_delete=models.CASCADE, related_name='invalid_products')
|
inventory = models.ForeignKey(Inventory, on_delete=models.CASCADE, related_name='invalid_products')
|
||||||
@@ -26,9 +32,11 @@ class InvalidProduct(BaseModel):
|
|||||||
work = models.ForeignKey(
|
work = models.ForeignKey(
|
||||||
EstimateWork, on_delete=models.SET_NULL, null=True, blank=True, related_name='invalid_products'
|
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
|
# required
|
||||||
amount = models.PositiveIntegerField()
|
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
|
# optional
|
||||||
created_date = models.DateField(null=True, blank=True)
|
created_date = models.DateField(null=True, blank=True)
|
||||||
expiry_date = models.DateField(null=True, blank=True)
|
expiry_date = models.DateField(null=True, blank=True)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class InvalidProductCreateSerializer(serializers.Serializer):
|
|||||||
witnesses_ids = serializers.ListField(child=serializers.UUIDField())
|
witnesses_ids = serializers.ListField(child=serializers.UUIDField())
|
||||||
work_id = serializers.UUIDField(required=False)
|
work_id = serializers.UUIDField(required=False)
|
||||||
amount = serializers.IntegerField()
|
amount = serializers.IntegerField()
|
||||||
status = serializers.ChoiceField(choices=InvalidProduct.STATUS)
|
status = serializers.ChoiceField(choices=InvalidProduct.INVALID_STATUS)
|
||||||
created_date = serializers.DateField(required=False)
|
created_date = serializers.DateField(required=False)
|
||||||
expiry_date = serializers.DateField(required=False)
|
expiry_date = serializers.DateField(required=False)
|
||||||
comment = serializers.CharField(required=False)
|
comment = serializers.CharField(required=False)
|
||||||
@@ -49,6 +49,7 @@ class InvalidProductCreateSerializer(serializers.Serializer):
|
|||||||
expiry_date=validated_data.get('expiry_date'),
|
expiry_date=validated_data.get('expiry_date'),
|
||||||
comment=validated_data.get('comment'),
|
comment=validated_data.get('comment'),
|
||||||
file=validated_data.get('file'),
|
file=validated_data.get('file'),
|
||||||
|
wherehouse=validated_data.get('inventory').wherehouse
|
||||||
)
|
)
|
||||||
invalid_product.witnesses.set(witnesses_ids)
|
invalid_product.witnesses.set(witnesses_ids)
|
||||||
invalid_product.inventory.is_invalid = True
|
invalid_product.inventory.is_invalid = True
|
||||||
@@ -62,16 +63,23 @@ class InvliadProductListSerializer(serializers.ModelSerializer):
|
|||||||
inventory = InventoryListSerializer()
|
inventory = InventoryListSerializer()
|
||||||
project_folder = serializers.SerializerMethodField(method_name='get_folder')
|
project_folder = serializers.SerializerMethodField(method_name='get_folder')
|
||||||
witnesses = UserListSerializer(many=True)
|
witnesses = UserListSerializer(many=True)
|
||||||
|
wherehouse = serializers.SerializerMethodField(method_name='get_wherehouse')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = InvalidProduct
|
model = InvalidProduct
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'status', 'inventory', 'project_folder', 'witnesses', 'work', 'amount',
|
'id', 'status', 'invalid_status', 'inventory', 'project_folder', 'witnesses', 'work',
|
||||||
'created_date', 'expiry_date', 'comment', 'file'
|
'amount', 'created_date', 'expiry_date', 'comment', 'file', 'wherehouse'
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_folder(self, obj):
|
def get_folder(self, obj):
|
||||||
return {
|
return {
|
||||||
'id': obj.project_folder.id,
|
'id': obj.project_folder.id,
|
||||||
'name': obj.project_folder.name,
|
'name': obj.project_folder.name,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_wherehouse(self, obj):
|
||||||
|
return {
|
||||||
|
'id': obj.wherehouse.id,
|
||||||
|
'name': obj.wherehouse.name
|
||||||
|
} if obj.wherehouse else None
|
||||||
Reference in New Issue
Block a user