add new features

This commit is contained in:
behruz-dev
2025-08-25 10:45:11 +05:00
parent a6d0266668
commit 74ecc581ae
9 changed files with 89 additions and 3 deletions

6
config/conf/celery.py Normal file
View File

@@ -0,0 +1,6 @@
from django.conf import settings
CELERY_BROKER_URL = 'redis://redis:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = settings.TIME_ZONE

View File

@@ -159,4 +159,5 @@ from config.conf.logs import *
from config.conf.cors_headers import *
from config.conf.drf_yasg import *
from config.conf.jazzmin import *
from config.conf.redis import *
from config.conf.redis import *
from config.conf.celery import *

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.2.4 on 2025-08-25 10:14
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0022_alter_party_number'),
]
operations = [
migrations.AlterField(
model_name='party',
name='orders',
field=models.ManyToManyField(blank=True, related_name='parties', to='orders.order'),
),
]

View File

@@ -28,7 +28,7 @@ class Party(BaseModel):
)
number = models.PositiveIntegerField(default=0)
orders = models.ManyToManyField(Order, related_name='parties', null=True, blank=True)
orders = models.ManyToManyField(Order, related_name='parties', blank=True)
mediator = models.ForeignKey(User, on_delete=models.CASCADE, related_name='parties')
# dates
delivery_date = models.DateField()

View File

@@ -1,8 +1,9 @@
from django.db import transaction
from rest_framework import serializers
# orders
from core.apps.orders.models import Order
from core.apps.orders.tasks.order import create_inventory
# products
from core.apps.products.models import Product, Unity
from core.apps.products.serializers.product import ProductListSerializer
@@ -80,6 +81,7 @@ class MultipleOrderCreateSerializer(serializers.Serializer):
date=common_date,
employee=self.context.get('user'),
))
create_inventory.delay(resource['wherehouse'],resource['quantity'],resource)
created_orders = Order.objects.bulk_create(orders)
return created_orders

View File

@@ -0,0 +1,14 @@
from celery import shared_task
from core.apps.wherehouse.models.inventory import Inventory
@shared_task
def create_inventory(wherehouse, quantity, product, unity, price):
Inventory.objects.create(
wherehouse__id=wherehouse,
quantity=quantity,
product__id=product,
unity__id=unity,
price=price
)

View File

@@ -0,0 +1,25 @@
# Generated by Django 5.2.4 on 2025-08-25 10:13
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0006_alter_product_type'),
('wherehouse', '0002_stockmovemend'),
]
operations = [
migrations.AddField(
model_name='inventory',
name='price',
field=models.PositiveBigIntegerField(default=0),
),
migrations.AddField(
model_name='inventory',
name='unity',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='inventories', to='products.unity'),
),
]

View File

@@ -1,15 +1,21 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
# shared
from core.apps.shared.models import BaseModel
# warehouse
from core.apps.wherehouse.models.wherehouse import WhereHouse
# products
from core.apps.products.models.product import Product
from core.apps.products.models.unity import Unity
class Inventory(BaseModel):
wherehouse = models.ForeignKey(WhereHouse, on_delete=models.CASCADE, related_name='inventories')
quantity = models.PositiveIntegerField(default=0)
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='inventories')
unity = models.ForeignKey(Unity, on_delete=models.SET_NULL, related_name='inventories', null=True)
price = models.PositiveBigIntegerField(default=0)
def __str__(self):
return f'{self.product} in {self.wherehouse}'

View File

@@ -50,4 +50,18 @@ services:
networks:
- uyqur
image: redis
ports:
- "6380:6379"
celery:
build:
context: .
dockerfile: ./docker/Dockerfile.web
command: celery -A config worker --loglevel=info
volumes:
- "./:/code"
depends_on:
- redis
- web
networks:
- uyqur