Fix: Update purchase was wrong. It would stop after the first product as break would exit the loop instead of going to the next iteration. It was actually not needed and was a holdover from the previous loop in loop code.

This commit is contained in:
Amritanshu Agrawal 2021-09-21 07:01:36 +05:30
parent f2d617bbce
commit 6212eead20
1 changed files with 1 additions and 3 deletions

View File

@ -226,7 +226,7 @@ def update_inventory(voucher: Voucher, vendor_id: uuid.UUID, new_inventories: Li
item = voucher.inventories[it - 1] item = voucher.inventories[it - 1]
index = next((idx for (idx, d) in enumerate(new_inventories) if d.id_ == item.id), None) index = next((idx for (idx, d) in enumerate(new_inventories) if d.id_ == item.id), None)
if index is not None: if index is not None:
new_inventory = new_inventories[index] new_inventory = new_inventories.pop(index)
product = db.execute(select(Product).where(Product.id == new_inventory.product.id_)).scalar_one() product = db.execute(select(Product).where(Product.id == new_inventory.product.id_)).scalar_one()
rc_price = rate_contract_price(product.id, vendor_id, voucher.date, db) rc_price = rate_contract_price(product.id, vendor_id, voucher.date, db)
if rc_price is not None and rc_price != new_inventory.rate: if rc_price is not None and rc_price != new_inventory.rate:
@ -258,9 +258,7 @@ def update_inventory(voucher: Voucher, vendor_id: uuid.UUID, new_inventories: Li
item.tax = new_inventory.tax item.tax = new_inventory.tax
item.batch.tax = new_inventory.tax item.batch.tax = new_inventory.tax
product.price = new_inventory.rate product.price = new_inventory.rate
new_inventories.remove(new_inventory)
# TODO: Update all references of the batch with the new rates # TODO: Update all references of the batch with the new rates
break
else: else:
has_been_issued = db.execute( has_been_issued = db.execute(
select(func.count(Inventory.id)).where(Inventory.batch_id == item.batch.id, Inventory.id != item.id) select(func.count(Inventory.id)).where(Inventory.batch_id == item.batch.id, Inventory.id != item.id)