diff --git a/rangeldigital/__pycache__/hooks.cpython-310.pyc b/rangeldigital/__pycache__/hooks.cpython-310.pyc index 9811c15..496f9b5 100644 Binary files a/rangeldigital/__pycache__/hooks.cpython-310.pyc and b/rangeldigital/__pycache__/hooks.cpython-310.pyc differ diff --git a/rangeldigital/hooks.py b/rangeldigital/hooks.py index d1b9a3a..805ef1a 100644 --- a/rangeldigital/hooks.py +++ b/rangeldigital/hooks.py @@ -7,7 +7,9 @@ app_license = "mit" override_doctype_class = { "Sales Invoice": "rangeldigital.rangel_digital.overrides.sales_invoice.SalesInvoice", - "Quotation": "rangeldigital.rangel_digital.overrides.quotation.Quotation" + "Quotation": "rangeldigital.rangel_digital.overrides.quotation.Quotation", + "Project": "rangeldigital.rangel_digital.overrides.project.Project" + } diff --git a/rangeldigital/rangel_digital/overrides/__pycache__/project.cpython-310.pyc b/rangeldigital/rangel_digital/overrides/__pycache__/project.cpython-310.pyc new file mode 100644 index 0000000..36aa08d Binary files /dev/null and b/rangeldigital/rangel_digital/overrides/__pycache__/project.cpython-310.pyc differ diff --git a/rangeldigital/rangel_digital/overrides/project.py b/rangeldigital/rangel_digital/overrides/project.py new file mode 100644 index 0000000..594d5df --- /dev/null +++ b/rangeldigital/rangel_digital/overrides/project.py @@ -0,0 +1,34 @@ +import random +import re +import frappe +from datetime import datetime +from frappe.model.naming import parse_naming_series +from erpnext.projects.doctype.project.project import Project as OriginalProject + +class Project(OriginalProject): + # Change naming covention to PROJ-2025-3812 where 3812 is a random number + def autoname(self): + # Use the series pattern from the doctype or meta + naming_series_pattern = self.naming_series or frappe.get_meta(self.doctype).get_field("naming_series").options.split("\n")[0] + + # Resolve the naming pattern (e.g., PROJ-0001) + parsed_prefix = parse_naming_series(naming_series_pattern) + + # Remove auto-number if present (e.g., strip -0001) + clean_prefix = re.sub(r"[-_]?0*\d+$", "", parsed_prefix) + + # Get current year + current_year = datetime.now().year + + # Generate 4-digit random number + random_part = str(random.randint(1000, 9999)) + + # Combine all parts + name = f"{clean_prefix}-{current_year}-{random_part}" + + # Ensure uniqueness + while frappe.db.exists(self.doctype, name): + random_part = str(random.randint(1000, 9999)) + name = f"{clean_prefix}-{current_year}-{random_part}" + + self.name = name