Fixes in time_log
diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py
index 4e29d17..fdd225d 100644
--- a/erpnext/projects/doctype/task/task.py
+++ b/erpnext/projects/doctype/task/task.py
@@ -49,6 +49,17 @@
self.total_expense_claim = frappe.db.sql("""select sum(total_sanctioned_amount) from `tabExpense Claim`
where project = %s and task = %s and approval_status = "Approved" and docstatus=1""",(self.project, self.name))
+ def update_actual_time_and_costing(self):
+ tl = frappe.db.sql("""select min(from_time) as start_date, max(to_time) as
+ end_date, sum(billing_amount) as cost, sum(hours) as time from `tabTime Log` where
+ project = %s and task = %s and docstatus=1""",(self.project, self.name),as_dict=1)[0]
+ if self.status == "Open":
+ self.status = "Working"
+ self.actual_cost= tl.cost
+ self.actual_time= tl.time
+ self.act_start_date= tl.start_date
+ self.act_end_date= tl.end_date
+
def update_project(self):
if self.project:
total_activity_cost = frappe.db.sql("""select sum(actual_cost) from `tabTask`
diff --git a/erpnext/projects/doctype/time_log/test_time_log.py b/erpnext/projects/doctype/time_log/test_time_log.py
index 630962d..fad2433 100644
--- a/erpnext/projects/doctype/time_log/test_time_log.py
+++ b/erpnext/projects/doctype/time_log/test_time_log.py
@@ -85,7 +85,7 @@
self.assertRaises(frappe.ValidationError, test_time_log.save)
frappe.db.sql("delete from `tabTime Log`")
- def test_time_log_costing(self):
+ def test_total_activity_cost_for_project(self):
frappe.db.sql("delete from `tabTask`")
frappe.db.sql("delete from `tabProject`")
diff --git a/erpnext/projects/doctype/time_log/time_log.js b/erpnext/projects/doctype/time_log/time_log.js
index e1fa91b..5625ff3 100644
--- a/erpnext/projects/doctype/time_log/time_log.js
+++ b/erpnext/projects/doctype/time_log/time_log.js
@@ -80,11 +80,11 @@
get_activity_cost(frm);
});
-cur_frm.cscript.billable = function(doc) {
- if (doc.billable==1) {
- calculate_cost(doc);
+frappe.ui.form.on("Time Log", "billable", function(frm) {
+ if (frm.doc.billable==1) {
+ calculate_cost(frm.doc);
}
else {
- cur_frm.set_value("billing_amount", 0);
+ frm.doc("billing_amount", 0);
}
-}
+});
diff --git a/erpnext/projects/doctype/time_log/time_log.json b/erpnext/projects/doctype/time_log/time_log.json
index 92ae856..a2852ae 100644
--- a/erpnext/projects/doctype/time_log/time_log.json
+++ b/erpnext/projects/doctype/time_log/time_log.json
@@ -242,7 +242,7 @@
},
{
"default": "0",
- "description": "will be updated only if Time Log is 'Billable'",
+ "description": "Will be updated only if Time Log is 'Billable'",
"fieldname": "billing_amount",
"fieldtype": "Currency",
"label": "Billing Amount",
@@ -297,7 +297,11 @@
"icon": "icon-time",
"idx": 1,
"is_submittable": 1,
+<<<<<<< HEAD
"modified": "2015-04-06 02:47:16.187046",
+=======
+ "modified": "2015-04-09 08:29:34.464429",
+>>>>>>> Fixes in time_log
"modified_by": "Administrator",
"module": "Projects",
"name": "Time Log",
diff --git a/erpnext/projects/doctype/time_log/time_log.py b/erpnext/projects/doctype/time_log/time_log.py
index fc6ae53..34b244f 100644
--- a/erpnext/projects/doctype/time_log/time_log.py
+++ b/erpnext/projects/doctype/time_log/time_log.py
@@ -217,29 +217,22 @@
def validate_cost(self):
rate = get_activity_cost(self.employee, self.activity_type)
- self.costing_rate = rate.get('costing_rate') or 0
- self.billing_rate = rate.get('billing_rate') or 0
- self.costing_amount = self.costing_rate * self.hours
- if self.billable:
- self.billing_amount = self.billing_rate * self.hours
- else:
- self.billing_amount = 0
+ if rate:
+ self.costing_rate = rate.get('costing_rate')
+ self.billing_rate = rate.get('billing_rate')
+ self.costing_amount = self.costing_rate * self.hours
+ if self.billable:
+ self.billing_amount = self.billing_rate * self.hours
+ else:
+ self.billing_amount = 0
def validate_task(self):
if self.project and not self.task:
frappe.throw(_("Task is Mandatory if Time Log is against a project"))
def update_task(self):
- tl = frappe.db.sql("""select min(from_time) as start_date, max(to_time) as end_date, sum(billing_amount) as cost, sum(hours) as time
- from `tabTime Log` where project = %s and task = %s and docstatus=1""",(self.project, self.task),as_dict=1)[0]
-
task = frappe.get_doc("Task", self.task)
- if task.status == "Open":
- task.status = "Working"
- task.actual_cost= tl.cost
- task.actual_time= tl.time
- task.act_start_date= tl.start_date
- task.act_end_date= tl.end_date
+ task.update_actual_time_and_costing()
task.save()
@frappe.whitelist()
@@ -281,7 +274,7 @@
@frappe.whitelist()
def get_activity_cost(employee=None, activity_type=None):
- costing_rate = frappe.db.get_value("Activity Cost", {"employee":employee,"activity_type":activity_type}, "costing_rate")
- billing_rate = frappe.db.get_value("Activity Cost", {"employee":employee,"activity_type":activity_type}, "billing_rate")
- return {"costing_rate": costing_rate, "billing_rate": billing_rate }
-
+ rate = frappe.db.sql("""select costing_rate, billing_rate from `tabActivity Cost` where employee= %s
+ and activity_type= %s""", (employee, activity_type), as_dict=1)
+ if rate:
+ return {"costing_rate": rate[0].costing_rate, "billing_rate": rate[0].billing_rate }