From 4ad9aa29eef957421f557b879b48452d06cf549d Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 25 Nov 2022 16:23:20 +0530 Subject: [PATCH 1/6] fix: remove duplicate schema (cherry picked from commit 2c18a95115baf3cbc79a2c2d7ba48b862425f159) --- erpnext/templates/generators/item/item.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/templates/generators/item/item.html b/erpnext/templates/generators/item/item.html index 89436343c7a..1f9f6317bb7 100644 --- a/erpnext/templates/generators/item/item.html +++ b/erpnext/templates/generators/item/item.html @@ -32,7 +32,7 @@
-
+
{% if show_tabs and tabs %}
From a716f780a8f0256d9c2a9cc946d2a3e7ebfcc149 Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Wed, 12 Jan 2022 10:03:36 +0530 Subject: [PATCH 2/6] fix: add company filter in RFQ Items (cherry picked from commit ca0485a503aacb7d96700a060bd2367a9d03366a) --- .../doctype/request_for_quotation/request_for_quotation.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js index 3cc25580013..ae0fe0d1e8c 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js @@ -22,6 +22,13 @@ frappe.ui.form.on("Request for Quotation",{ } }; } + + frm.set_query('warehouse', 'items', () => ({ + filters: { + company: frm.doc.company, + is_group: 0 + } + })); }, onload: function(frm) { From 635d80dc2fd51f6a345eb236a8b7654c7077c35e Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Mon, 5 Dec 2022 18:15:13 +0530 Subject: [PATCH 3/6] fix: non empty FG batch picked while completing work order (cherry picked from commit 713330cbf69bf285b6231c0ea603d6156edfde35) --- .../doctype/work_order/test_work_order.py | 24 ++++++++++++++++++- .../stock/doctype/stock_entry/stock_entry.py | 13 +++++----- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py index cfba0fff15e..b349c50794b 100644 --- a/erpnext/manufacturing/doctype/work_order/test_work_order.py +++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py @@ -625,6 +625,10 @@ class TestWorkOrder(FrappeTestCase): bom.submit() bom_name = bom.name + ste1 = test_stock_entry.make_stock_entry( + item_code=rm1, target="_Test Warehouse - _TC", qty=32, basic_rate=5000.0 + ) + work_order = make_wo_order_test_record( item=fg_item, skip_transfer=True, planned_start_date=now(), qty=1 ) @@ -649,11 +653,29 @@ class TestWorkOrder(FrappeTestCase): work_order.insert() work_order.submit() self.assertEqual(work_order.has_batch_no, 1) - ste1 = frappe.get_doc(make_stock_entry(work_order.name, "Manufacture", 30)) + batches = frappe.get_all("Batch", filters={"reference_name": work_order.name}) + self.assertEqual(len(batches), 3) + batches = [batch.name for batch in batches] + + ste1 = frappe.get_doc(make_stock_entry(work_order.name, "Manufacture", 10)) for row in ste1.get("items"): if row.is_finished_item: self.assertEqual(row.item_code, fg_item) self.assertEqual(row.qty, 10) + self.assertTrue(row.batch_no in batches) + batches.remove(row.batch_no) + + ste1.submit() + + remaining_batches = [] + ste1 = frappe.get_doc(make_stock_entry(work_order.name, "Manufacture", 20)) + for row in ste1.get("items"): + if row.is_finished_item: + self.assertEqual(row.item_code, fg_item) + self.assertEqual(row.qty, 10) + remaining_batches.append(row.batch_no) + + self.assertEqual(sorted(remaining_batches), sorted(batches)) frappe.db.set_value("Manufacturing Settings", None, "make_serial_no_batch_from_work_order", 0) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 3dff7d2e003..34c60d1eea5 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -1474,6 +1474,7 @@ class StockEntry(StockController): "reference_name": self.pro_doc.name, "reference_doctype": self.pro_doc.doctype, "qty_to_produce": (">", 0), + "batch_qty": ("=", 0), } fields = ["qty_to_produce as qty", "produced_qty", "name"] @@ -2191,14 +2192,14 @@ class StockEntry(StockController): d.qty -= process_loss_dict[d.item_code][1] def set_serial_no_batch_for_finished_good(self): - args = {} + serial_nos = "" if self.pro_doc.serial_no: - self.get_serial_nos_for_fg(args) + serial_nos = self.get_serial_nos_for_fg() for row in self.items: if row.is_finished_item and row.item_code == self.pro_doc.production_item: - if args.get("serial_no"): - row.serial_no = "\n".join(args["serial_no"][0 : cint(row.qty)]) + if serial_nos: + row.serial_no = "\n".join(serial_nos[0 : cint(row.qty)]) def get_serial_nos_for_fg(self, args): fields = [ @@ -2211,14 +2212,14 @@ class StockEntry(StockController): filters = [ ["Stock Entry", "work_order", "=", self.work_order], ["Stock Entry", "purpose", "=", "Manufacture"], - ["Stock Entry", "docstatus", "=", 1], + ["Stock Entry", "docstatus", "<", 2], ["Stock Entry Detail", "item_code", "=", self.pro_doc.production_item], ] stock_entries = frappe.get_all("Stock Entry", fields=fields, filters=filters) if self.pro_doc.serial_no: - args["serial_no"] = self.get_available_serial_nos(stock_entries) + return self.get_available_serial_nos(stock_entries) def get_available_serial_nos(self, stock_entries): used_serial_nos = [] From 84ef814f452a3997440d622914753d7a3e40e7fd Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Thu, 1 Dec 2022 13:38:41 +0530 Subject: [PATCH 4/6] fix: key error while filtering on date range and different currency (cherry picked from commit 9b8d6fe4119ae6cb7b913ef800e99d9c5d739518) --- erpnext/accounts/report/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/accounts/report/utils.py b/erpnext/accounts/report/utils.py index eed58367739..81fea285151 100644 --- a/erpnext/accounts/report/utils.py +++ b/erpnext/accounts/report/utils.py @@ -28,7 +28,7 @@ def get_currency(filters): filters["presentation_currency"] if filters.get("presentation_currency") else company_currency ) - report_date = filters.get("to_date") + report_date = filters.get("period_end_date") if not report_date: fiscal_year_to_date = get_from_and_to_date(filters.get("to_fiscal_year"))["to_date"] From b3ccad8cf4fb5a30990c66acf3114439fbe77613 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Tue, 6 Dec 2022 13:42:33 +0530 Subject: [PATCH 5/6] fix: replace sql code with fields list in get_cached_value (cherry picked from commit 19db7e2989f36d3dd2f6fce1ea03e21199665b21) --- erpnext/accounts/doctype/fiscal_year/fiscal_year.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py index 069ab5ea843..c3e83ad168f 100644 --- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py +++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py @@ -169,5 +169,6 @@ def auto_create_fiscal_year(): def get_from_and_to_date(fiscal_year): - fields = ["year_start_date as from_date", "year_end_date as to_date"] - return frappe.db.get_value("Fiscal Year", fiscal_year, fields, as_dict=1) + fields = ["year_start_date", "year_end_date"] + cached_results = frappe.get_cached_value("Fiscal Year", fiscal_year, fields, as_dict=1) + return dict(from_date=cached_results.year_start_date, to_date=cached_results.year_end_date) From 0003e0cb5b8ea14e3f0d71a907876f91a75887fe Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Tue, 6 Dec 2022 13:44:54 +0530 Subject: [PATCH 6/6] fix: key error on p/l and balance sheet reports on foreign currency (cherry picked from commit a6794c36062acb7963a387271e2f4b4800643a68) --- erpnext/accounts/report/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/accounts/report/utils.py b/erpnext/accounts/report/utils.py index 81fea285151..d3cd29013f2 100644 --- a/erpnext/accounts/report/utils.py +++ b/erpnext/accounts/report/utils.py @@ -28,7 +28,7 @@ def get_currency(filters): filters["presentation_currency"] if filters.get("presentation_currency") else company_currency ) - report_date = filters.get("period_end_date") + report_date = filters.get("to_date") or filters.get("period_end_date") if not report_date: fiscal_year_to_date = get_from_and_to_date(filters.get("to_fiscal_year"))["to_date"]