Release testing fixes develop (#20987)
* fix: Multiple fixes during pre-release testing * fix: Merge conflict
This commit is contained in:
parent
9476170b09
commit
2e67c33657
@ -454,8 +454,10 @@ class JournalEntry(AccountsController):
|
|||||||
def set_print_format_fields(self):
|
def set_print_format_fields(self):
|
||||||
bank_amount = party_amount = total_amount = 0.0
|
bank_amount = party_amount = total_amount = 0.0
|
||||||
currency = bank_account_currency = party_account_currency = pay_to_recd_from= None
|
currency = bank_account_currency = party_account_currency = pay_to_recd_from= None
|
||||||
|
party_type = None
|
||||||
for d in self.get('accounts'):
|
for d in self.get('accounts'):
|
||||||
if d.party_type in ['Customer', 'Supplier'] and d.party:
|
if d.party_type in ['Customer', 'Supplier'] and d.party:
|
||||||
|
party_type = d.party_type
|
||||||
if not pay_to_recd_from:
|
if not pay_to_recd_from:
|
||||||
pay_to_recd_from = d.party
|
pay_to_recd_from = d.party
|
||||||
|
|
||||||
@ -467,9 +469,9 @@ class JournalEntry(AccountsController):
|
|||||||
bank_amount += (d.debit_in_account_currency or d.credit_in_account_currency)
|
bank_amount += (d.debit_in_account_currency or d.credit_in_account_currency)
|
||||||
bank_account_currency = d.account_currency
|
bank_account_currency = d.account_currency
|
||||||
|
|
||||||
if pay_to_recd_from:
|
if party_type and pay_to_recd_from:
|
||||||
self.pay_to_recd_from = frappe.db.get_value(d.party_type, pay_to_recd_from,
|
self.pay_to_recd_from = frappe.db.get_value(party_type, pay_to_recd_from,
|
||||||
"customer_name" if d.party_type=="Customer" else "supplier_name")
|
"customer_name" if party_type=="Customer" else "supplier_name")
|
||||||
if bank_amount:
|
if bank_amount:
|
||||||
total_amount = bank_amount
|
total_amount = bank_amount
|
||||||
currency = bank_account_currency
|
currency = bank_account_currency
|
||||||
|
|||||||
@ -6,11 +6,14 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
import unittest
|
import unittest
|
||||||
from frappe.utils import nowdate,flt, cstr,random_string
|
from frappe.utils import nowdate,flt, cstr,random_string
|
||||||
# test_records = frappe.get_test_records('Vehicle Log')
|
|
||||||
class TestVehicleLog(unittest.TestCase):
|
class TestVehicleLog(unittest.TestCase):
|
||||||
def test_make_vehicle_log_and_syncing_of_odometer_value(self):
|
def test_make_vehicle_log_and_syncing_of_odometer_value(self):
|
||||||
employee_id=frappe.db.sql("""select name from `tabEmployee` order by modified desc limit 1""")[0][0]
|
employee_id = frappe.db.sql("""select name from `tabEmployee` where status='Active' order by modified desc limit 1""")
|
||||||
|
employee_id = employee_id[0][0] if employee_id else None
|
||||||
|
|
||||||
license_plate = get_vehicle(employee_id)
|
license_plate = get_vehicle(employee_id)
|
||||||
|
|
||||||
vehicle_log = frappe.get_doc({
|
vehicle_log = frappe.get_doc({
|
||||||
"doctype": "Vehicle Log",
|
"doctype": "Vehicle Log",
|
||||||
"license_plate": cstr(license_plate),
|
"license_plate": cstr(license_plate),
|
||||||
|
|||||||
@ -3,11 +3,6 @@
|
|||||||
|
|
||||||
frappe.ui.form.on("Vehicle Log", {
|
frappe.ui.form.on("Vehicle Log", {
|
||||||
refresh: function(frm) {
|
refresh: function(frm) {
|
||||||
|
|
||||||
if(frm.doc.license_plate && frm.doc.__islocal){
|
|
||||||
frm.events.set_vehicle_details(frm);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(frm.doc.docstatus == 1) {
|
if(frm.doc.docstatus == 1) {
|
||||||
frm.add_custom_button(__('Expense Claim'), function() {
|
frm.add_custom_button(__('Expense Claim'), function() {
|
||||||
frm.events.expense_claim(frm);
|
frm.events.expense_claim(frm);
|
||||||
@ -16,27 +11,6 @@ frappe.ui.form.on("Vehicle Log", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
license_plate: function(frm) {
|
|
||||||
if(frm.doc.license_plate){
|
|
||||||
frm.events.set_vehicle_details(frm);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
set_vehicle_details: function(frm) {
|
|
||||||
frappe.call({
|
|
||||||
method: "erpnext.hr.doctype.vehicle_log.vehicle_log.get_make_model",
|
|
||||||
args: {
|
|
||||||
license_plate: frm.doc.license_plate
|
|
||||||
},
|
|
||||||
callback: function(r) {
|
|
||||||
frappe.model.set_value(cur_frm.doctype, cur_frm.docname, "make", r.message[0]);
|
|
||||||
frappe.model.set_value(cur_frm.doctype, cur_frm.docname, "model", r.message[1]);
|
|
||||||
frappe.model.set_value(cur_frm.doctype, cur_frm.docname, "last_odometer", r.message[2]);
|
|
||||||
frappe.model.set_value(cur_frm.doctype, cur_frm.docname, "employee", r.message[3]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
expense_claim: function(frm){
|
expense_claim: function(frm){
|
||||||
frappe.call({
|
frappe.call({
|
||||||
method: "erpnext.hr.doctype.vehicle_log.vehicle_log.make_expense_claim",
|
method: "erpnext.hr.doctype.vehicle_log.vehicle_log.make_expense_claim",
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
"actions": [],
|
|
||||||
"autoname": "naming_series:",
|
"autoname": "naming_series:",
|
||||||
"creation": "2016-09-03 14:14:51.788550",
|
"creation": "2016-09-03 14:14:51.788550",
|
||||||
"doctype": "DocType",
|
"doctype": "DocType",
|
||||||
@ -56,6 +55,8 @@
|
|||||||
"reqd": 1
|
"reqd": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"fetch_from": "license_plate.employee",
|
||||||
|
"fetch_if_empty": 1,
|
||||||
"fieldname": "employee",
|
"fieldname": "employee",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
@ -73,11 +74,13 @@
|
|||||||
"fieldtype": "Column Break"
|
"fieldtype": "Column Break"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"fetch_from": "license_plate.model",
|
||||||
"fieldname": "model",
|
"fieldname": "model",
|
||||||
"fieldtype": "Read Only",
|
"fieldtype": "Read Only",
|
||||||
"label": "Model"
|
"label": "Model"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"fetch_from": "license_plate.make",
|
||||||
"fieldname": "make",
|
"fieldname": "make",
|
||||||
"fieldtype": "Read Only",
|
"fieldtype": "Read Only",
|
||||||
"label": "Make"
|
"label": "Make"
|
||||||
@ -152,6 +155,7 @@
|
|||||||
"read_only": 1
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"fetch_from": "license_plate.last_odometer",
|
||||||
"fieldname": "last_odometer",
|
"fieldname": "last_odometer",
|
||||||
"fieldtype": "Int",
|
"fieldtype": "Int",
|
||||||
"label": "last Odometer Value ",
|
"label": "last Odometer Value ",
|
||||||
@ -164,8 +168,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"modified": "2020-03-18 16:45:45.060761",
|
||||||
"modified": "2020-01-28 12:43:34.419647",
|
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "HR",
|
"module": "HR",
|
||||||
"name": "Vehicle Log",
|
"name": "Vehicle Log",
|
||||||
|
|||||||
@ -12,18 +12,7 @@ from frappe.model.document import Document
|
|||||||
class VehicleLog(Document):
|
class VehicleLog(Document):
|
||||||
def validate(self):
|
def validate(self):
|
||||||
if flt(self.odometer) < flt(self.last_odometer):
|
if flt(self.odometer) < flt(self.last_odometer):
|
||||||
frappe.throw(_("Current Odometer reading entered should be greater than initial Vehicle Odometer {0}").format(self.last_odometer))
|
frappe.throw(_("Current Odometer Value should be greater than Last Odometer Value {0}").format(self.last_odometer))
|
||||||
for service_detail in self.service_detail:
|
|
||||||
if (service_detail.service_item or service_detail.type or service_detail.frequency or service_detail.expense_amount):
|
|
||||||
if not (service_detail.service_item and service_detail.type and service_detail.frequency and service_detail.expense_amount):
|
|
||||||
frappe.throw(_("Service Item,Type,frequency and expense amount are required"))
|
|
||||||
|
|
||||||
def before_insert(self):
|
|
||||||
model_details = get_make_model(self.license_plate)
|
|
||||||
self.make = model_details[0]
|
|
||||||
self.model = model_details[1]
|
|
||||||
self.last_odometer = model_details[2]
|
|
||||||
self.employee = model_details[3]
|
|
||||||
|
|
||||||
def on_submit(self):
|
def on_submit(self):
|
||||||
frappe.db.set_value("Vehicle", self.license_plate, "last_odometer", self.odometer)
|
frappe.db.set_value("Vehicle", self.license_plate, "last_odometer", self.odometer)
|
||||||
@ -34,35 +23,26 @@ class VehicleLog(Document):
|
|||||||
updated_odometer_value = int(frappe.db.get_value("Vehicle", self.license_plate, "last_odometer")) - distance_travelled
|
updated_odometer_value = int(frappe.db.get_value("Vehicle", self.license_plate, "last_odometer")) - distance_travelled
|
||||||
frappe.db.set_value("Vehicle", self.license_plate, "last_odometer", updated_odometer_value)
|
frappe.db.set_value("Vehicle", self.license_plate, "last_odometer", updated_odometer_value)
|
||||||
|
|
||||||
@frappe.whitelist()
|
|
||||||
def get_make_model(license_plate):
|
|
||||||
vehicle=frappe.get_doc("Vehicle",license_plate)
|
|
||||||
return (vehicle.make, vehicle.model, vehicle.last_odometer, vehicle.employee)
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def make_expense_claim(docname):
|
def make_expense_claim(docname):
|
||||||
def check_exp_claim_exists():
|
expense_claim = frappe.db.exists("Expense Claim", {"vehicle_log": docname})
|
||||||
exp_claim = frappe.db.sql("""select name from `tabExpense Claim` where vehicle_log=%s""",vehicle_log.name)
|
if expense_claim:
|
||||||
return exp_claim[0][0] if exp_claim else ""
|
frappe.throw(_("Expense Claim {0} already exists for the Vehicle Log").format(expense_claim))
|
||||||
def calc_service_exp():
|
|
||||||
total_exp_amt=0
|
|
||||||
exp_claim = check_exp_claim_exists()
|
|
||||||
if exp_claim:
|
|
||||||
frappe.throw(_("Expense Claim {0} already exists for the Vehicle Log").format(exp_claim))
|
|
||||||
for serdetail in vehicle_log.service_detail:
|
|
||||||
total_exp_amt = total_exp_amt + serdetail.expense_amount
|
|
||||||
return total_exp_amt
|
|
||||||
|
|
||||||
vehicle_log = frappe.get_doc("Vehicle Log", docname)
|
vehicle_log = frappe.get_doc("Vehicle Log", docname)
|
||||||
|
service_expense = sum([flt(d.expense_amount) for d in vehicle_log.service_detail])
|
||||||
|
|
||||||
|
claim_amount = service_expense + flt(vehicle_log.price)
|
||||||
|
if not claim_amount:
|
||||||
|
frappe.throw(_("No additional expenses has been added"))
|
||||||
|
|
||||||
exp_claim = frappe.new_doc("Expense Claim")
|
exp_claim = frappe.new_doc("Expense Claim")
|
||||||
exp_claim.employee=vehicle_log.employee
|
exp_claim.employee = vehicle_log.employee
|
||||||
exp_claim.vehicle_log=vehicle_log.name
|
exp_claim.vehicle_log = vehicle_log.name
|
||||||
exp_claim.remark=_("Expense Claim for Vehicle Log {0}").format(vehicle_log.name)
|
exp_claim.remark = _("Expense Claim for Vehicle Log {0}").format(vehicle_log.name)
|
||||||
fuel_price=vehicle_log.price
|
exp_claim.append("expenses", {
|
||||||
total_claim_amt=calc_service_exp() + fuel_price
|
"expense_date": vehicle_log.date,
|
||||||
exp_claim.append("expenses",{
|
"description": _("Vehicle Expenses"),
|
||||||
"expense_date":vehicle_log.date,
|
"amount": claim_amount
|
||||||
"description":_("Vehicle Expenses"),
|
|
||||||
"amount":total_claim_amt
|
|
||||||
})
|
})
|
||||||
return exp_claim.as_dict()
|
return exp_claim.as_dict()
|
||||||
|
|||||||
@ -1,153 +1,57 @@
|
|||||||
{
|
{
|
||||||
"allow_copy": 0,
|
"creation": "2016-09-03 19:20:14.561962",
|
||||||
"allow_import": 0,
|
"doctype": "DocType",
|
||||||
"allow_rename": 0,
|
"document_type": "Document",
|
||||||
"beta": 0,
|
"editable_grid": 1,
|
||||||
"creation": "2016-09-03 19:20:14.561962",
|
"engine": "InnoDB",
|
||||||
"custom": 0,
|
"field_order": [
|
||||||
"docstatus": 0,
|
"service_item",
|
||||||
"doctype": "DocType",
|
"type",
|
||||||
"document_type": "Document",
|
"frequency",
|
||||||
"editable_grid": 1,
|
"expense_amount"
|
||||||
|
],
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"allow_on_submit": 0,
|
"fieldname": "service_item",
|
||||||
"bold": 0,
|
"fieldtype": "Select",
|
||||||
"collapsible": 0,
|
"in_list_view": 1,
|
||||||
"columns": 0,
|
"label": "Service Item",
|
||||||
"fieldname": "service_item",
|
"options": "\nBrake Oil\nBrake Pad\nClutch Plate\nEngine Oil\nOil Change\nWheels",
|
||||||
"fieldtype": "Select",
|
"reqd": 1
|
||||||
"hidden": 0,
|
},
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_list_view": 1,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Service Item",
|
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"options": "\nBrake Oil\nBrake Pad\nClutch Plate\nEngine Oil\nOil Change\nWheels",
|
|
||||||
"permlevel": 0,
|
|
||||||
"precision": "",
|
|
||||||
"print_hide": 0,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"read_only": 0,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"unique": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"allow_on_submit": 0,
|
"fieldname": "type",
|
||||||
"bold": 0,
|
"fieldtype": "Select",
|
||||||
"collapsible": 0,
|
"in_list_view": 1,
|
||||||
"columns": 0,
|
"label": "Type",
|
||||||
"fieldname": "type",
|
"options": "\nInspection\nService\nChange",
|
||||||
"fieldtype": "Select",
|
"reqd": 1
|
||||||
"hidden": 0,
|
},
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_list_view": 1,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Type",
|
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"options": "\nInspection\nService\nChange",
|
|
||||||
"permlevel": 0,
|
|
||||||
"precision": "",
|
|
||||||
"print_hide": 0,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"read_only": 0,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"unique": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"allow_on_submit": 0,
|
"fieldname": "frequency",
|
||||||
"bold": 0,
|
"fieldtype": "Select",
|
||||||
"collapsible": 0,
|
"in_list_view": 1,
|
||||||
"columns": 0,
|
"label": "Frequency",
|
||||||
"fieldname": "frequency",
|
"options": "\nMileage\nMonthly\nQuarterly\nHalf Yearly\nYearly",
|
||||||
"fieldtype": "Select",
|
"reqd": 1
|
||||||
"hidden": 0,
|
},
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_list_view": 1,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Frequency",
|
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"options": "\nMileage\nMonthly\nQuarterly\nHalf Yearly\nYearly",
|
|
||||||
"permlevel": 0,
|
|
||||||
"precision": "",
|
|
||||||
"print_hide": 0,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"read_only": 0,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"unique": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"allow_on_submit": 0,
|
"fieldname": "expense_amount",
|
||||||
"bold": 0,
|
"fieldtype": "Currency",
|
||||||
"collapsible": 0,
|
"in_list_view": 1,
|
||||||
"columns": 0,
|
"label": "Expense",
|
||||||
"fieldname": "expense_amount",
|
"reqd": 1
|
||||||
"fieldtype": "Currency",
|
|
||||||
"hidden": 0,
|
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_list_view": 1,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Expense",
|
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"permlevel": 0,
|
|
||||||
"precision": "",
|
|
||||||
"print_hide": 0,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"read_only": 0,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"unique": 0
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"hide_heading": 0,
|
"istable": 1,
|
||||||
"hide_toolbar": 0,
|
"modified": "2020-03-18 16:49:46.645004",
|
||||||
"idx": 0,
|
"modified_by": "Administrator",
|
||||||
"image_view": 0,
|
"module": "HR",
|
||||||
"in_create": 0,
|
"name": "Vehicle Service",
|
||||||
|
"owner": "Administrator",
|
||||||
"is_submittable": 0,
|
"permissions": [],
|
||||||
"issingle": 0,
|
"quick_entry": 1,
|
||||||
"istable": 1,
|
"sort_field": "modified",
|
||||||
"max_attachments": 0,
|
"sort_order": "DESC",
|
||||||
"modified": "2017-01-09 11:10:29.476907",
|
"track_changes": 1
|
||||||
"modified_by": "Administrator",
|
|
||||||
"module": "HR",
|
|
||||||
"name": "Vehicle Service",
|
|
||||||
"name_case": "",
|
|
||||||
"owner": "Administrator",
|
|
||||||
"permissions": [],
|
|
||||||
"quick_entry": 1,
|
|
||||||
"read_only": 0,
|
|
||||||
"read_only_onload": 0,
|
|
||||||
"sort_field": "modified",
|
|
||||||
"sort_order": "DESC",
|
|
||||||
"track_changes": 1,
|
|
||||||
"track_seen": 0
|
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user