Setting preferred driver email in delivery trip (#19832)
* fix: add driver's preferred contact email in delivery trip
* fix: modify driver's preferred email patch and blank field checks
* fix: patch file fix
* fix: patch changes to improve speed
* fix: removal of conflicts
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index 242531b..4d49503 100755
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -164,6 +164,12 @@
if self.personal_email:
validate_email_address(self.personal_email, True)
+ def set_preferred_email(self):
+ preferred_email_field = frappe.scrub(self.prefered_contact_email)
+ if preferred_email_field:
+ preferred_email = self.get(preferred_email_field)
+ self.prefered_email = preferred_email
+
def validate_status(self):
if self.status == 'Left':
reports_to = frappe.db.get_all('Employee',
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index ab8e942..89be499 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -649,6 +649,7 @@
erpnext.patches.v12_0.remove_denied_leaves_from_leave_ledger
erpnext.patches.v12_0.update_price_or_product_discount
erpnext.patches.v12_0.set_production_capacity_in_workstation
+erpnext.patches.v12_0.set_employee_preferred_emails
erpnext.patches.v12_0.set_against_blanket_order_in_sales_and_purchase_order
erpnext.patches.v12_0.set_cost_center_in_child_table_of_expense_claim
erpnext.patches.v12_0.set_lead_title_field
diff --git a/erpnext/patches/v12_0/set_employee_preferred_emails.py b/erpnext/patches/v12_0/set_employee_preferred_emails.py
new file mode 100644
index 0000000..2763561
--- /dev/null
+++ b/erpnext/patches/v12_0/set_employee_preferred_emails.py
@@ -0,0 +1,16 @@
+import frappe
+
+
+def execute():
+ employees = frappe.get_all("Employee",
+ filters={"prefered_email": ""},
+ fields=["name", "prefered_contact_email", "company_email", "personal_email", "user_id"])
+
+ for employee in employees:
+ preferred_email_field = frappe.scrub(employee.prefered_contact_email)
+
+ if not preferred_email_field:
+ continue
+
+ preferred_email = employee.get(preferred_email_field)
+ frappe.db.set_value("Employee", employee.name, "prefered_email", preferred_email, update_modified=False)
diff --git a/erpnext/stock/doctype/delivery_trip/delivery_trip.js b/erpnext/stock/doctype/delivery_trip/delivery_trip.js
index 6a7eecf..a025f06 100755
--- a/erpnext/stock/doctype/delivery_trip/delivery_trip.js
+++ b/erpnext/stock/doctype/delivery_trip/delivery_trip.js
@@ -79,6 +79,21 @@
}, () => {
frm.reload_doc();
});
+ },
+
+ driver: function (frm) {
+ if (frm.doc.driver) {
+ frappe.call({
+ method: "erpnext.stock.doctype.delivery_trip.delivery_trip.get_driver_email",
+ args: {
+ driver: frm.doc.driver
+ },
+ callback: (data) => {
+ frm.set_value("driver_email", data.message.email);
+ }
+ });
+ };
+ },
},
@@ -196,4 +211,4 @@
frappe.model.set_value(cdt, cdn, "customer_contact", "");
}
}
-});
\ No newline at end of file
+});
diff --git a/erpnext/stock/doctype/delivery_trip/delivery_trip.json b/erpnext/stock/doctype/delivery_trip/delivery_trip.json
index 0a52624..1bacf46 100644
--- a/erpnext/stock/doctype/delivery_trip/delivery_trip.json
+++ b/erpnext/stock/doctype/delivery_trip/delivery_trip.json
@@ -1,4 +1,5 @@
{
+ "actions": [],
"autoname": "naming_series:",
"creation": "2017-10-16 16:45:48.293335",
"doctype": "DocType",
@@ -13,6 +14,7 @@
"section_break_3",
"driver",
"driver_name",
+ "driver_email",
"driver_address",
"total_distance",
"uom",
@@ -167,10 +169,17 @@
"fieldtype": "Link",
"label": "Driver Address",
"options": "Address"
+ },
+ {
+ "fieldname": "driver_email",
+ "fieldtype": "Data",
+ "label": "Driver Email",
+ "read_only": 1
}
],
"is_submittable": 1,
- "modified": "2019-09-27 15:43:01.975139",
+ "links": [],
+ "modified": "2019-12-06 17:06:59.681952",
"modified_by": "Administrator",
"module": "Stock",
"name": "Delivery Trip",
diff --git a/erpnext/stock/doctype/delivery_trip/delivery_trip.py b/erpnext/stock/doctype/delivery_trip/delivery_trip.py
index 77d322e..e2c5b91 100644
--- a/erpnext/stock/doctype/delivery_trip/delivery_trip.py
+++ b/erpnext/stock/doctype/delivery_trip/delivery_trip.py
@@ -387,3 +387,9 @@
file_name="Delivery Note", print_format=dispatch_attachment)
return [attachments]
+
+@frappe.whitelist()
+def get_driver_email(driver):
+ employee = frappe.db.get_value("Driver", driver, "employee")
+ email = frappe.db.get_value("Employee", employee, "prefered_email")
+ return {"email": email}