Allow nagative batch balance from landed cost voucher
This commit is contained in:
parent
9768467d53
commit
4ccd8d3326
@ -32,16 +32,15 @@ class StockLedgerEntry(Document):
|
|||||||
|
|
||||||
#check for item quantity available in stock
|
#check for item quantity available in stock
|
||||||
def actual_amt_check(self):
|
def actual_amt_check(self):
|
||||||
if self.batch_no:
|
if self.batch_no and not self.get("allow_negative_stock"):
|
||||||
batch_bal_after_transaction = flt(frappe.db.sql("""select sum(actual_qty)
|
batch_bal_after_transaction = flt(frappe.db.sql("""select sum(actual_qty)
|
||||||
from `tabStock Ledger Entry`
|
from `tabStock Ledger Entry`
|
||||||
where warehouse=%s and item_code=%s and batch_no=%s""",
|
where warehouse=%s and item_code=%s and batch_no=%s""",
|
||||||
(self.warehouse, self.item_code, self.batch_no))[0][0])
|
(self.warehouse, self.item_code, self.batch_no))[0][0])
|
||||||
|
|
||||||
if batch_bal_after_transaction < 0:
|
if batch_bal_after_transaction < 0:
|
||||||
frappe.throw(_("Negative balance {0} in Batch {1} for Item {2} at Warehouse {3} on {4} {5}")
|
frappe.throw(_("Stock balance in Batch {0} will become negative {1} for Item {2} at Warehouse {3}")
|
||||||
.format(batch_bal_after_transaction - self.actual_qty, self.batch_no, self.item_code, self.warehouse,
|
.format(self.batch_no, batch_bal_after_transaction, self.item_code, self.warehouse))
|
||||||
formatdate(self.posting_date), self.posting_time))
|
|
||||||
|
|
||||||
def validate_mandatory(self):
|
def validate_mandatory(self):
|
||||||
mandatory = ['warehouse','posting_date','voucher_type','voucher_no','company']
|
mandatory = ['warehouse','posting_date','voucher_type','voucher_no','company']
|
||||||
|
@ -28,7 +28,7 @@ def make_sl_entries(sl_entries, is_amended=None, allow_negative_stock=False):
|
|||||||
sle['actual_qty'] = -flt(sle['actual_qty'])
|
sle['actual_qty'] = -flt(sle['actual_qty'])
|
||||||
|
|
||||||
if sle.get("actual_qty") or sle.get("voucher_type")=="Stock Reconciliation":
|
if sle.get("actual_qty") or sle.get("voucher_type")=="Stock Reconciliation":
|
||||||
sle_id = make_entry(sle)
|
sle_id = make_entry(sle, allow_negative_stock)
|
||||||
|
|
||||||
args = sle.copy()
|
args = sle.copy()
|
||||||
args.update({
|
args.update({
|
||||||
@ -46,10 +46,11 @@ def set_as_cancel(voucher_type, voucher_no):
|
|||||||
where voucher_no=%s and voucher_type=%s""",
|
where voucher_no=%s and voucher_type=%s""",
|
||||||
(now(), frappe.session.user, voucher_type, voucher_no))
|
(now(), frappe.session.user, voucher_type, voucher_no))
|
||||||
|
|
||||||
def make_entry(args):
|
def make_entry(args, allow_negative_stock=False):
|
||||||
args.update({"doctype": "Stock Ledger Entry"})
|
args.update({"doctype": "Stock Ledger Entry"})
|
||||||
sle = frappe.get_doc(args)
|
sle = frappe.get_doc(args)
|
||||||
sle.ignore_permissions = 1
|
sle.ignore_permissions = 1
|
||||||
|
sle.allow_negative_stock=allow_negative_stock
|
||||||
sle.insert()
|
sle.insert()
|
||||||
sle.submit()
|
sle.submit()
|
||||||
return sle.name
|
return sle.name
|
||||||
|
Loading…
Reference in New Issue
Block a user