Как обновить запасы через покупку и продажу в Django?

Я работаю над Django Billing Webapp/Invoicing Webapp. У меня проблема с обновлением запасов через покупки и продажи. Я хочу, чтобы количество медикаментов увеличивалось при покупке и уменьшалось при продаже. Но после множества попыток я не могу этого добиться. Пожалуйста, помогите мне интегрировать эту функцию в мой Django WebApp. Вот содержимое файлов:

Models.py

Views.py

TextBody ограничен 30000 символами, поэтому не смог загрузить другие документы. Нужна помощь как можно скорее. Дайте мне знать, если вам нужны другие файлы.

Здесь представлен образец полной программы для работы с запчастями/инвентарем. В ней есть закупка и размещение, вместо продажи/счета-фактуры есть опция выпуска, которая близка к счету-фактуре по функциональности.
Это может быть самая близкая программа для инвентаризации деталей к вашему проекту.

https://github.com/edcodes/Django-Parts-Inventory
. Приобретая деталь, вы пополняете общий инвентарь, также у вас есть возможность выбрать различные места хранения для внутреннего инвентаря.
. Также при выпуске детали она автоматически вычитается из инвентаря

После долгих попыток я нашел способ обновления запасов через счета покупки и продажи, вот способ: Signals.py(Purchase)

@receiver(post_save,sender=Purchase)
def increase_stocks(sender,created,instance,**kwargs):
    if created:
        if instance.medicine_1 != None:
            print(instance.med_quantity_1)
            print(instance.medicine_1.Med_Quantity)
            print(instance.medicine_1.id)
            ordered_qty = instance.med_quantity_1
            stocked_qty = instance.medicine_1.Med_Quantity
            free_stocked_qty = instance.Free_Quantitiy_1
            value = (stocked_qty + ordered_qty) + free_stocked_qty
            instance.medicine_1.Med_Quantity = value
            instance.medicine_1.save()

Signals.py(Sales)

@receiver(post_save, sender=Sales)
def decrease_stocks(sender,created,instance,**kwargs):
    if created:
        print(instance.Med_quantity_1)
        print(instance.sales_medicine_1.Med_Quantity)
        print(instance.sales_medicine_1.id)
        ordered_qty = instance.Med_quantity_1
        stocked_qty = instance.sales_medicine_1.Med_Quantity
        free_stocked_qty = instance.Free_quantity_1
        if stocked_qty < ordered_qty:
            print("-------------------------------------------")
            print("       We didnt have enough stock          ")
            print("-------------------------------------------")
            messages.Error(instance,"We didn't have enough stock")
            raise LookupError("We didn't have enough stock for this medicine")
        else:
            value = (stocked_qty - ordered_qty) - free_stocked_qty
            instance.sales_medicine_1.Med_Quantity = value
            instance.sales_medicine_1.save()
            redirect('Sales') 
Вернуться на верх