wherehouse: add sender field to stock movemend model
This commit is contained in:
@@ -47,12 +47,14 @@ class Command(BaseCommand):
|
|||||||
user = None
|
user = None
|
||||||
if item.get('recieved_user'):
|
if item.get('recieved_user'):
|
||||||
user = User.objects.filter(full_name=item['recieved_user']['full_name']).first()
|
user = User.objects.filter(full_name=item['recieved_user']['full_name']).first()
|
||||||
|
sender_user = User.objects.filter(full_name=item['sender_user']['full_name']).first()
|
||||||
stock_movemend, created = StockMovemend.objects.get_or_create(
|
stock_movemend, created = StockMovemend.objects.get_or_create(
|
||||||
number=item['id'],
|
number=item['id'],
|
||||||
defaults={
|
defaults={
|
||||||
"wherehouse_to": recieved_warehouse,
|
"wherehouse_to": recieved_warehouse,
|
||||||
"wherehouse_from": sender_warehouse,
|
"wherehouse_from": sender_warehouse,
|
||||||
"recipient": user,
|
"recipient": user,
|
||||||
|
"sender": sender_user,
|
||||||
"project_folder": project_folder,
|
"project_folder": project_folder,
|
||||||
"movemend_type": movemend_types.get(item['status']),
|
"movemend_type": movemend_types.get(item['status']),
|
||||||
"date": datetime.strptime(item['date'], "%d.%m.%Y"),
|
"date": datetime.strptime(item['date'], "%d.%m.%Y"),
|
||||||
|
|||||||
21
core/apps/wherehouse/migrations/0019_stockmovemend_sender.py
Normal file
21
core/apps/wherehouse/migrations/0019_stockmovemend_sender.py
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# Generated by Django 5.2.4 on 2025-10-31 21:35
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('wherehouse', '0018_alter_invalidproduct_project_folder'),
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='stockmovemend',
|
||||||
|
name='sender',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='stock_sender', to=settings.AUTH_USER_MODEL),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -27,6 +27,9 @@ class StockMovemend(BaseModel):
|
|||||||
recipient = models.ForeignKey(
|
recipient = models.ForeignKey(
|
||||||
User, on_delete=models.SET_NULL, related_name='stock_movmends', null=True, blank=True
|
User, on_delete=models.SET_NULL, related_name='stock_movmends', null=True, blank=True
|
||||||
)
|
)
|
||||||
|
sender = models.ForeignKey(
|
||||||
|
User, on_delete=models.SET_NULL, related_name='stock_sender', null=True, blank=True
|
||||||
|
)
|
||||||
project_folder = models.ForeignKey(
|
project_folder = models.ForeignKey(
|
||||||
ProjectFolder, on_delete=models.SET_NULL, related_name='stock_movmends', null=True, blank=True
|
ProjectFolder, on_delete=models.SET_NULL, related_name='stock_movmends', null=True, blank=True
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ from core.apps.wherehouse.models import (
|
|||||||
StockMovmendProduct,
|
StockMovmendProduct,
|
||||||
WhereHouse,
|
WhereHouse,
|
||||||
)
|
)
|
||||||
|
from core.apps.accounts.models import User
|
||||||
|
|
||||||
|
|
||||||
class StockMovmendProductSerializer(serializers.Serializer):
|
class StockMovmendProductSerializer(serializers.Serializer):
|
||||||
@@ -31,6 +32,7 @@ class StockMovmendCreateSerializer(serializers.Serializer):
|
|||||||
wherehouse_from_id = serializers.UUIDField()
|
wherehouse_from_id = serializers.UUIDField()
|
||||||
date = serializers.DateField(required=False)
|
date = serializers.DateField(required=False)
|
||||||
comment = serializers.CharField(required=False)
|
comment = serializers.CharField(required=False)
|
||||||
|
recipient_id = serializers.UUIDField(required=False)
|
||||||
|
|
||||||
def validate(self, data):
|
def validate(self, data):
|
||||||
if data.get("project_folder_id"):
|
if data.get("project_folder_id"):
|
||||||
@@ -53,6 +55,11 @@ class StockMovmendCreateSerializer(serializers.Serializer):
|
|||||||
).first()
|
).first()
|
||||||
if not wherehouse_from:
|
if not wherehouse_from:
|
||||||
raise serializers.ValidationError("WhereHouse from not found")
|
raise serializers.ValidationError("WhereHouse from not found")
|
||||||
|
if data.get('recipient'):
|
||||||
|
recipient = User.objects.filter(id=data.get('recipient_id')).first()
|
||||||
|
if not recipient:
|
||||||
|
raise serializers.ValidationError("Recipient not found")
|
||||||
|
data['recipient'] = recipient
|
||||||
data["wherehouse_to"] = wherehouse_to
|
data["wherehouse_to"] = wherehouse_to
|
||||||
data["wherehouse_from"] = wherehouse_from
|
data["wherehouse_from"] = wherehouse_from
|
||||||
return data
|
return data
|
||||||
@@ -67,7 +74,8 @@ class StockMovmendCreateSerializer(serializers.Serializer):
|
|||||||
comment=validated_data.get("comment"),
|
comment=validated_data.get("comment"),
|
||||||
wherehouse_to=validated_data.get("wherehouse_to"),
|
wherehouse_to=validated_data.get("wherehouse_to"),
|
||||||
wherehouse_from=validated_data.get("wherehouse_from"),
|
wherehouse_from=validated_data.get("wherehouse_from"),
|
||||||
recipient=self.context.get("user"),
|
sender=self.context.get("user"),
|
||||||
|
recipient=validated_data.get('recipient'),
|
||||||
)
|
)
|
||||||
movmend_products = []
|
movmend_products = []
|
||||||
for product in products:
|
for product in products:
|
||||||
@@ -97,7 +105,7 @@ class StockMovemendProductListSerializer(serializers.ModelSerializer):
|
|||||||
"type": obj.inventory.product.type,
|
"type": obj.inventory.product.type,
|
||||||
"name": obj.inventory.product.name,
|
"name": obj.inventory.product.name,
|
||||||
}
|
}
|
||||||
if obj.inventory.product
|
if obj.inventory and obj.inventory.product
|
||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -107,7 +115,7 @@ class StockMovemendProductListSerializer(serializers.ModelSerializer):
|
|||||||
"id": obj.inventory.unity.id,
|
"id": obj.inventory.unity.id,
|
||||||
"value": obj.inventory.unity.value,
|
"value": obj.inventory.unity.value,
|
||||||
}
|
}
|
||||||
if obj.inventory.unity
|
if obj.inventory and obj.inventory.unity
|
||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -119,6 +127,7 @@ class StockMovemendListSerializer(serializers.ModelSerializer):
|
|||||||
method_name="get_wherehouse_from"
|
method_name="get_wherehouse_from"
|
||||||
)
|
)
|
||||||
recipient = serializers.SerializerMethodField(method_name="get_recipient")
|
recipient = serializers.SerializerMethodField(method_name="get_recipient")
|
||||||
|
sender = serializers.SerializerMethodField(method_name="get_sender")
|
||||||
project_folder = serializers.SerializerMethodField(method_name="get_project_folder")
|
project_folder = serializers.SerializerMethodField(method_name="get_project_folder")
|
||||||
project = serializers.SerializerMethodField(method_name="get_project")
|
project = serializers.SerializerMethodField(method_name="get_project")
|
||||||
|
|
||||||
@@ -130,6 +139,7 @@ class StockMovemendListSerializer(serializers.ModelSerializer):
|
|||||||
"wherehouse_to",
|
"wherehouse_to",
|
||||||
"wherehouse_from",
|
"wherehouse_from",
|
||||||
"recipient",
|
"recipient",
|
||||||
|
"sender",
|
||||||
"project_folder",
|
"project_folder",
|
||||||
"project",
|
"project",
|
||||||
"movemend_type",
|
"movemend_type",
|
||||||
@@ -168,6 +178,17 @@ class StockMovemendListSerializer(serializers.ModelSerializer):
|
|||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_sender(self, obj):
|
||||||
|
return (
|
||||||
|
{
|
||||||
|
"id": obj.sender.id,
|
||||||
|
"full_name": obj.sender.full_name,
|
||||||
|
}
|
||||||
|
if obj.sender
|
||||||
|
else None
|
||||||
|
)
|
||||||
|
|
||||||
def get_project_folder(self, obj):
|
def get_project_folder(self, obj):
|
||||||
return (
|
return (
|
||||||
{"id": obj.project_folder.id, "name": obj.project_folder.name}
|
{"id": obj.project_folder.id, "name": obj.project_folder.name}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class StockMovemendCreateApiView(generics.GenericAPIView):
|
|||||||
class StockMovemendListApiView(generics.GenericAPIView):
|
class StockMovemendListApiView(generics.GenericAPIView):
|
||||||
serializer_class = serializers.StockMovemendListSerializer
|
serializer_class = serializers.StockMovemendListSerializer
|
||||||
queryset = StockMovemend.objects.select_related(
|
queryset = StockMovemend.objects.select_related(
|
||||||
'wherehouse_to', 'wherehouse_from', 'recipient', 'project_folder', 'project'
|
'wherehouse_to', 'wherehouse_from', 'recipient', 'project_folder', 'project', 'sender'
|
||||||
).prefetch_related('movemend_products')
|
).prefetch_related('movemend_products')
|
||||||
permission_classes = [HasRolePermission]
|
permission_classes = [HasRolePermission]
|
||||||
filter_backends = [DjangoFilterBackend, filters.SearchFilter]
|
filter_backends = [DjangoFilterBackend, filters.SearchFilter]
|
||||||
|
|||||||
Reference in New Issue
Block a user