diff --git a/core/apps/orders/tasks/order.py b/core/apps/orders/tasks/order.py index 321e91f..12c2c7c 100644 --- a/core/apps/orders/tasks/order.py +++ b/core/apps/orders/tasks/order.py @@ -6,7 +6,7 @@ from core.apps.wherehouse.models.inventory import Inventory @shared_task def create_inventory( - wherehouse, quantity, product, unity, price, project_folder, project, unity_price + wherehouse, quantity, product, unity, price, project_folder, project, unity_price, received_currency ): inventory, created = Inventory.objects.get_or_create( product_id=product, @@ -18,6 +18,7 @@ def create_inventory( project_folder_id=project_folder, project_id=project, unit_price=unity_price, + received_currency=received_currency, ) ) if not created: diff --git a/core/apps/orders/views/party.py b/core/apps/orders/views/party.py index 3078141..83576ce 100644 --- a/core/apps/orders/views/party.py +++ b/core/apps/orders/views/party.py @@ -172,6 +172,7 @@ class PartyChangeStatusToIsMadeApiView(generics.GenericAPIView): order.project_folder.id if order.project_folder else None, order.project.id if order.project else None, order.unit_amount, + order.currency, ) order.received_count += product_quantity order.received_date = product_receive_date diff --git a/core/apps/wherehouse/migrations/0021_inventory_received_currency.py b/core/apps/wherehouse/migrations/0021_inventory_received_currency.py new file mode 100644 index 0000000..b5f6934 --- /dev/null +++ b/core/apps/wherehouse/migrations/0021_inventory_received_currency.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.4 on 2025-11-10 15:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wherehouse', '0020_alter_inventory_price_alter_inventory_unit_price'), + ] + + operations = [ + migrations.AddField( + model_name='inventory', + name='received_currency', + field=models.CharField(blank=True, max_length=3, null=True), + ), + ] diff --git a/core/apps/wherehouse/models/inventory.py b/core/apps/wherehouse/models/inventory.py index 223fd97..966c499 100644 --- a/core/apps/wherehouse/models/inventory.py +++ b/core/apps/wherehouse/models/inventory.py @@ -28,6 +28,7 @@ class Inventory(BaseModel): ) is_invalid = models.BooleanField(default=False) unit_price = models.DecimalField(max_digits=15, decimal_places=2, default=0.00) + received_currency = models.CharField(max_length=3, null=True, blank=True) def __str__(self): return f'{self.product} in {self.wherehouse}' diff --git a/core/apps/wherehouse/serializers/inventory.py b/core/apps/wherehouse/serializers/inventory.py index 052ff5f..a890579 100644 --- a/core/apps/wherehouse/serializers/inventory.py +++ b/core/apps/wherehouse/serializers/inventory.py @@ -6,12 +6,42 @@ from core.apps.wherehouse.models.inventory import Inventory class InventoryListSerializer(serializers.ModelSerializer): product = serializers.SerializerMethodField(method_name='get_product') unity = serializers.SerializerMethodField(method_name='get_unity') + wherehouse = serializers.SerializerMethodField(method_name='get_wherehouse') + project_folder = serializers.SerializerMethodField(method_name='get_project_folder') + project = serializers.SerializerMethodField(method_name='get_project') class Meta: model = Inventory fields = [ - 'id', 'quantity', 'product', 'price', 'unity', 'unit_price' + 'id', + 'wherehouse', + 'project_folder', + 'project', + 'quantity', + 'product', + 'price', + 'unity', + 'unit_price', + 'created_at', ] + + def get_project(self, obj): + return { + 'id': obj.project.id, + 'name': obj.project.name, + } if obj.project else None + + def get_project_folder(self, obj): + return { + 'id': obj.project_folder.id, + 'name': obj.project_folder.name, + } if obj.project_folder else None + + def get_wherehouse(self, obj): + return { + "id": obj.wherehouse.id, + "name": obj.wherehouse.name + } def get_product(self, obj): return { diff --git a/core/apps/wherehouse/views/inventory.py b/core/apps/wherehouse/views/inventory.py index 4670e95..9bdbbbd 100644 --- a/core/apps/wherehouse/views/inventory.py +++ b/core/apps/wherehouse/views/inventory.py @@ -12,7 +12,7 @@ from core.apps.accounts.permissions.permissions import HasRolePermission class InventoryListApiView(generics.GenericAPIView): serializer_class = serializers.InventoryListSerializer - queryset = Inventory.objects.select_related('product', 'unity').exclude(is_invalid=True) + queryset = Inventory.objects.select_related('product', 'unity', 'wherehouse', 'project', 'project_folder').exclude(is_invalid=True) permissions_classes = [HasRolePermission] filter_backends = [DjangoFilterBackend, filters.SearchFilter] search_fields = [