From 662e9547daa662fa3e669644479b2a43fb5c2cb7 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Wed, 6 Sep 2023 17:40:19 +0200 Subject: [PATCH] refactor: Remove Regionalisation From France as now there is an App ERPNext France to manage it --- erpnext/regional/__init__.py | 4 +- erpnext/regional/france/__init__.py | 0 erpnext/regional/france/setup.py | 30 -- erpnext/regional/france/utils.py | 8 - .../__init__.py | 0 .../fichier_des_ecritures_comptables_[fec].js | 97 ----- ...ichier_des_ecritures_comptables_[fec].json | 19 - .../fichier_des_ecritures_comptables_[fec].py | 339 ------------------ 8 files changed, 2 insertions(+), 495 deletions(-) delete mode 100644 erpnext/regional/france/__init__.py delete mode 100644 erpnext/regional/france/setup.py delete mode 100644 erpnext/regional/france/utils.py delete mode 100644 erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/__init__.py delete mode 100644 erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].js delete mode 100644 erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].json delete mode 100644 erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].py diff --git a/erpnext/regional/__init__.py b/erpnext/regional/__init__.py index ec2db81124..bd5d540103 100644 --- a/erpnext/regional/__init__.py +++ b/erpnext/regional/__init__.py @@ -10,7 +10,7 @@ from erpnext import get_region def check_deletion_permission(doc, method): region = get_region(doc.company) - if region in ["Nepal", "France"] and doc.docstatus != 0: + if region in ["Nepal"] and doc.docstatus != 0: frappe.throw(_("Deletion is not permitted for country {0}").format(region)) @@ -20,7 +20,7 @@ def create_transaction_log(doc, method): Called on submit of Sales Invoice and Payment Entry. """ region = get_region() - if region not in ["France", "Germany"]: + if region not in ["Germany"]: return data = str(doc.as_dict()) diff --git a/erpnext/regional/france/__init__.py b/erpnext/regional/france/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/erpnext/regional/france/setup.py b/erpnext/regional/france/setup.py deleted file mode 100644 index da772d6b77..0000000000 --- a/erpnext/regional/france/setup.py +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors -# License: GNU General Public License v3. See license.txt - - -import frappe -from frappe.custom.doctype.custom_field.custom_field import create_custom_fields - - -def setup(company=None, patch=True): - make_custom_fields() - add_custom_roles_for_reports() - - -def make_custom_fields(): - custom_fields = { - "Company": [ - dict(fieldname="siren_number", label="SIREN Number", fieldtype="Data", insert_after="website") - ] - } - - create_custom_fields(custom_fields) - - -def add_custom_roles_for_reports(): - report_name = "Fichier des Ecritures Comptables [FEC]" - - if not frappe.db.get_value("Custom Role", dict(report=report_name)): - frappe.get_doc( - dict(doctype="Custom Role", report=report_name, roles=[dict(role="Accounts Manager")]) - ).insert() diff --git a/erpnext/regional/france/utils.py b/erpnext/regional/france/utils.py deleted file mode 100644 index 65dfd2db91..0000000000 --- a/erpnext/regional/france/utils.py +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (c) 2018, Frappe Technologies and contributors -# For license information, please see license.txt - - -# don't remove this function it is used in tests -def test_method(): - """test function""" - return "overridden" diff --git a/erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/__init__.py b/erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].js b/erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].js deleted file mode 100644 index b85b58f636..0000000000 --- a/erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].js +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors -// For license information, please see license.txt - -frappe.query_reports["Fichier des Ecritures Comptables [FEC]"] = { - "filters": [ - { - "fieldname": "company", - "label": __("Company"), - "fieldtype": "Link", - "options": "Company", - "default": frappe.defaults.get_user_default("Company"), - "reqd": 1 - }, - { - "fieldname": "fiscal_year", - "label": __("Fiscal Year"), - "fieldtype": "Link", - "options": "Fiscal Year", - "default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today()), - "reqd": 1 - } - ], - onload: function(query_report) { - query_report.page.add_inner_button(__("Export"), function() { - fec_export(query_report); - }); - - query_report.add_make_chart_button = function() { - // - }; - - query_report.export_report = function() { - fec_export(query_report); - }; - } -}; - -let fec_export = function(query_report) { - const fiscal_year = query_report.get_values().fiscal_year; - const company = query_report.get_values().company; - - frappe.db.get_value("Company", company, "siren_number", (value) => { - const company_data = value.siren_number; - if (company_data === null || company_data === undefined) { - frappe.msgprint(__("Please register the SIREN number in the company information file")); - } else { - frappe.db.get_value("Fiscal Year", fiscal_year, "year_end_date", (r) => { - const fy = r.year_end_date; - const title = company_data + "FEC" + moment(fy).format('YYYYMMDD'); - const column_row = query_report.columns.map(col => col.label); - const column_data = query_report.get_data_for_csv(false); - const result = [column_row].concat(column_data); - downloadify(result, null, title); - }); - - } - }); -}; - -let downloadify = function(data, roles, title) { - if (roles && roles.length && !has_common(roles, roles)) { - frappe.msgprint(__("Export not allowed. You need {0} role to export.", [frappe.utils.comma_or(roles)])); - return; - } - - const filename = title + ".txt"; - let csv_data = to_tab_csv(data); - const a = document.createElement('a'); - - if ("download" in a) { - // Used Blob object, because it can handle large files - let blob_object = new Blob([csv_data], { - type: 'text/csv;charset=UTF-8' - }); - a.href = URL.createObjectURL(blob_object); - a.download = filename; - - } else { - // use old method - a.href = 'data:attachment/csv,' + encodeURIComponent(csv_data); - a.download = filename; - a.target = "_blank"; - } - - document.body.appendChild(a); - a.click(); - - document.body.removeChild(a); -}; - -let to_tab_csv = function(data) { - let res = []; - $.each(data, function(i, row) { - res.push(row.join("\t")); - }); - return res.join("\n"); -}; diff --git a/erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].json b/erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].json deleted file mode 100644 index 9b48e11428..0000000000 --- a/erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "add_total_row": 0, - "apply_user_permissions": 0, - "creation": "2018-01-10 15:10:16.650129", - "disabled": 0, - "docstatus": 0, - "doctype": "Report", - "idx": 0, - "is_standard": "Yes", - "modified": "2018-01-11 10:27:25.595485", - "modified_by": "Administrator", - "module": "Regional", - "name": "Fichier des Ecritures Comptables [FEC]", - "owner": "Administrator", - "ref_doctype": "GL Entry", - "report_name": "Fichier des Ecritures Comptables [FEC]", - "report_type": "Script Report", - "roles": [] -} \ No newline at end of file diff --git a/erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].py b/erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].py deleted file mode 100644 index 6717989008..0000000000 --- a/erpnext/regional/report/fichier_des_ecritures_comptables_[fec]/fichier_des_ecritures_comptables_[fec].py +++ /dev/null @@ -1,339 +0,0 @@ -# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors -# For license information, please see license.txt - -import re - -import frappe -from frappe import _ -from frappe.utils import format_datetime - -COLUMNS = [ - { - "label": "JournalCode", - "fieldname": "JournalCode", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "JournalLib", - "fieldname": "JournalLib", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "EcritureNum", - "fieldname": "EcritureNum", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "EcritureDate", - "fieldname": "EcritureDate", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "CompteNum", - "fieldname": "CompteNum", - "fieldtype": "Link", - "options": "Account", - "width": 100, - }, - { - "label": "CompteLib", - "fieldname": "CompteLib", - "fieldtype": "Link", - "options": "Account", - "width": 200, - }, - { - "label": "CompAuxNum", - "fieldname": "CompAuxNum", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "CompAuxLib", - "fieldname": "CompAuxLib", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "PieceRef", - "fieldname": "PieceRef", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "PieceDate", - "fieldname": "PieceDate", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "EcritureLib", - "fieldname": "EcritureLib", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "Debit", - "fieldname": "Debit", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "Credit", - "fieldname": "Credit", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "EcritureLet", - "fieldname": "EcritureLet", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "DateLet", - "fieldname": "DateLet", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "ValidDate", - "fieldname": "ValidDate", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "Montantdevise", - "fieldname": "Montantdevise", - "fieldtype": "Data", - "width": 90, - }, - { - "label": "Idevise", - "fieldname": "Idevise", - "fieldtype": "Data", - "width": 90, - }, -] - - -def execute(filters=None): - validate_filters(filters) - return COLUMNS, get_result( - company=filters["company"], - fiscal_year=filters["fiscal_year"], - ) - - -def validate_filters(filters): - if not filters.get("company"): - frappe.throw(_("{0} is mandatory").format(_("Company"))) - - if not filters.get("fiscal_year"): - frappe.throw(_("{0} is mandatory").format(_("Fiscal Year"))) - - -def get_gl_entries(company, fiscal_year): - gle = frappe.qb.DocType("GL Entry") - sales_invoice = frappe.qb.DocType("Sales Invoice") - purchase_invoice = frappe.qb.DocType("Purchase Invoice") - journal_entry = frappe.qb.DocType("Journal Entry") - payment_entry = frappe.qb.DocType("Payment Entry") - customer = frappe.qb.DocType("Customer") - supplier = frappe.qb.DocType("Supplier") - employee = frappe.qb.DocType("Employee") - - debit = frappe.query_builder.functions.Sum(gle.debit).as_("debit") - credit = frappe.query_builder.functions.Sum(gle.credit).as_("credit") - debit_currency = frappe.query_builder.functions.Sum(gle.debit_in_account_currency).as_( - "debitCurr" - ) - credit_currency = frappe.query_builder.functions.Sum(gle.credit_in_account_currency).as_( - "creditCurr" - ) - - query = ( - frappe.qb.from_(gle) - .left_join(sales_invoice) - .on(gle.voucher_no == sales_invoice.name) - .left_join(purchase_invoice) - .on(gle.voucher_no == purchase_invoice.name) - .left_join(journal_entry) - .on(gle.voucher_no == journal_entry.name) - .left_join(payment_entry) - .on(gle.voucher_no == payment_entry.name) - .left_join(customer) - .on(gle.party == customer.name) - .left_join(supplier) - .on(gle.party == supplier.name) - .left_join(employee) - .on(gle.party == employee.name) - .select( - gle.posting_date.as_("GlPostDate"), - gle.name.as_("GlName"), - gle.account, - gle.transaction_date, - debit, - credit, - debit_currency, - credit_currency, - gle.voucher_type, - gle.voucher_no, - gle.against_voucher_type, - gle.against_voucher, - gle.account_currency, - gle.against, - gle.party_type, - gle.party, - sales_invoice.name.as_("InvName"), - sales_invoice.title.as_("InvTitle"), - sales_invoice.posting_date.as_("InvPostDate"), - purchase_invoice.name.as_("PurName"), - purchase_invoice.title.as_("PurTitle"), - purchase_invoice.posting_date.as_("PurPostDate"), - journal_entry.cheque_no.as_("JnlRef"), - journal_entry.posting_date.as_("JnlPostDate"), - journal_entry.title.as_("JnlTitle"), - payment_entry.name.as_("PayName"), - payment_entry.posting_date.as_("PayPostDate"), - payment_entry.title.as_("PayTitle"), - customer.customer_name, - customer.name.as_("cusName"), - supplier.supplier_name, - supplier.name.as_("supName"), - employee.employee_name, - employee.name.as_("empName"), - ) - .where((gle.company == company) & (gle.fiscal_year == fiscal_year)) - .groupby(gle.voucher_type, gle.voucher_no, gle.account) - .orderby(gle.posting_date, gle.voucher_no) - ) - - return query.run(as_dict=True) - - -def get_result(company, fiscal_year): - data = get_gl_entries(company, fiscal_year) - - result = [] - - company_currency = frappe.get_cached_value("Company", company, "default_currency") - accounts = frappe.get_all( - "Account", filters={"Company": company}, fields=["name", "account_number"] - ) - - for d in data: - JournalCode = re.split("-|/|[0-9]", d.get("voucher_no"))[0] - - if d.get("voucher_no").startswith("{0}-".format(JournalCode)) or d.get("voucher_no").startswith( - "{0}/".format(JournalCode) - ): - EcritureNum = re.split("-|/", d.get("voucher_no"))[1] - else: - EcritureNum = re.search(r"{0}(\d+)".format(JournalCode), d.get("voucher_no"), re.IGNORECASE)[1] - - EcritureDate = format_datetime(d.get("GlPostDate"), "yyyyMMdd") - - account_number = [ - account.account_number for account in accounts if account.name == d.get("account") - ] - if account_number[0] is not None: - CompteNum = account_number[0] - else: - frappe.throw( - _( - "Account number for account {0} is not available.
Please setup your Chart of Accounts correctly." - ).format(d.get("account")) - ) - - if d.get("party_type") == "Customer": - CompAuxNum = d.get("cusName") - CompAuxLib = d.get("customer_name") - - elif d.get("party_type") == "Supplier": - CompAuxNum = d.get("supName") - CompAuxLib = d.get("supplier_name") - - elif d.get("party_type") == "Employee": - CompAuxNum = d.get("empName") - CompAuxLib = d.get("employee_name") - - elif d.get("party_type") == "Student": - CompAuxNum = d.get("stuName") - CompAuxLib = d.get("student_name") - - elif d.get("party_type") == "Member": - CompAuxNum = d.get("memName") - CompAuxLib = d.get("member_name") - - else: - CompAuxNum = "" - CompAuxLib = "" - - ValidDate = format_datetime(d.get("GlPostDate"), "yyyyMMdd") - - PieceRef = d.get("voucher_no") or "Sans Reference" - - # EcritureLib is the reference title unless it is an opening entry - if d.get("is_opening") == "Yes": - EcritureLib = _("Opening Entry Journal") - if d.get("voucher_type") == "Sales Invoice": - EcritureLib = d.get("InvTitle") - elif d.get("voucher_type") == "Purchase Invoice": - EcritureLib = d.get("PurTitle") - elif d.get("voucher_type") == "Journal Entry": - EcritureLib = d.get("JnlTitle") - elif d.get("voucher_type") == "Payment Entry": - EcritureLib = d.get("PayTitle") - else: - EcritureLib = d.get("voucher_type") - - PieceDate = format_datetime(d.get("GlPostDate"), "yyyyMMdd") - - debit = "{:.2f}".format(d.get("debit")).replace(".", ",") - - credit = "{:.2f}".format(d.get("credit")).replace(".", ",") - - Idevise = d.get("account_currency") - - if Idevise != company_currency: - Montantdevise = ( - "{:.2f}".format(d.get("debitCurr")).replace(".", ",") - if d.get("debitCurr") != 0 - else "{:.2f}".format(d.get("creditCurr")).replace(".", ",") - ) - else: - Montantdevise = ( - "{:.2f}".format(d.get("debit")).replace(".", ",") - if d.get("debit") != 0 - else "{:.2f}".format(d.get("credit")).replace(".", ",") - ) - - row = [ - JournalCode, - d.get("voucher_type"), - EcritureNum, - EcritureDate, - CompteNum, - d.get("account"), - CompAuxNum, - CompAuxLib, - PieceRef, - PieceDate, - EcritureLib, - debit, - credit, - "", - "", - ValidDate, - Montantdevise, - Idevise, - ] - - result.append(row) - - return result