From 65104644822683c5cd4774d7411fded24f0e4f1e Mon Sep 17 00:00:00 2001 From: Sagar Sharma Date: Tue, 1 Nov 2022 10:38:33 +0530 Subject: [PATCH 01/48] fix: use `flt` instead of `cint` in `get_batch_no` (cherry picked from commit 9fb3fb4c836aef1d05e9a8160baf7089cd3bb224) --- erpnext/stock/doctype/batch/batch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/batch/batch.py b/erpnext/stock/doctype/batch/batch.py index 52854a0f013..f14288beb20 100644 --- a/erpnext/stock/doctype/batch/batch.py +++ b/erpnext/stock/doctype/batch/batch.py @@ -291,7 +291,7 @@ def get_batch_no(item_code, warehouse, qty=1, throw=False, serial_no=None): batches = get_batches(item_code, warehouse, qty, throw, serial_no) for batch in batches: - if cint(qty) <= cint(batch.qty): + if flt(qty) <= flt(batch.qty): batch_no = batch.batch_id break From a561432908191bd903a8041cee128c0b81c5087c Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Tue, 1 Nov 2022 10:11:38 +0530 Subject: [PATCH 02/48] fix: update advance paid in SO/PO from Payment Ledger (cherry picked from commit 4487065b6716ad3d48982df2d4642aa3b8447a80) --- erpnext/controllers/accounts_controller.py | 40 ++++++++-------------- 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 22291a35441..7f5dc0262da 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -7,7 +7,7 @@ import json import frappe from frappe import _, throw from frappe.model.workflow import get_workflow_name, is_transition_condition_satisfied -from frappe.query_builder.functions import Sum +from frappe.query_builder.functions import Abs, Sum from frappe.utils import ( add_days, add_months, @@ -1334,30 +1334,20 @@ class AccountsController(TransactionBase): return stock_items def set_total_advance_paid(self): - if self.doctype == "Sales Order": - dr_or_cr = "credit_in_account_currency" - rev_dr_or_cr = "debit_in_account_currency" - party = self.customer - else: - dr_or_cr = "debit_in_account_currency" - rev_dr_or_cr = "credit_in_account_currency" - party = self.supplier - - advance = frappe.db.sql( - """ - select - account_currency, sum({dr_or_cr}) - sum({rev_dr_cr}) as amount - from - `tabGL Entry` - where - against_voucher_type = %s and against_voucher = %s and party=%s - and docstatus = 1 - """.format( - dr_or_cr=dr_or_cr, rev_dr_cr=rev_dr_or_cr - ), - (self.doctype, self.name, party), - as_dict=1, - ) # nosec + ple = frappe.qb.DocType("Payment Ledger Entry") + party = self.customer if self.doctype == "Sales Order" else self.supplier + advance = ( + frappe.qb.from_(ple) + .select(ple.account_currency, Abs(Sum(ple.amount)).as_("amount")) + .where( + (ple.against_voucher_type == self.doctype) + & (ple.against_voucher_no == self.name) + & (ple.party == party) + & (ple.delinked == 0) + & (ple.company == self.company) + ) + .run(as_dict=True) + ) if advance: advance = advance[0] From 388cf5113ba1ab074bc3f7e34987003bb0b640c1 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Wed, 2 Nov 2022 15:40:56 +0530 Subject: [PATCH 03/48] test: refactor use @change_settings decorator when possible (cherry picked from commit 81d791eea0eaec86d532a0a248752976eeaf08c2) --- .../doctype/purchase_order/test_purchase_order.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py index 6c1bcc7dd49..e0981c697b0 100644 --- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py @@ -5,7 +5,7 @@ import json import frappe -from frappe.tests.utils import FrappeTestCase +from frappe.tests.utils import FrappeTestCase, change_settings from frappe.utils import add_days, flt, getdate, nowdate from frappe.utils.data import today @@ -709,13 +709,10 @@ class TestPurchaseOrder(FrappeTestCase): pi.insert() self.assertTrue(pi.get("payment_schedule")) + @change_settings("Accounts Settings", {"unlink_advance_payment_on_cancelation_of_order": 1}) def test_advance_payment_entry_unlink_against_purchase_order(self): from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry - frappe.db.set_value( - "Accounts Settings", "Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", 1 - ) - po_doc = create_purchase_order() pe = get_payment_entry("Purchase Order", po_doc.name, bank_account="_Test Bank - _TC") @@ -735,10 +732,6 @@ class TestPurchaseOrder(FrappeTestCase): pe_doc = frappe.get_doc("Payment Entry", pe.name) pe_doc.cancel() - frappe.db.set_value( - "Accounts Settings", "Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", 0 - ) - def test_schedule_date(self): po = create_purchase_order(do_not_submit=True) po.schedule_date = None From 87dc812a4b9ee908de8530e5c0d70d396c1a7724 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Wed, 2 Nov 2022 15:43:45 +0530 Subject: [PATCH 04/48] test: PO advance paid on payment submission and cancellation (cherry picked from commit 1a0a8ac7e238ab3ca912b0912e76b1de69ace363) --- .../purchase_order/test_purchase_order.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py index e0981c697b0..5a96131157b 100644 --- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py @@ -732,6 +732,32 @@ class TestPurchaseOrder(FrappeTestCase): pe_doc = frappe.get_doc("Payment Entry", pe.name) pe_doc.cancel() + @change_settings("Accounts Settings", {"unlink_advance_payment_on_cancelation_of_order": 1}) + def test_advance_paid_upon_payment_entry_cancellation(self): + from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry + + po_doc = create_purchase_order() + + pe = get_payment_entry("Purchase Order", po_doc.name, bank_account="_Test Bank - _TC") + pe.reference_no = "1" + pe.reference_date = nowdate() + pe.paid_from_account_currency = po_doc.currency + pe.paid_to_account_currency = po_doc.currency + pe.source_exchange_rate = 1 + pe.target_exchange_rate = 1 + pe.paid_amount = po_doc.grand_total + pe.save(ignore_permissions=True) + pe.submit() + + po_doc.reload() + self.assertEqual(po_doc.advance_paid, po_doc.base_grand_total) + + pe_doc = frappe.get_doc("Payment Entry", pe.name) + pe_doc.cancel() + + po_doc.reload() + self.assertEqual(po_doc.advance_paid, 0) + def test_schedule_date(self): po = create_purchase_order(do_not_submit=True) po.schedule_date = None From cf32e1905c65195191e3788ba2897376c735ba6e Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Wed, 2 Nov 2022 15:54:23 +0530 Subject: [PATCH 05/48] test: SO advance paid on Payment submission and cancellation (cherry picked from commit 721ac6b847ed56943621697123359d7d37360a3e) --- .../doctype/sales_order/test_sales_order.py | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py index adfb39c1ae9..dfa341b1fc7 100644 --- a/erpnext/selling/doctype/sales_order/test_sales_order.py +++ b/erpnext/selling/doctype/sales_order/test_sales_order.py @@ -6,7 +6,7 @@ import json import frappe import frappe.permissions from frappe.core.doctype.user_permission.test_user_permission import create_user -from frappe.tests.utils import FrappeTestCase +from frappe.tests.utils import FrappeTestCase, change_settings from frappe.utils import add_days, flt, getdate, nowdate, today from erpnext.controllers.accounts_controller import update_child_qty_rate @@ -1346,6 +1346,33 @@ class TestSalesOrder(FrappeTestCase): self.assertRaises(frappe.LinkExistsError, so_doc.cancel) + @change_settings("Accounts Settings", {"unlink_advance_payment_on_cancelation_of_order": 1}) + def test_advance_paid_upon_payment_cancellation(self): + from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry + + so = make_sales_order() + + pe = get_payment_entry("Sales Order", so.name, bank_account="_Test Bank - _TC") + pe.reference_no = "1" + pe.reference_date = nowdate() + pe.paid_from_account_currency = so.currency + pe.paid_to_account_currency = so.currency + pe.source_exchange_rate = 1 + pe.target_exchange_rate = 1 + pe.paid_amount = so.grand_total + pe.save(ignore_permissions=True) + pe.submit() + so.reload() + + self.assertEqual(so.advance_paid, so.base_grand_total) + + # cancel advance payment + pe.reload() + pe.cancel() + + so.reload() + self.assertEqual(so.advance_paid, 0) + def test_cancel_sales_order_after_cancel_payment_entry(self): from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry From 0feec4ca8a630471371e83fb4005037d0c6e1f41 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Tue, 1 Nov 2022 19:30:37 +0530 Subject: [PATCH 06/48] fix: test cases (cherry picked from commit ddd1b4be3ff1daea9e9abc922c62c4abea5be951) --- erpnext/stock/doctype/material_request/test_material_request.py | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py index 78af1532ea8..005480e3996 100644 --- a/erpnext/stock/doctype/material_request/test_material_request.py +++ b/erpnext/stock/doctype/material_request/test_material_request.py @@ -591,6 +591,7 @@ class TestMaterialRequest(FrappeTestCase): mr.material_request_type = "Material Issue" mr.submit() + self.assertTrue(frappe.db.exists("Material Request", mr.name)) # testing bin value after material request is submitted self.assertEqual(_get_requested_qty(), existing_requested_qty - 54.0) From d3fbe3074dcdb9cedc7b91df2ff3de2e470324b0 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Tue, 1 Nov 2022 19:56:55 +0530 Subject: [PATCH 07/48] test: run tmate (cherry picked from commit 3f2728e3f7645080b20a6835da6bb39bbd084b11) --- erpnext/stock/doctype/material_request/test_material_request.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py index 005480e3996..f02462c5965 100644 --- a/erpnext/stock/doctype/material_request/test_material_request.py +++ b/erpnext/stock/doctype/material_request/test_material_request.py @@ -590,8 +590,8 @@ class TestMaterialRequest(FrappeTestCase): mr = frappe.copy_doc(test_records[0]) mr.material_request_type = "Material Issue" mr.submit() + frappe.db.value_cache = {} - self.assertTrue(frappe.db.exists("Material Request", mr.name)) # testing bin value after material request is submitted self.assertEqual(_get_requested_qty(), existing_requested_qty - 54.0) From b8caa587d2296cf856122bb2f57a85263a9a69f1 Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Tue, 25 Oct 2022 21:54:55 -0600 Subject: [PATCH 08/48] fix: add translate function to name of chart labels in deferred_revenue_and_expense.py (cherry picked from commit a963618b08f90408bdcaeaa033cb7cbe1f481232) --- .../deferred_revenue_and_expense.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py b/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py index 1eb257ac853..6cc86c3efec 100644 --- a/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py +++ b/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py @@ -396,7 +396,7 @@ class Deferred_Revenue_and_Expense_Report(object): "labels": [period.label for period in self.period_list], "datasets": [ { - "name": "Actual Posting", + "name": _("Actual Posting"), "chartType": "bar", "values": [x.actual for x in self.period_total], } @@ -410,7 +410,7 @@ class Deferred_Revenue_and_Expense_Report(object): if self.filters.with_upcoming_postings: chart["data"]["datasets"].append( - {"name": "Expected", "chartType": "line", "values": [x.total for x in self.period_total]} + {"name": _("Expected"), "chartType": "line", "values": [x.total for x in self.period_total]} ) return chart From 2dc24f22ea6762e9e6fb4f1a9bb73dca45433ed7 Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Tue, 25 Oct 2022 22:00:46 -0600 Subject: [PATCH 09/48] fix: refactor code for better translatable string (cherry picked from commit a671652ab2ebb5d25aa45d979d1c3c8b3861efcf) --- .../accounts/report/accounts_receivable/accounts_receivable.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py index f2ee1eb10ea..a195c575866 100755 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py @@ -1009,7 +1009,7 @@ class ReceivablePayableReport(object): "{range3}-{range4}".format( range3=cint(self.filters["range3"]) + 1, range4=self.filters["range4"] ), - "{range4}-{above}".format(range4=cint(self.filters["range4"]) + 1, above=_("Above")), + _("{range4}-Above").format(range4=cint(self.filters["range4"]) + 1), ] ): self.add_column(label=label, fieldname="range" + str(i + 1)) From 0ead51642f718d08c7345ff78ffc844fd1de5071 Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Tue, 25 Oct 2022 22:05:25 -0600 Subject: [PATCH 10/48] fix: refactor code for better translatable string in stock_ageing.py (cherry picked from commit 71a0ae2e596538de3cac07839d4e03cf24f7e1bd) --- erpnext/stock/report/stock_ageing/stock_ageing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py index 7c430e491ab..944433103f2 100644 --- a/erpnext/stock/report/stock_ageing/stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/stock_ageing.py @@ -198,11 +198,11 @@ def setup_ageing_columns(filters: Filters, range_columns: List): f"0 - {filters['range1']}", f"{cint(filters['range1']) + 1} - {cint(filters['range2'])}", f"{cint(filters['range2']) + 1} - {cint(filters['range3'])}", - f"{cint(filters['range3']) + 1} - {_('Above')}", + _("{0} - Above").format(cint(filters['range3']) + 1), ] for i, label in enumerate(ranges): fieldname = "range" + str(i + 1) - add_column(range_columns, label=f"Age ({label})", fieldname=fieldname) + add_column(range_columns, label=_("Age ({0})").format(label), fieldname=fieldname) def add_column( From b0c06d5a04adb12704fa1c10e35cca329dedc594 Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Tue, 25 Oct 2022 22:09:02 -0600 Subject: [PATCH 11/48] fix: add translate function to period in stock_analytics.py (cherry picked from commit c1e608d9ef84b4b9e765b84482b666554c98220c) --- erpnext/stock/report/stock_analytics/stock_analytics.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/erpnext/stock/report/stock_analytics/stock_analytics.py b/erpnext/stock/report/stock_analytics/stock_analytics.py index 89ca9d9126e..175c479ddae 100644 --- a/erpnext/stock/report/stock_analytics/stock_analytics.py +++ b/erpnext/stock/report/stock_analytics/stock_analytics.py @@ -114,11 +114,11 @@ def get_period(posting_date, filters): months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] if filters.range == "Weekly": - period = "Week " + str(posting_date.isocalendar()[1]) + " " + str(posting_date.year) + period = _("Week {0} {1}").format(str(posting_date.isocalendar()[1]), str(posting_date.year)) elif filters.range == "Monthly": - period = str(months[posting_date.month - 1]) + " " + str(posting_date.year) + period = _(str(months[posting_date.month - 1])) + " " + str(posting_date.year) elif filters.range == "Quarterly": - period = "Quarter " + str(((posting_date.month - 1) // 3) + 1) + " " + str(posting_date.year) + period = _("Quarter {0} {1}").format(str(((posting_date.month - 1) // 3) + 1), str(posting_date.year)) else: year = get_fiscal_year(posting_date, company=filters.company) period = str(year[2]) From e681f068832384ee55e8eb170ce6a637a902a81d Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Tue, 25 Oct 2022 22:17:06 -0600 Subject: [PATCH 12/48] fix: add translate function to period in sales_analytics.py (cherry picked from commit 083a78135c04af032ca5665e6b451876a4b758ed) --- erpnext/selling/report/sales_analytics/sales_analytics.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/erpnext/selling/report/sales_analytics/sales_analytics.py b/erpnext/selling/report/sales_analytics/sales_analytics.py index 9d7d806c716..7dfb7d0d220 100644 --- a/erpnext/selling/report/sales_analytics/sales_analytics.py +++ b/erpnext/selling/report/sales_analytics/sales_analytics.py @@ -313,11 +313,11 @@ class Analytics(object): def get_period(self, posting_date): if self.filters.range == "Weekly": - period = "Week " + str(posting_date.isocalendar()[1]) + " " + str(posting_date.year) + period = _("Week {0} {1}").format(str(posting_date.isocalendar()[1]), str(posting_date.year)) elif self.filters.range == "Monthly": - period = str(self.months[posting_date.month - 1]) + " " + str(posting_date.year) + period = _(str(self.months[posting_date.month - 1])) + " " + str(posting_date.year) elif self.filters.range == "Quarterly": - period = "Quarter " + str(((posting_date.month - 1) // 3) + 1) + " " + str(posting_date.year) + period = _("Quarter {0} {1}").format(str(((posting_date.month - 1) // 3) + 1), str(posting_date.year)) else: year = get_fiscal_year(posting_date, company=self.filters.company) period = str(year[0]) From 16f364da37c4a67cdee1a00714a3560b155ef9fe Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Tue, 25 Oct 2022 22:18:47 -0600 Subject: [PATCH 13/48] fix: add translate function to name of chart labels in budget_variance_report.py (cherry picked from commit 48ed6381b374032a3d46f4afb3f3252ba83c2580) --- .../report/budget_variance_report/budget_variance_report.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py index 7b774ba740b..96cfab9f11f 100644 --- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py +++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py @@ -383,8 +383,8 @@ def get_chart_data(filters, columns, data): "data": { "labels": labels, "datasets": [ - {"name": "Budget", "chartType": "bar", "values": budget_values}, - {"name": "Actual Expense", "chartType": "bar", "values": actual_values}, + {"name": _("Budget"), "chartType": "bar", "values": budget_values}, + {"name": _("Actual Expense"), "chartType": "bar", "values": actual_values}, ], }, "type": "bar", From 595aaad99d5956f6345a6dadfd1994a12ac0bf26 Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Tue, 25 Oct 2022 22:24:33 -0600 Subject: [PATCH 14/48] fix: add translate function to string on budget_variance_report.js to match the variance word translated (cherry picked from commit 2012bdf4bd8d1cead09de99e5b9a68aa8a9990ef) --- .../report/budget_variance_report/budget_variance_report.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/accounts/report/budget_variance_report/budget_variance_report.js b/erpnext/accounts/report/budget_variance_report/budget_variance_report.js index 718b6e2fcb6..5955c2e0fc9 100644 --- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.js +++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.js @@ -75,7 +75,7 @@ frappe.query_reports["Budget Variance Report"] = { "formatter": function (value, row, column, data, default_formatter) { value = default_formatter(value, row, column, data); - if (column.fieldname.includes('variance')) { + if (column.fieldname.includes(__("variance"))) { if (data[column.fieldname] < 0) { value = "" + value + ""; From 5acc9be5c931aaa22b17be36b581068501d10c87 Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Tue, 25 Oct 2022 22:34:21 -0600 Subject: [PATCH 15/48] fix: correct linters (cherry picked from commit b7b53b58574de501410a80fab02073291d9a5fc4) --- erpnext/selling/report/sales_analytics/sales_analytics.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/erpnext/selling/report/sales_analytics/sales_analytics.py b/erpnext/selling/report/sales_analytics/sales_analytics.py index 7dfb7d0d220..b08f1deefe3 100644 --- a/erpnext/selling/report/sales_analytics/sales_analytics.py +++ b/erpnext/selling/report/sales_analytics/sales_analytics.py @@ -317,7 +317,9 @@ class Analytics(object): elif self.filters.range == "Monthly": period = _(str(self.months[posting_date.month - 1])) + " " + str(posting_date.year) elif self.filters.range == "Quarterly": - period = _("Quarter {0} {1}").format(str(((posting_date.month - 1) // 3) + 1), str(posting_date.year)) + period = _("Quarter {0} {1}").format( + str(((posting_date.month - 1) // 3) + 1), str(posting_date.year) + ) else: year = get_fiscal_year(posting_date, company=self.filters.company) period = str(year[0]) From 440e20859f1b26e253141652d9a4c1bca06165de Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Tue, 25 Oct 2022 22:35:37 -0600 Subject: [PATCH 16/48] fix: correct linters (cherry picked from commit 9c529c61bb90ac7827e8448b90e33b812a9f7093) --- erpnext/stock/report/stock_analytics/stock_analytics.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/report/stock_analytics/stock_analytics.py b/erpnext/stock/report/stock_analytics/stock_analytics.py index 175c479ddae..27b94ab3f96 100644 --- a/erpnext/stock/report/stock_analytics/stock_analytics.py +++ b/erpnext/stock/report/stock_analytics/stock_analytics.py @@ -118,7 +118,9 @@ def get_period(posting_date, filters): elif filters.range == "Monthly": period = _(str(months[posting_date.month - 1])) + " " + str(posting_date.year) elif filters.range == "Quarterly": - period = _("Quarter {0} {1}").format(str(((posting_date.month - 1) // 3) + 1), str(posting_date.year)) + period = _("Quarter {0} {1}").format( + str(((posting_date.month - 1) // 3) + 1), str(posting_date.year) + ) else: year = get_fiscal_year(posting_date, company=filters.company) period = str(year[2]) From 8f6f9a429a3131ee3bdab4836775223bb4a4b1b4 Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Tue, 25 Oct 2022 22:39:05 -0600 Subject: [PATCH 17/48] fix: correct linters (cherry picked from commit 4c7fa9482d81ec0794c69570371e4b923d188f5f) --- erpnext/stock/report/stock_ageing/stock_ageing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py index 944433103f2..2fa97ae3545 100644 --- a/erpnext/stock/report/stock_ageing/stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/stock_ageing.py @@ -198,7 +198,7 @@ def setup_ageing_columns(filters: Filters, range_columns: List): f"0 - {filters['range1']}", f"{cint(filters['range1']) + 1} - {cint(filters['range2'])}", f"{cint(filters['range2']) + 1} - {cint(filters['range3'])}", - _("{0} - Above").format(cint(filters['range3']) + 1), + _("{0} - Above").format(cint(filters["range3"]) + 1), ] for i, label in enumerate(ranges): fieldname = "range" + str(i + 1) From 01a1c963148b60d23dbdd66638d6b8d2a5456b2c Mon Sep 17 00:00:00 2001 From: anandbaburajan Date: Mon, 31 Oct 2022 12:41:37 +0530 Subject: [PATCH 18/48] fix: for asset's purchase_date, if bill_date is set, use that instead of posting_date (cherry picked from commit f322c608cf7acbb8c5928f151876a2e5ddc13595) --- erpnext/assets/doctype/asset/asset.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js index 5512d4159d8..7e542197407 100644 --- a/erpnext/assets/doctype/asset/asset.js +++ b/erpnext/assets/doctype/asset/asset.js @@ -432,7 +432,11 @@ frappe.ui.form.on('Asset', { set_values_from_purchase_doc: function(frm, doctype, purchase_doc) { frm.set_value('company', purchase_doc.company); - frm.set_value('purchase_date', purchase_doc.posting_date); + if (purchase_doc.bill_date) { + frm.set_value('purchase_date', purchase_doc.bill_date); + } else { + frm.set_value('purchase_date', purchase_doc.posting_date); + } const item = purchase_doc.items.find(item => item.item_code === frm.doc.item_code); if (!item) { doctype_field = frappe.scrub(doctype) From 4d9bbd4c9c06811086e0ae4e2c16763fe7d171a3 Mon Sep 17 00:00:00 2001 From: Bhavesh Maheshwari <34086262+bhavesh95863@users.noreply.github.com> Date: Thu, 3 Nov 2022 10:59:20 +0530 Subject: [PATCH 19/48] fix: mysql syntax issue --- erpnext/stock/doctype/pick_list/pick_list.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py index 9c1c7e56796..8bad9bc272f 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.py +++ b/erpnext/stock/doctype/pick_list/pick_list.py @@ -699,7 +699,8 @@ def get_pending_work_orders(doctype, txt, searchfield, start, page_length, filte AND `company` = %(company)s AND `name` like %(txt)s ORDER BY - (case when locate(%(_txt)s, name) > 0 then locate(%(_txt)s, name) else 99999 end) name + (case when locate(%(_txt)s, name) > 0 then locate(%(_txt)s, name) else 99999 end), + name LIMIT %(start)s, %(page_length)s""", { From 6989cdf4f2c327bcc7565ce70a51b794a83f5c94 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Thu, 3 Nov 2022 11:24:58 +0530 Subject: [PATCH 20/48] fix: not able to select customer / supplier (cherry picked from commit b0fc568c80ec5bead83fc0bc61be78e95ba24813) --- erpnext/buying/doctype/supplier/test_supplier.py | 4 ++++ erpnext/controllers/queries.py | 4 ++-- erpnext/selling/doctype/customer/test_customer.py | 4 ++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/erpnext/buying/doctype/supplier/test_supplier.py b/erpnext/buying/doctype/supplier/test_supplier.py index e2dbf21be2c..b9fc344647b 100644 --- a/erpnext/buying/doctype/supplier/test_supplier.py +++ b/erpnext/buying/doctype/supplier/test_supplier.py @@ -156,6 +156,8 @@ class TestSupplier(FrappeTestCase): def test_serach_fields_for_supplier(self): from erpnext.controllers.queries import supplier_query + frappe.db.set_value("Buying Settings", None, "supp_master_name", "Naming Series") + supplier_name = create_supplier(supplier_name="Test Supplier 1").name make_property_setter( @@ -187,6 +189,8 @@ class TestSupplier(FrappeTestCase): self.assertEqual(data[0].supplier_type, "Company") self.assertTrue("supplier_type" in data[0]) + frappe.db.set_value("Buying Settings", None, "supp_master_name", "Supplier Name") + def create_supplier(**args): args = frappe._dict(args) diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py index 3bdc0170682..b0cf7241669 100644 --- a/erpnext/controllers/queries.py +++ b/erpnext/controllers/queries.py @@ -85,7 +85,7 @@ def customer_query(doctype, txt, searchfield, start, page_len, filters, as_dict= fields = ["name"] if cust_master_name != "Customer Name": - fields = ["customer_name"] + fields.append("customer_name") fields = get_fields(doctype, fields) searchfields = frappe.get_meta(doctype).get_search_fields() @@ -123,7 +123,7 @@ def supplier_query(doctype, txt, searchfield, start, page_len, filters, as_dict= fields = ["name"] if supp_master_name != "Supplier Name": - fields = ["supplier_name"] + fields.append("supplier_name") fields = get_fields(doctype, fields) diff --git a/erpnext/selling/doctype/customer/test_customer.py b/erpnext/selling/doctype/customer/test_customer.py index 691adccd4dd..a621c737ed3 100644 --- a/erpnext/selling/doctype/customer/test_customer.py +++ b/erpnext/selling/doctype/customer/test_customer.py @@ -345,6 +345,8 @@ class TestCustomer(FrappeTestCase): def test_serach_fields_for_customer(self): from erpnext.controllers.queries import customer_query + frappe.db.set_value("Selling Settings", None, "cust_master_name", "Naming Series") + make_property_setter( "Customer", None, "search_fields", "customer_group", "Data", for_doctype="Doctype" ) @@ -369,6 +371,8 @@ class TestCustomer(FrappeTestCase): self.assertEqual(data[0].territory, "_Test Territory") self.assertTrue("territory" in data[0]) + frappe.db.set_value("Selling Settings", None, "cust_master_name", "Customer Name") + def get_customer_dict(customer_name): return { From e334b7dfeeccc018a141496f632d36469fb0fc5f Mon Sep 17 00:00:00 2001 From: Ernesto Ruiz Date: Thu, 3 Nov 2022 13:36:01 -0600 Subject: [PATCH 21/48] chore: add translation function to Bank Reconciliation Tool related files chore: add translation function to Bank Reconciliation Tool related files (cherry picked from commit ad0dd693ac4e5441f26f2ab3af1c6aa1d55426df) --- .../bank_reconciliation_tool.js | 3 ++ .../bank_reconciliation_tool.json | 5 ++- .../bank_statement_import.js | 2 +- .../data_table_manager.js | 24 ++++++------- .../dialog_manager.js | 34 ++++++------------- .../bank_reconciliation_tool/number_card.js | 6 ++-- 6 files changed, 32 insertions(+), 42 deletions(-) diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js index 46ba27c004d..28e79b5d2c6 100644 --- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js +++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js @@ -12,6 +12,9 @@ frappe.ui.form.on("Bank Reconciliation Tool", { }, }; }); + let no_bank_transactions_text = + `
${__("No Matching Bank Transactions Found")}
` + set_field_options("no_bank_transactions", no_bank_transactions_text); }, onload: function (frm) { diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json index b643e6e0912..f666101d3fd 100644 --- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json +++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.json @@ -81,8 +81,7 @@ }, { "fieldname": "no_bank_transactions", - "fieldtype": "HTML", - "options": "
No Matching Bank Transactions Found
" + "fieldtype": "HTML" } ], "hide_toolbar": 1, @@ -109,4 +108,4 @@ "quick_entry": 1, "sort_field": "modified", "sort_order": "DESC" -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.js b/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.js index f74562086ef..04af32346bb 100644 --- a/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.js +++ b/erpnext/accounts/doctype/bank_statement_import/bank_statement_import.js @@ -100,7 +100,7 @@ frappe.ui.form.on("Bank Statement Import", { if (frm.doc.status.includes("Success")) { frm.add_custom_button( - __("Go to {0} List", [frm.doc.reference_doctype]), + __("Go to {0} List", [__(frm.doc.reference_doctype)]), () => frappe.set_route("List", frm.doc.reference_doctype) ); } diff --git a/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js b/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js index 5bb58faf2fc..9ef8ce6b63e 100644 --- a/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js +++ b/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js @@ -30,28 +30,28 @@ erpnext.accounts.bank_reconciliation.DataTableManager = class DataTableManager { get_dt_columns() { this.columns = [ { - name: "Date", + name: __("Date"), editable: false, width: 100, }, { - name: "Party Type", + name: __("Party Type"), editable: false, width: 95, }, { - name: "Party", + name: __("Party"), editable: false, width: 100, }, { - name: "Description", + name: __("Description"), editable: false, width: 350, }, { - name: "Deposit", + name: __("Deposit"), editable: false, width: 100, format: (value) => @@ -60,7 +60,7 @@ erpnext.accounts.bank_reconciliation.DataTableManager = class DataTableManager { "", }, { - name: "Withdrawal", + name: __("Withdrawal"), editable: false, width: 100, format: (value) => @@ -69,26 +69,26 @@ erpnext.accounts.bank_reconciliation.DataTableManager = class DataTableManager { "", }, { - name: "Unallocated Amount", + name: __("Unallocated Amount"), editable: false, width: 100, format: (value) => - "" + + "" + format_currency(value, this.currency) + "", }, { - name: "Reference Number", + name: __("Reference Number"), editable: false, width: 140, }, { - name: "Actions", + name: __("Actions"), editable: false, sortable: false, focusable: false, dropdown: false, - width: 80, + width: 100, }, ]; } @@ -118,7 +118,7 @@ erpnext.accounts.bank_reconciliation.DataTableManager = class DataTableManager { row["reference_number"], `