You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
1.2 KiB
25 lines
1.2 KiB
from django.db.models.signals import post_save
|
|
from django.dispatch import receiver
|
|
from goods_reception.models import GoodsReception
|
|
from warehouse.models import StockOperation, Warehouse, StorageLocation
|
|
|
|
@receiver(post_save, sender=GoodsReception)
|
|
def handle_goods_reception(sender, instance, created, **kwargs):
|
|
if created and instance.is_accepted:
|
|
# операция прихода
|
|
operation = StockOperation.objects.create(
|
|
product=instance.product,
|
|
warehouse=Warehouse.objects.get(name="Основной склад"),
|
|
storage_location=StorageLocation.objects.filter(warehouse__name="Основной склад").first(),
|
|
operation_type='Incoming',
|
|
quantity=instance.quantity,
|
|
expiration_date=None # Укажите срок годности, если известно
|
|
)
|
|
|
|
# логика распределения по местам хранения
|
|
if instance.product.storage_temperature == "+4C":
|
|
cold_storage = StorageLocation.objects.filter(warehouse=operation.warehouse, temperature_control=True).first()
|
|
if cold_storage:
|
|
operation.storage_location = cold_storage
|
|
operation.save()
|