Hello,
Please help crack the below code, I want to prevent negative stock, and if the stock is == 0, deduct it from reorder_level instead.
Currently, the stock goes negative.
models.py
class Stock(models.Model):
quantity = models.IntegerField(default='0', blank=True, null=True)
reorder_level = models.IntegerField(default='0', blank=True, null=True)
class Dispense(models.Model):
drug_id = models.ForeignKey(Stock, on_delete=models.SET_NULL,null=True,blank=False)
dispense_quantity = models.PositiveIntegerField(default='1', blank=False, null=True)
taken=models.CharField(max_length=300,null=True, blank=True)
views.py
try:
if request.method == 'POST':
if form.is_valid():
username = form.cleaned_data['taken']
qu=form.cleaned_data['dispense_quantity']
ka=form.cleaned_data['drug_id']
# print(username)
stock= eo=Stock.objects.annotate(
expired=ExpressionWrapper(Q(valid_to__lt=Now()), output_field=BooleanField())
).filter(expired=False).get(id=username)
form=DispenseForm(request.POST or None, instance=stock)
instance=form.save()
# print(instance)
if quantity > 0
instance.quantity-=qu
instance.save()
else:
instance.reorder_level-=qu
instanc.save()
form=DispenseForm(request.POST or None ,initial={'patient_id':queryset})
form.save()
messages.success(request, "Drug Has been Successfully Dispensed")
return redirect('manage_patient_pharmacist')
else:
messages.error(request, "Validity Error")
return redirect('manage_patient_pharmacist')
context={
"patients":queryset,
"form":form,
# "stocks":stock,
"drugs":drugs,
"prescrips":prescrips,
"expired":ex,
"expa":eo,
}
if request.method == 'POST':
print(drugs)
context={
"drugs":drugs,
form:form,
"prescrips":prescrips,
"patients":queryset,
"expired":ex,
"expa":eo,
}
except:
messages.error(request, "Dispensing Not Allowed! The Drug is Expired ,please do a re-stock ")
return redirect('manage_patient_pharmacist')
context={
"patients":queryset,
"form":form,
# "stocks":stock,
"drugs":drugs,
"prescrips":prescrips,
"expired":ex,
"expa":eo,
}
return render(request,'templates/discharge.html',context)