fix: serial and batch selector and added deprecated decorator
diff --git a/erpnext/public/js/controllers/buying.js b/erpnext/public/js/controllers/buying.js
index 14ea2f8..87a6de0 100644
--- a/erpnext/public/js/controllers/buying.js
+++ b/erpnext/public/js/controllers/buying.js
@@ -363,9 +363,10 @@
new erpnext.SerialBatchPackageSelector(
me.frm, item, (r) => {
if (r) {
- me.frm.refresh_fields();
- frappe.model.set_value(cdt, cdn,
- "serial_and_batch_bundle", r.name);
+ frappe.model.set_value(item.doctype, item.name, {
+ "serial_and_batch_bundle": r.name,
+ "qty": Math.abs(r.total_qty)
+ });
}
}
);
@@ -391,9 +392,10 @@
new erpnext.SerialBatchPackageSelector(
me.frm, item, (r) => {
if (r) {
- me.frm.refresh_fields();
- frappe.model.set_value(cdt, cdn,
- "rejected_serial_and_batch_bundle", r.name);
+ frappe.model.set_value(item.doctype, item.name, {
+ "rejected_serial_and_batch_bundle": r.name,
+ "rejected_qty": Math.abs(r.total_qty)
+ });
}
}
);
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 70c403b..6d05ec4 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -2329,9 +2329,10 @@
new erpnext.SerialBatchPackageSelector(frm, item_row, (r) => {
if (r) {
- frm.refresh_fields();
- frappe.model.set_value(item_row.doctype, item_row.name,
- "serial_and_batch_bundle", r.name);
+ frappe.model.set_value(item_row.doctype, item_row.name, {
+ "serial_and_batch_bundle": r.name,
+ "qty": Math.abs(r.total_qty)
+ });
}
});
});
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index b893231..8c7b2f2 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -226,7 +226,6 @@
based_on: based_on
},
callback: (r) => {
- debugger
if (r.message) {
this.dialog.fields_dict.entries.df.data = r.message;
this.dialog.fields_dict.entries.grid.refresh();
@@ -271,6 +270,7 @@
}
}).then(r => {
this.callback && this.callback(r.message);
+ this.frm.save();
this.dialog.hide();
})
}
diff --git a/erpnext/selling/page/point_of_sale/pos_item_details.js b/erpnext/selling/page/point_of_sale/pos_item_details.js
index 1091c46..e6b2b3b 100644
--- a/erpnext/selling/page/point_of_sale/pos_item_details.js
+++ b/erpnext/selling/page/point_of_sale/pos_item_details.js
@@ -384,9 +384,10 @@
new erpnext.SerialBatchPackageSelector(frm, item_row, (r) => {
if (r) {
- frm.refresh_fields();
- frappe.model.set_value(item_row.doctype, item_row.name,
- "serial_and_batch_bundle", r.name);
+ frappe.model.set_value(item_row.doctype, item_row.name, {
+ "serial_and_batch_bundle": r.name,
+ "qty": Math.abs(r.total_qty)
+ });
}
});
});
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index f8e000a..2ee197b 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -444,11 +444,10 @@
new erpnext.SerialBatchPackageSelector(
me.frm, item, (r) => {
if (r) {
- me.frm.refresh_fields();
- frappe.model.set_value(cdt, cdn,
- "serial_and_batch_bundle", r.name);
-
- me.frm.save();
+ frappe.model.set_value(item.doctype, item.name, {
+ "serial_and_batch_bundle": r.name,
+ "qty": Math.abs(r.total_qty)
+ });
}
}
);
diff --git a/erpnext/stock/deprecated_serial_batch.py b/erpnext/stock/deprecated_serial_batch.py
index ac30f82..8b4279b 100644
--- a/erpnext/stock/deprecated_serial_batch.py
+++ b/erpnext/stock/deprecated_serial_batch.py
@@ -1,11 +1,11 @@
import frappe
from frappe.query_builder.functions import CombineDatetime, Sum
from frappe.utils import flt
+from frappe.utils.deprecations import deprecated
class DeprecatedSerialNoValuation:
- # Will be deprecated in v16
-
+ @deprecated
def calculate_stock_value_from_deprecarated_ledgers(self):
serial_nos = list(
filter(lambda x: x not in self.serial_no_incoming_rate and x, self.get_serial_nos())
@@ -25,6 +25,7 @@
self.stock_value_change += stock_value_change
+ @deprecated
def get_incoming_value_for_serial_nos(self, serial_nos):
# get rate from serial nos within same company
all_serial_nos = frappe.get_all(
@@ -66,12 +67,14 @@
class DeprecatedBatchNoValuation:
+ @deprecated
def calculate_avg_rate_from_deprecarated_ledgers(self):
entries = self.get_sle_for_batches()
for ledger in entries:
self.batch_avg_rate[ledger.batch_no] += flt(ledger.batch_value) / flt(ledger.batch_qty)
self.available_qty[ledger.batch_no] += flt(ledger.batch_qty)
+ @deprecated
def get_sle_for_batches(self):
batch_nos = list(self.batch_nos.keys())
sle = frappe.qb.DocType("Stock Ledger Entry")
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 6ffe5b3..8788e15 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -1116,11 +1116,10 @@
new erpnext.SerialBatchPackageSelector(
frm, item, (r) => {
if (r) {
- frm.refresh_fields();
- frappe.model.set_value(item.doctype, item.name,
- "serial_and_batch_bundle", r.name);
-
- frm.save();
+ frappe.model.set_value(item.doctype, item.name, {
+ "serial_and_batch_bundle": r.name,
+ "qty": Math.abs(r.total_qty)
+ });
}
}
);
diff --git a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
index 483a1f1..858db81 100644
--- a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
+++ b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
@@ -5,6 +5,7 @@
import frappe
from frappe import _
from frappe.utils import cint, flt, getdate
+from frappe.utils.deprecations import deprecated
from pypika import functions as fn
from erpnext.stock.doctype.warehouse.warehouse import apply_warehouse_filter
@@ -68,14 +69,13 @@
def get_stock_ledger_entries(filters):
- # Will be deprecated in v16
entries = get_stock_ledger_entries_for_batch_no(filters)
entries += get_stock_ledger_entries_for_batch_bundle(filters)
return entries
-# get all details
+@deprecated
def get_stock_ledger_entries_for_batch_no(filters):
if not filters.get("from_date"):
frappe.throw(_("'From Date' is required"))