This commit is contained in:
behruz-dev
2025-08-19 17:19:31 +05:00
parent e5e890a0d3
commit aea31c80c6
3 changed files with 31 additions and 22 deletions

View File

@@ -0,0 +1,20 @@
# Generated by Django 5.2.4 on 2025-08-19 17:19
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0006_offer_price_type'),
('projects', '0016_estimatework_employee_estimatework_end_date_and_more'),
]
operations = [
migrations.AlterField(
model_name='order',
name='project_folder',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='order', to='projects.projectfolder'),
),
]

View File

@@ -22,7 +22,7 @@ class Order(BaseModel):
Unity, on_delete=models.CASCADE, related_name='orders'
)
project_folder = models.ForeignKey(
ProjectFolder, on_delete=models.CASCADE, related_name='order', null=True
ProjectFolder, on_delete=models.SET_NULL, related_name='order', null=True, blank=True
)
project = models.ForeignKey(
Project, on_delete=models.SET_NULL, related_name='orders', null=True, blank=True

View File

@@ -22,14 +22,13 @@ class OrderCreateSerializer(serializers.Serializer):
quantity = serializers.IntegerField()
wherehouse_id = serializers.UUIDField()
project_id = serializers.UUIDField(required=False)
project_folder_id = serializers.UUIDField()
project_folder_id = serializers.UUIDField(required=False)
def validate(self, data):
try:
product = Product.objects.get(id=data['product_id'])
unity = Unity.objects.get(id=data['unity_id'])
wherehouse = WhereHouse.objects.get(id=data['wherehouse_id'])
project_folder = ProjectFolder.objects.get(id=data['project_folder_id'])
if data.get('project_id'):
Project.objects.get(
id=data['project_id']
@@ -40,34 +39,24 @@ class OrderCreateSerializer(serializers.Serializer):
raise serializers.ValidationError("Unity not found")
except WhereHouse.DoesNotExist:
raise serializers.ValidationError("Where House not found")
except ProjectFolder.DoesNotExist:
raise serializers.ValidationError("Project Folder not found")
try:
if data.get('project_id'):
data['project'] = Project.objects.get(id=data['project_id'])
except Project.DoesNotExist:
raise serializers.ValidationError("Project not found")
if data.get('project_folder_id'):
try:
project_folder = ProjectFolder.objects.get(id=data['project_folder_id'])
except ProjectFolder.DoesNotExist:
raise serializers.ValidationError("Project Folder not found")
data['project_folder'] = project_folder
data['product'] = product
data['unity'] = unity
data['wherehouse'] = wherehouse
data['project_folder'] = project_folder
return data
# def create(self, validated_data):
# with transaction.atomic():
# order = Order.objects.create(
# product=validated_data.get('product'),
# unity=validated_data.get('unity'),
# wherehouse=validated_data.get('wherehouse'),
# project_folder=validated_data.get('project_folder'),
# project=validated_data.get('project'),
# quantity=validated_data.get('quantity'),
# date=validated_data.get('date'),
# employee=self.context.get('user'),
# )
# return order
class MultipleOrderCreateSerializer(serializers.Serializer):
resources = OrderCreateSerializer(many=True)
@@ -84,7 +73,7 @@ class MultipleOrderCreateSerializer(serializers.Serializer):
product=resource['product'],
unity=resource['unity'],
wherehouse=resource['wherehouse'],
project_folder=resource['project_folder'],
project_folder=resource.get('project_folder'),
project=resource.get('project'),
quantity=resource['quantity'],
date=common_date,