feat: Add Create Expense Claim button in Delivery Trip (#25526)
* feat(Delivery Trip): Add employee_code field * feat(Expense Claim): Add Delivery Trip Number field * feat(Delivery Trip): Add Create Expense Claim button * feat(Delivery Trip): Make Create Expense Claim button show up after save * fix(Delivery Trip): Fix Sider issues * fix(Delivery Trip): Display button after submit * fix(Delivery Trip & Expense Claim): Rename new fields * fix(Delivery Trip): Add button in refresh * fix(Delivery Trip): Remove redundant line * fix(Expense Claim): Display delivery_trip only if non-empty * fix(Delivery Trip): Add test for Create Expense Claim * fix(Delivery Trip): Fix Sider Issue * fix(Delivery Trip): Only display Create Expense Claim if the driver is an employee * fix(Delivery Trip): Fix test * fix(Delivery Trip): Fix make_expense_claim() * fix: sider Co-authored-by: Saqib <nextchamp.saqib@gmail.com>
This commit is contained in:
parent
64bd4f27b8
commit
aa9e172091
@ -14,6 +14,7 @@
|
|||||||
"column_break_5",
|
"column_break_5",
|
||||||
"expense_approver",
|
"expense_approver",
|
||||||
"approval_status",
|
"approval_status",
|
||||||
|
"delivery_trip",
|
||||||
"is_paid",
|
"is_paid",
|
||||||
"expense_details",
|
"expense_details",
|
||||||
"expenses",
|
"expenses",
|
||||||
@ -365,13 +366,20 @@
|
|||||||
"label": "Total Taxes and Charges",
|
"label": "Total Taxes and Charges",
|
||||||
"options": "Company:company:default_currency",
|
"options": "Company:company:default_currency",
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"depends_on": "eval: doc.delivery_trip",
|
||||||
|
"fieldname": "delivery_trip",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Delivery Trip",
|
||||||
|
"options": "Delivery Trip"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"icon": "fa fa-money",
|
"icon": "fa fa-money",
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-09-18 17:26:09.703215",
|
"modified": "2021-05-04 05:35:12.040199",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "HR",
|
"module": "HR",
|
||||||
"name": "Expense Claim",
|
"name": "Expense Claim",
|
||||||
|
|||||||
@ -41,6 +41,15 @@ frappe.ui.form.on('Delivery Trip', {
|
|||||||
},
|
},
|
||||||
|
|
||||||
refresh: function (frm) {
|
refresh: function (frm) {
|
||||||
|
if (frm.doc.docstatus == 1 && frm.doc.employee) {
|
||||||
|
frm.add_custom_button(__('Expense Claim'), function() {
|
||||||
|
frappe.model.open_mapped_doc({
|
||||||
|
method: 'erpnext.stock.doctype.delivery_trip.delivery_trip.make_expense_claim',
|
||||||
|
frm: cur_frm,
|
||||||
|
});
|
||||||
|
}, __("Create"));
|
||||||
|
}
|
||||||
|
|
||||||
if (frm.doc.docstatus == 1 && frm.doc.delivery_stops.length > 0) {
|
if (frm.doc.docstatus == 1 && frm.doc.delivery_stops.length > 0) {
|
||||||
frm.add_custom_button(__("Notify Customers via Email"), function () {
|
frm.add_custom_button(__("Notify Customers via Email"), function () {
|
||||||
frm.trigger('notify_customers');
|
frm.trigger('notify_customers');
|
||||||
|
|||||||
@ -21,6 +21,7 @@
|
|||||||
"column_break_4",
|
"column_break_4",
|
||||||
"vehicle",
|
"vehicle",
|
||||||
"departure_time",
|
"departure_time",
|
||||||
|
"employee",
|
||||||
"delivery_service_stops",
|
"delivery_service_stops",
|
||||||
"delivery_stops",
|
"delivery_stops",
|
||||||
"calculate_arrival_time",
|
"calculate_arrival_time",
|
||||||
@ -176,11 +177,19 @@
|
|||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Driver Email",
|
"label": "Driver Email",
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fetch_from": "driver.employee",
|
||||||
|
"fieldname": "employee",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Employee",
|
||||||
|
"options": "Employee",
|
||||||
|
"read_only": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-01-26 22:37:14.824021",
|
"modified": "2021-04-30 21:21:36.610142",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Delivery Trip",
|
"name": "Delivery Trip",
|
||||||
|
|||||||
@ -11,6 +11,7 @@ from frappe import _
|
|||||||
from frappe.contacts.doctype.address.address import get_address_display
|
from frappe.contacts.doctype.address.address import get_address_display
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from frappe.utils import cint, get_datetime, get_link_to_form
|
from frappe.utils import cint, get_datetime, get_link_to_form
|
||||||
|
from frappe.model.mapper import get_mapped_doc
|
||||||
|
|
||||||
|
|
||||||
class DeliveryTrip(Document):
|
class DeliveryTrip(Document):
|
||||||
@ -394,3 +395,15 @@ def get_driver_email(driver):
|
|||||||
employee = frappe.db.get_value("Driver", driver, "employee")
|
employee = frappe.db.get_value("Driver", driver, "employee")
|
||||||
email = frappe.db.get_value("Employee", employee, "prefered_email")
|
email = frappe.db.get_value("Employee", employee, "prefered_email")
|
||||||
return {"email": email}
|
return {"email": email}
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def make_expense_claim(source_name, target_doc=None):
|
||||||
|
doc = get_mapped_doc("Delivery Trip", source_name,
|
||||||
|
{"Delivery Trip": {
|
||||||
|
"doctype": "Expense Claim",
|
||||||
|
"field_map": {
|
||||||
|
"name" : "delivery_trip"
|
||||||
|
}
|
||||||
|
}}, target_doc)
|
||||||
|
|
||||||
|
return doc
|
||||||
@ -7,7 +7,7 @@ import unittest
|
|||||||
|
|
||||||
import erpnext
|
import erpnext
|
||||||
import frappe
|
import frappe
|
||||||
from erpnext.stock.doctype.delivery_trip.delivery_trip import get_contact_and_address, notify_customers
|
from erpnext.stock.doctype.delivery_trip.delivery_trip import get_contact_and_address, notify_customers, make_expense_claim
|
||||||
from erpnext.tests.utils import create_test_contact_and_address
|
from erpnext.tests.utils import create_test_contact_and_address
|
||||||
from frappe.utils import add_days, flt, now_datetime, nowdate
|
from frappe.utils import add_days, flt, now_datetime, nowdate
|
||||||
|
|
||||||
@ -28,6 +28,10 @@ class TestDeliveryTrip(unittest.TestCase):
|
|||||||
frappe.db.sql("delete from `tabEmail Template`")
|
frappe.db.sql("delete from `tabEmail Template`")
|
||||||
frappe.db.sql("delete from `tabDelivery Trip`")
|
frappe.db.sql("delete from `tabDelivery Trip`")
|
||||||
|
|
||||||
|
def test_expense_claim_fields_are_fetched_properly(self):
|
||||||
|
expense_claim = make_expense_claim(self.delivery_trip.name)
|
||||||
|
self.assertEqual(self.delivery_trip.name, expense_claim.delivery_trip)
|
||||||
|
|
||||||
def test_delivery_trip_notify_customers(self):
|
def test_delivery_trip_notify_customers(self):
|
||||||
notify_customers(delivery_trip=self.delivery_trip.name)
|
notify_customers(delivery_trip=self.delivery_trip.name)
|
||||||
self.delivery_trip.load_from_db()
|
self.delivery_trip.load_from_db()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user