rename total_billing_amount to total_billable_amount in timesheet doctype

This commit is contained in:
Rohit Waghchaure 2016-09-12 19:06:41 +05:30
parent 4eb908fc76
commit 7b6fdb77d0
11 changed files with 33 additions and 23 deletions

View File

@ -464,8 +464,8 @@ class SalesInvoice(SellingController):
if not timesheet.billing_hours and ts_doc.total_billing_hours: if not timesheet.billing_hours and ts_doc.total_billing_hours:
timesheet.billing_hours = ts_doc.total_billing_hours timesheet.billing_hours = ts_doc.total_billing_hours
if not timesheet.billing_amount and ts_doc.total_billing_amount: if not timesheet.billing_amount and ts_doc.total_billable_amount:
timesheet.billing_amount = ts_doc.total_billing_amount timesheet.billing_amount = ts_doc.total_billable_amount
def update_timesheet_billing_for_project(self): def update_timesheet_billing_for_project(self):
if not self.timesheets and self.project: if not self.timesheets and self.project:

View File

@ -22,7 +22,7 @@ def make_timesheet_for_projects(current_date ):
ts = make_timesheet(employee, simulate = True, billable = 1, ts = make_timesheet(employee, simulate = True, billable = 1,
activity_type=get_random("Activity Type"), project=data.project, task =data.name) activity_type=get_random("Activity Type"), project=data.project, task =data.name)
if flt(ts.total_billing_amount) > 0.0: if flt(ts.total_billable_amount) > 0.0:
make_sales_invoice_for_timesheet(ts.name) make_sales_invoice_for_timesheet(ts.name)
frappe.db.commit() frappe.db.commit()

View File

@ -295,7 +295,8 @@ erpnext.patches.v7_0.rename_prevdoc_fields
erpnext.patches.v7_0.rename_time_sheet_doctype erpnext.patches.v7_0.rename_time_sheet_doctype
execute:frappe.delete_doc_if_exists("Report", "Customers Not Buying Since Long Time") execute:frappe.delete_doc_if_exists("Report", "Customers Not Buying Since Long Time")
erpnext.patches.v7_0.make_is_group_fieldtype_as_check erpnext.patches.v7_0.make_is_group_fieldtype_as_check
execute:frappe.reload_doc('projects', 'doctype', 'timesheet') #2016-09-09 execute:frappe.reload_doc('projects', 'doctype', 'timesheet') #2016-09-12
erpnext.patches.v7_1.rename_field_timesheet
execute:frappe.delete_doc_if_exists("Report", "Employee Holiday Attendance") execute:frappe.delete_doc_if_exists("Report", "Employee Holiday Attendance")
execute:frappe.delete_doc_if_exists("DocType", "Payment Tool") execute:frappe.delete_doc_if_exists("DocType", "Payment Tool")
execute:frappe.delete_doc_if_exists("DocType", "Payment Tool Detail") execute:frappe.delete_doc_if_exists("DocType", "Payment Tool Detail")

View File

@ -3,12 +3,12 @@ import frappe
def execute(): def execute():
frappe.reload_doc('accounts', 'doctype', 'sales_invoice') frappe.reload_doc('accounts', 'doctype', 'sales_invoice')
frappe.reload_doc('accounts', 'doctype', 'sales_invoice_payment') frappe.reload_doc('accounts', 'doctype', 'sales_invoice_payment')
for time_sheet in frappe.db.sql(""" select sales_invoice, name, total_billing_amount from `tabTimesheet` for time_sheet in frappe.db.sql(""" select sales_invoice, name, total_billable_amount from `tabTimesheet`
where sales_invoice is not null and docstatus < 2""", as_dict=True): where sales_invoice is not null and docstatus < 2""", as_dict=True):
si_doc = frappe.get_doc('Sales Invoice', time_sheet.sales_invoice) si_doc = frappe.get_doc('Sales Invoice', time_sheet.sales_invoice)
ts = si_doc.append('timesheets',{}) ts = si_doc.append('timesheets',{})
ts.time_sheet = time_sheet.name ts.time_sheet = time_sheet.name
ts.billing_amount = time_sheet.total_billing_amount ts.billing_amount = time_sheet.total_billable_amount
si_doc.update_time_sheet(time_sheet.sales_invoice) si_doc.update_time_sheet(time_sheet.sales_invoice)
si_doc.flags.ignore_validate_update_after_submit = True si_doc.flags.ignore_validate_update_after_submit = True
si_doc.save() si_doc.save()

View File

@ -13,7 +13,7 @@ def execute():
) as sit ) as sit
set set
ts.total_billed_amount = sit.billing_amount, ts.total_billed_hours = sit.billing_hours, ts.total_billed_amount = sit.billing_amount, ts.total_billed_hours = sit.billing_hours,
ts.per_billed = ((sit.billing_amount * 100)/ts.total_billing_amount) ts.per_billed = ((sit.billing_amount * 100)/ts.total_billable_amount)
where ts.name = sit.time_sheet and ts.docstatus = 1""") where ts.name = sit.time_sheet and ts.docstatus = 1""")
frappe.db.sql(""" update `tabTimesheet Detail` tsd, `tabTimesheet` ts set tsd.sales_invoice = ts.sales_invoice frappe.db.sql(""" update `tabTimesheet Detail` tsd, `tabTimesheet` ts set tsd.sales_invoice = ts.sales_invoice

View File

@ -0,0 +1,8 @@
from __future__ import unicode_literals
import frappe
from frappe.model.utils.rename_field import rename_field
def execute():
doctype = 'Timesheet'
if "total_billing_amount" in frappe.db.get_table_columns(doctype):
rename_field(doctype, 'total_billing_amount', 'total_billable_amount')

View File

@ -6,7 +6,7 @@ def execute():
frappe.reload_doc('accounts', 'doctype', 'sales_invoice_timesheet') frappe.reload_doc('accounts', 'doctype', 'sales_invoice_timesheet')
frappe.db.sql("""update tabTimesheet set total_billing_hours=total_hours frappe.db.sql("""update tabTimesheet set total_billing_hours=total_hours
where total_billing_amount>0 and docstatus = 1""") where total_billable_amount>0 and docstatus = 1""")
frappe.db.sql("""update `tabTimesheet Detail` set billing_hours=hours where docstatus < 2""") frappe.db.sql("""update `tabTimesheet Detail` set billing_hours=hours where docstatus < 2""")

View File

@ -20,6 +20,7 @@ class TestTimesheet(unittest.TestCase):
self.assertEquals(timesheet.total_billing_hours, 2) self.assertEquals(timesheet.total_billing_hours, 2)
self.assertEquals(timesheet.time_logs[0].billing_rate, 50) self.assertEquals(timesheet.time_logs[0].billing_rate, 50)
self.assertEquals(timesheet.time_logs[0].billing_amount, 100) self.assertEquals(timesheet.time_logs[0].billing_amount, 100)
self.assertEquals(timesheet.total_billable_amount, 100)
def test_salary_slip_from_timesheet(self): def test_salary_slip_from_timesheet(self):
salary_structure = make_salary_structure("_T-Employee-0001") salary_structure = make_salary_structure("_T-Employee-0001")

View File

@ -25,7 +25,7 @@ frappe.ui.form.on("Timesheet", {
frm.fields_dict['time_logs'].grid.get_field('project').get_query = function() { frm.fields_dict['time_logs'].grid.get_field('project').get_query = function() {
return{ return{
filters: { filters: {
'status': frm.doc.company 'company': frm.doc.company
} }
} }
} }
@ -159,12 +159,12 @@ var calculate_time_and_amount = function(frm) {
var tl = frm.doc.time_logs || []; var tl = frm.doc.time_logs || [];
total_working_hr = 0; total_working_hr = 0;
total_billing_hr = 0; total_billing_hr = 0;
total_billing_amount = 0; total_billable_amount = 0;
total_costing_amount = 0; total_costing_amount = 0;
for(var i=0; i<tl.length; i++) { for(var i=0; i<tl.length; i++) {
if (tl[i].hours) { if (tl[i].hours) {
total_working_hr += tl[i].hours; total_working_hr += tl[i].hours;
total_billing_amount += tl[i].billing_amount; total_billable_amount += tl[i].billing_amount;
total_costing_amount += tl[i].costing_amount; total_costing_amount += tl[i].costing_amount;
if(tl[i].billable){ if(tl[i].billable){
@ -175,6 +175,6 @@ var calculate_time_and_amount = function(frm) {
cur_frm.set_value("total_billing_hours", total_billing_hr); cur_frm.set_value("total_billing_hours", total_billing_hr);
cur_frm.set_value("total_hours", total_working_hr); cur_frm.set_value("total_hours", total_working_hr);
cur_frm.set_value("total_billing_amount", total_billing_amount); cur_frm.set_value("total_billable_amount", total_billable_amount);
cur_frm.set_value("total_costing_amount", total_costing_amount); cur_frm.set_value("total_costing_amount", total_costing_amount);
} }

View File

@ -655,14 +655,14 @@
"default": "0", "default": "0",
"depends_on": "", "depends_on": "",
"description": "", "description": "",
"fieldname": "total_billing_amount", "fieldname": "total_billable_amount",
"fieldtype": "Float", "fieldtype": "Float",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"ignore_xss_filter": 0, "ignore_xss_filter": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Total Billing Amount", "label": "Total Billable Amount",
"length": 0, "length": 0,
"no_copy": 0, "no_copy": 0,
"permlevel": 0, "permlevel": 0,
@ -817,7 +817,7 @@
"issingle": 0, "issingle": 0,
"istable": 0, "istable": 0,
"max_attachments": 0, "max_attachments": 0,
"modified": "2016-09-09 03:53:17.544760", "modified": "2016-09-12 18:35:01.578750",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Projects", "module": "Projects",
"name": "Timesheet", "name": "Timesheet",

View File

@ -31,7 +31,7 @@ class Timesheet(Document):
self.total_hours = 0.0 self.total_hours = 0.0
self.total_billing_hours = 0.0 self.total_billing_hours = 0.0
self.total_billed_hours = 0.0 self.total_billed_hours = 0.0
self.total_billing_amount = 0.0 self.total_billable_amount = 0.0
self.total_costing_amount = 0.0 self.total_costing_amount = 0.0
self.total_billed_amount = 0.0 self.total_billed_amount = 0.0
@ -41,15 +41,15 @@ class Timesheet(Document):
self.total_hours += flt(d.hours) self.total_hours += flt(d.hours)
if d.billable: if d.billable:
self.total_billing_hours += flt(d.billing_hours) self.total_billing_hours += flt(d.billing_hours)
self.total_billing_amount += flt(d.billing_amount) self.total_billable_amount += flt(d.billing_amount)
self.total_costing_amount += flt(d.costing_amount) self.total_costing_amount += flt(d.costing_amount)
self.total_billed_amount += flt(d.billing_amount) if d.sales_invoice else 0.0 self.total_billed_amount += flt(d.billing_amount) if d.sales_invoice else 0.0
self.total_billed_hours += flt(d.billing_hours) if d.sales_invoice else 0.0 self.total_billed_hours += flt(d.billing_hours) if d.sales_invoice else 0.0
def calculate_percentage_billed(self): def calculate_percentage_billed(self):
self.per_billed = 0 self.per_billed = 0
if self.total_billed_amount > 0 and self.total_billing_amount > 0: if self.total_billed_amount > 0 and self.total_billable_amount > 0:
self.per_billed = (self.total_billed_amount * 100) / self.total_billing_amount self.per_billed = (self.total_billed_amount * 100) / self.total_billable_amount
def update_billing_hours(self, args): def update_billing_hours(self, args):
if cint(args.billing_hours) == 0: if cint(args.billing_hours) == 0:
@ -276,7 +276,7 @@ def get_timesheet(doctype, txt, searchfield, start, page_len, filters):
return frappe.db.sql("""select distinct tsd.parent from `tabTimesheet Detail` tsd, return frappe.db.sql("""select distinct tsd.parent from `tabTimesheet Detail` tsd,
`tabTimesheet` ts where `tabTimesheet` ts where
ts.status in ('Submitted', 'Payslip') and tsd.parent = ts.name and ts.status in ('Submitted', 'Payslip') and tsd.parent = ts.name and
tsd.docstatus = 1 and ts.total_billing_amount > 0 tsd.docstatus = 1 and ts.total_billable_amount > 0
and tsd.parent LIKE %(txt)s {condition} and tsd.parent LIKE %(txt)s {condition}
order by tsd.parent limit %(start)s, %(page_len)s""" order by tsd.parent limit %(start)s, %(page_len)s"""
.format(condition=condition), { .format(condition=condition), {
@ -290,7 +290,7 @@ def get_timesheet_data(name, project):
data = get_projectwise_timesheet_data(project, name) data = get_projectwise_timesheet_data(project, name)
else: else:
data = frappe.get_all('Timesheet', data = frappe.get_all('Timesheet',
fields = ["(total_billing_amount - total_billed_amount) as billing_amt", "total_billing_hours as billing_hours"], filters = {'name': name}) fields = ["(total_billable_amount - total_billed_amount) as billing_amt", "total_billing_hours as billing_hours"], filters = {'name': name})
return { return {
'billing_hours': data[0].billing_hours, 'billing_hours': data[0].billing_hours,
@ -306,10 +306,10 @@ def make_sales_invoice(source_name, target=None):
target.append('timesheets', { target.append('timesheets', {
'time_sheet': timesheet.name, 'time_sheet': timesheet.name,
'billing_hours': flt(timesheet.total_billing_hours) - flt(timesheet.total_billed_hours), 'billing_hours': flt(timesheet.total_billing_hours) - flt(timesheet.total_billed_hours),
'billing_amount': flt(timesheet.total_billing_amount) - flt(timesheet.total_billed_amount) 'billing_amount': flt(timesheet.total_billable_amount) - flt(timesheet.total_billed_amount)
}) })
target.run_method("calculate_billing_amount_from_timesheet") target.run_method("calculate_billing_amount_for_timesheet")
return target return target