Как обновить запасы через покупку и продажу в 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')