From 7665eac277a1128eb686f97d3038fdd5d27c1063 Mon Sep 17 00:00:00 2001 From: rs-rethik Date: Wed, 11 Dec 2024 12:15:56 +0530 Subject: [PATCH 1/5] feat: change type link to multiselect (cherry picked from commit 4de180feeea20a2f0a2c9c4ba794f1db55f82ed8) --- .../process_statement_of_accounts.json | 6 ++-- .../process_statement_of_accounts.py | 7 ++-- .../__init__.py | 0 .../process_statement_of_accounts_cc.json | 32 +++++++++++++++++++ .../process_statement_of_accounts_cc.py | 23 +++++++++++++ 5 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 erpnext/accounts/doctype/process_statement_of_accounts_cc/__init__.py create mode 100644 erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.json create mode 100644 erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.py diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json index 763607c22a1..ed9a4d84f53 100644 --- a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json +++ b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json @@ -244,9 +244,9 @@ }, { "fieldname": "cc_to", - "fieldtype": "Link", + "fieldtype": "Table MultiSelect", "label": "CC To", - "options": "User" + "options": "Process Statement Of Accounts CC" }, { "default": "1", @@ -400,7 +400,7 @@ } ], "links": [], - "modified": "2024-10-18 17:51:39.108481", + "modified": "2024-12-11 12:11:13.543134", "modified_by": "Administrator", "module": "Accounts", "name": "Process Statement Of Accounts", diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py index bf1c8c0b66e..6910559b8b4 100644 --- a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py +++ b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py @@ -31,6 +31,9 @@ class ProcessStatementOfAccounts(Document): if TYPE_CHECKING: from frappe.types import DF + from erpnext.accounts.doctype.process_statement_of_accounts_cc.process_statement_of_accounts_cc import ( + ProcessStatementOfAccountsCC, + ) from erpnext.accounts.doctype.process_statement_of_accounts_customer.process_statement_of_accounts_customer import ( ProcessStatementOfAccountsCustomer, ) @@ -41,7 +44,7 @@ class ProcessStatementOfAccounts(Document): ageing_based_on: DF.Literal["Due Date", "Posting Date"] based_on_payment_terms: DF.Check body: DF.TextEditor | None - cc_to: DF.Link | None + cc_to: DF.TableMultiSelect[ProcessStatementOfAccountsCC] collection_name: DF.DynamicLink | None company: DF.Link cost_center: DF.TableMultiSelect[PSOACostCenter] @@ -324,7 +327,7 @@ def get_recipients_and_cc(customer, doc): cc = [] if doc.cc_to != "": try: - cc = [frappe.get_value("User", doc.cc_to, "email")] + cc = [frappe.get_value("User", user.cc, "email") for user in doc.cc_to] except Exception: pass diff --git a/erpnext/accounts/doctype/process_statement_of_accounts_cc/__init__.py b/erpnext/accounts/doctype/process_statement_of_accounts_cc/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.json b/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.json new file mode 100644 index 00000000000..c6103048b50 --- /dev/null +++ b/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.json @@ -0,0 +1,32 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2024-12-11 12:10:04.654593", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "cc" + ], + "fields": [ + { + "fieldname": "cc", + "fieldtype": "Link", + "in_list_view": 1, + "label": "CC", + "options": "User" + } + ], + "index_web_pages_for_search": 1, + "istable": 1, + "links": [], + "modified": "2024-12-11 12:10:39.772598", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Process Statement Of Accounts CC", + "owner": "Administrator", + "permissions": [], + "sort_field": "creation", + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.py b/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.py new file mode 100644 index 00000000000..a500b6c89a7 --- /dev/null +++ b/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.py @@ -0,0 +1,23 @@ +# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + + +class ProcessStatementOfAccountsCC(Document): + # begin: auto-generated types + # This code is auto-generated. Do not modify anything in this block. + + from typing import TYPE_CHECKING + + if TYPE_CHECKING: + from frappe.types import DF + + cc: DF.Link | None + parent: DF.Data + parentfield: DF.Data + parenttype: DF.Data + # end: auto-generated types + + pass From df9bc33f34c67ee0200be5e29bb99da09dab34ff Mon Sep 17 00:00:00 2001 From: rs-rethik Date: Wed, 11 Dec 2024 12:17:18 +0530 Subject: [PATCH 2/5] fix: update cc_to multiselect in process statement of accounts (cherry picked from commit 2a6be127ef399566327cdbbc5305e51543ef7a36) # Conflicts: # erpnext/patches.txt --- erpnext/patches.txt | 5 +++++ .../update_cc_in_process_statement_of_accounts.py | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index a916478d4b3..fae3c93e722 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -383,5 +383,10 @@ erpnext.patches.v14_0.update_currency_exchange_settings_for_frankfurter erpnext.patches.v15_0.update_task_assignee_email_field_in_asset_maintenance_log erpnext.patches.v15_0.update_sub_voucher_type_in_gl_entries erpnext.patches.v14_0.update_stock_uom_in_work_order_item +<<<<<<< HEAD erpnext.patches.v15_0.set_is_exchange_gain_loss_in_payment_entry_deductions erpnext.patches.v15_0.enable_allow_existing_serial_no +======= +erpnext.patches.v15_0.enable_allow_existing_serial_no +erpnext.patches.v15_0.update_cc_in_process_statement_of_accounts +>>>>>>> 2a6be127ef (fix: update cc_to multiselect in process statement of accounts) diff --git a/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py b/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py new file mode 100644 index 00000000000..8b9ec0b9d3a --- /dev/null +++ b/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py @@ -0,0 +1,11 @@ +import frappe + + +def execute(): + data = frappe.db.sql( + """SELECT name, cc_to FROM `tabProcess Statement Of Accounts` WHERE cc_to IS NOT NULL""", as_dict=True + ) + for d in data: + doc = frappe.get_doc("Process Statement Of Accounts", d.name) + doc.append("cc_to", {"cc": d.cc_to}) + doc.save() From 082fd27938c4bc5e7fa2eb62dcc81f08cdca173b Mon Sep 17 00:00:00 2001 From: rs-rethik Date: Mon, 16 Dec 2024 11:26:49 +0530 Subject: [PATCH 3/5] refactor: convert sql query to query builder (cherry picked from commit 494ac04f8e189d19cfe7ee81bc6f4429ee136f8a) --- .../update_cc_in_process_statement_of_accounts.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py b/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py index 8b9ec0b9d3a..016aa8f14ea 100644 --- a/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py +++ b/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py @@ -1,10 +1,16 @@ import frappe +from frappe import qb def execute(): - data = frappe.db.sql( - """SELECT name, cc_to FROM `tabProcess Statement Of Accounts` WHERE cc_to IS NOT NULL""", as_dict=True - ) + process_statement_of_accounts = qb.DocType("Process Statement Of Accounts") + + data = ( + frappe.qb.from_(process_statement_of_accounts) + .select(process_statement_of_accounts.name, process_statement_of_accounts.cc_to) + .where(process_statement_of_accounts.cc_to.isnotnull()) + ).run(as_dict=True) + for d in data: doc = frappe.get_doc("Process Statement Of Accounts", d.name) doc.append("cc_to", {"cc": d.cc_to}) From 5b4eb5ea9aa97b1fc03e4b27a6561e2aab76a24e Mon Sep 17 00:00:00 2001 From: rs-rethik Date: Mon, 16 Dec 2024 11:55:34 +0530 Subject: [PATCH 4/5] chore: remove irrelevant import (cherry picked from commit 5401cf964704a4e540f942771882c54a94d6fc08) --- .../v15_0/update_cc_in_process_statement_of_accounts.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py b/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py index 016aa8f14ea..75aa8b9faf1 100644 --- a/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py +++ b/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py @@ -1,9 +1,8 @@ import frappe -from frappe import qb def execute(): - process_statement_of_accounts = qb.DocType("Process Statement Of Accounts") + process_statement_of_accounts = frappe.qb.DocType("Process Statement Of Accounts") data = ( frappe.qb.from_(process_statement_of_accounts) From f9a904c58423074fed8013a20f130d88f6e2f0d8 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Tue, 17 Dec 2024 11:38:37 +0530 Subject: [PATCH 5/5] chore: resolve conflict --- erpnext/patches.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index fae3c93e722..7e03ef9394c 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -383,10 +383,6 @@ erpnext.patches.v14_0.update_currency_exchange_settings_for_frankfurter erpnext.patches.v15_0.update_task_assignee_email_field_in_asset_maintenance_log erpnext.patches.v15_0.update_sub_voucher_type_in_gl_entries erpnext.patches.v14_0.update_stock_uom_in_work_order_item -<<<<<<< HEAD erpnext.patches.v15_0.set_is_exchange_gain_loss_in_payment_entry_deductions erpnext.patches.v15_0.enable_allow_existing_serial_no -======= -erpnext.patches.v15_0.enable_allow_existing_serial_no erpnext.patches.v15_0.update_cc_in_process_statement_of_accounts ->>>>>>> 2a6be127ef (fix: update cc_to multiselect in process statement of accounts)