[fix] Get fifo rate only qty exists in batch
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index a5deb30..c92663f 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -300,22 +300,22 @@
# select first batch or the batch with same rate
batch = self.stock_queue[index]
+ if batch[0]:
+ if qty_to_pop >= batch[0]:
+ # consume current batch
+ qty_to_pop = qty_to_pop - batch[0]
+ self.stock_queue.pop(index)
+ if not self.stock_queue and qty_to_pop:
+ # stock finished, qty still remains to be withdrawn
+ # negative stock, keep in as a negative batch
+ self.stock_queue.append([-qty_to_pop, outgoing_rate or batch[1]])
+ break
- if qty_to_pop >= batch[0]:
- # consume current batch
- qty_to_pop = qty_to_pop - batch[0]
- self.stock_queue.pop(index)
- if not self.stock_queue and qty_to_pop:
- # stock finished, qty still remains to be withdrawn
- # negative stock, keep in as a negative batch
- self.stock_queue.append([-qty_to_pop, outgoing_rate or batch[1]])
- break
-
- else:
- # qty found in current batch
- # consume it and exit
- batch[0] = batch[0] - qty_to_pop
- qty_to_pop = 0
+ else:
+ # qty found in current batch
+ # consume it and exit
+ batch[0] = batch[0] - qty_to_pop
+ qty_to_pop = 0
stock_value = sum((flt(batch[0]) * flt(batch[1]) for batch in self.stock_queue))
stock_qty = sum((flt(batch[0]) for batch in self.stock_queue))