From f79e3451dd39d6c3c29093ac73d9ceb595da06f6 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 7 Jun 2013 12:58:29 +0530 Subject: [PATCH] [projects] added ganttview, removed old timesheet --- config.json | 2 +- projects/doctype/project/project.js | 20 +- projects/doctype/project/project.py | 57 ++---- projects/doctype/project/project.txt | 44 +++-- projects/doctype/task/task.py | 35 +++- projects/doctype/time_log/time_log.py | 5 +- projects/doctype/timesheet/__init__.py | 1 - .../timesheet/locale/_messages_doc.json | 14 -- projects/doctype/timesheet/locale/ar-doc.json | 14 -- projects/doctype/timesheet/locale/de-doc.json | 14 -- projects/doctype/timesheet/locale/es-doc.json | 14 -- projects/doctype/timesheet/locale/fr-doc.json | 14 -- projects/doctype/timesheet/locale/hi-doc.json | 14 -- projects/doctype/timesheet/locale/hr-doc.json | 14 -- projects/doctype/timesheet/locale/nl-doc.json | 14 -- .../doctype/timesheet/locale/pt-BR-doc.json | 14 -- projects/doctype/timesheet/locale/pt-doc.json | 14 -- projects/doctype/timesheet/locale/sr-doc.json | 14 -- projects/doctype/timesheet/locale/ta-doc.json | 14 -- projects/doctype/timesheet/locale/th-doc.json | 14 -- projects/doctype/timesheet/timesheet.js | 53 ------ projects/doctype/timesheet/timesheet.py | 97 ---------- projects/doctype/timesheet/timesheet.txt | 180 ------------------ projects/doctype/timesheet_detail/__init__.py | 1 - .../locale/_messages_doc.json | 13 -- .../timesheet_detail/locale/ar-doc.json | 13 -- .../timesheet_detail/locale/de-doc.json | 13 -- .../timesheet_detail/locale/es-doc.json | 13 -- .../timesheet_detail/locale/fr-doc.json | 13 -- .../timesheet_detail/locale/hi-doc.json | 13 -- .../timesheet_detail/locale/hr-doc.json | 13 -- .../timesheet_detail/locale/nl-doc.json | 13 -- .../timesheet_detail/locale/pt-BR-doc.json | 13 -- .../timesheet_detail/locale/pt-doc.json | 13 -- .../timesheet_detail/locale/sr-doc.json | 13 -- .../timesheet_detail/locale/ta-doc.json | 13 -- .../timesheet_detail/locale/th-doc.json | 13 -- .../timesheet_detail/timesheet_detail.py | 22 --- .../timesheet_detail/timesheet_detail.txt | 132 ------------- 39 files changed, 80 insertions(+), 920 deletions(-) delete mode 100644 projects/doctype/timesheet/__init__.py delete mode 100644 projects/doctype/timesheet/locale/_messages_doc.json delete mode 100644 projects/doctype/timesheet/locale/ar-doc.json delete mode 100644 projects/doctype/timesheet/locale/de-doc.json delete mode 100644 projects/doctype/timesheet/locale/es-doc.json delete mode 100644 projects/doctype/timesheet/locale/fr-doc.json delete mode 100644 projects/doctype/timesheet/locale/hi-doc.json delete mode 100644 projects/doctype/timesheet/locale/hr-doc.json delete mode 100644 projects/doctype/timesheet/locale/nl-doc.json delete mode 100644 projects/doctype/timesheet/locale/pt-BR-doc.json delete mode 100644 projects/doctype/timesheet/locale/pt-doc.json delete mode 100644 projects/doctype/timesheet/locale/sr-doc.json delete mode 100644 projects/doctype/timesheet/locale/ta-doc.json delete mode 100644 projects/doctype/timesheet/locale/th-doc.json delete mode 100644 projects/doctype/timesheet/timesheet.js delete mode 100644 projects/doctype/timesheet/timesheet.py delete mode 100644 projects/doctype/timesheet/timesheet.txt delete mode 100644 projects/doctype/timesheet_detail/__init__.py delete mode 100644 projects/doctype/timesheet_detail/locale/_messages_doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/ar-doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/de-doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/es-doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/fr-doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/hi-doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/hr-doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/nl-doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/pt-BR-doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/pt-doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/sr-doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/ta-doc.json delete mode 100644 projects/doctype/timesheet_detail/locale/th-doc.json delete mode 100644 projects/doctype/timesheet_detail/timesheet_detail.py delete mode 100644 projects/doctype/timesheet_detail/timesheet_detail.txt diff --git a/config.json b/config.json index e0b85b1b8a..33e898f221 100644 --- a/config.json +++ b/config.json @@ -34,7 +34,7 @@ "type": "module", "link": "projects-home", "color": "#8e44ad", - "icon": "icon-tasks" + "icon": "icon-puzzle-piece" }, "Manufacturing": { "type": "module", diff --git a/projects/doctype/project/project.js b/projects/doctype/project/project.js index d4a034fd76..a6f32cb2db 100644 --- a/projects/doctype/project/project.js +++ b/projects/doctype/project/project.js @@ -15,20 +15,16 @@ // along with this program. If not, see . // show tasks -wn.require("public/app/js/gantt_task.js"); - cur_frm.cscript.refresh = function(doc) { if(!doc.__islocal) { - // refresh gantt chart - wn.require('app/projects/gantt_task.js'); - if(!cur_frm.gantt_area) - cur_frm.gantt_area = $('
') - .appendTo(cur_frm.fields_dict.project_tasks.wrapper); - cur_frm.gantt_area.empty(); - erpnext.show_task_gantt(cur_frm.gantt_area, cur_frm.docname); - } else { - if(cur_frm.gantt_area) - cur_frm.gantt_area.empty(); + cur_frm.add_custom_button("Gantt Chart", function() { + wn.route_options = {"project": doc.name} + wn.set_route("Gantt", "Task"); + }, "icon-tasks"); + cur_frm.add_custom_button("Tasks", function() { + wn.route_options = {"project": doc.name} + wn.set_route("List", "Task"); + }, "icon-list"); } } diff --git a/projects/doctype/project/project.py b/projects/doctype/project/project.py index 1de551c753..9455a989c2 100644 --- a/projects/doctype/project/project.py +++ b/projects/doctype/project/project.py @@ -18,57 +18,14 @@ from __future__ import unicode_literals import webnotes from webnotes.utils import flt, getdate -from webnotes.model import db_exists from webnotes.model.doc import Document -from webnotes.model.bean import copy_doclist from webnotes import msgprint -sql = webnotes.conn.sql - - - class DocType: def __init__(self, doc, doclist=[]): self.doc = doc self.doclist = doclist - # Get Customer Details along with its primary contact details - # ============================================================== - def get_customer_details(self): - details =sql("select address, territory, customer_group,customer_name from `tabCustomer` where name=%s and docstatus!=2",(self.doc.customer),as_dict=1) - if details: - ret = { - 'customer_address' : details and details[0]['address'] or '', - 'territory' : details and details[0]['territory'] or '', - 'customer_group' : details and details[0]['customer_group'] or '', - 'customer_name' : details and details[0]['customer_name'] or '' - } - #get primary contact details(this is done separately coz. , if join query used & no primary contact thn it would not be able to fetch customer details) - contact_det = sql("select contact_name, phone, email_id from `tabContact` where customer_name='%s' and is_customer=1 and is_primary_contact=1 and docstatus!=2" %(self.doc.customer), as_dict = 1) - ret['contact_person'] = contact_det and contact_det[0]['contact_name'] or '' - ret['contact_no'] = contact_det and contact_det[0]['phone'] or '' - ret['email_id'] = contact_det and contact_det[0]['email_id'] or '' - return ret - else: - msgprint("Customer : %s does not exist in system." % (self.doc.customer)) - raise Exception - - # Get customer's contact person details - # ============================================================== - def get_contact_details(self): - contact = sql("select contact_no, email_id from `tabContact` where contact_name = '%s' and customer_name = '%s' and docstatus != 2" %(self.doc,contact_person,self.doc.customer), as_dict=1) - if contact: - ret = { - 'contact_no' : contact and contact[0]['contact_no'] or '', - 'email_id' : contact and contact[0]['email_id'] or '' - } - return ret - else: - msgprint("Contact Person : %s does not exist in the system." % (self.doc,contact_person)) - raise Exception - - #calculate gross profit - #============================================= def get_gross_profit(self): pft, per_pft =0, 0 pft = flt(self.doc.project_value) - flt(self.doc.est_material_cost) @@ -77,16 +34,15 @@ class DocType: ret = {'gross_margin_value': pft, 'per_gross_margin': per_pft} return ret - # validate - #================================================ def validate(self): + """validate start date before end date""" if self.doc.project_start_date and self.doc.completion_date: if getdate(self.doc.completion_date) < getdate(self.doc.project_start_date): msgprint("Expected Completion Date can not be less than Project Start Date") raise Exception def on_update(self): - # update milestones + """add events for milestones""" webnotes.conn.sql("""delete from tabEvent where ref_type='Project' and ref_name=%s""", self.doc.name) for d in self.doclist: @@ -103,3 +59,12 @@ class DocType: event.ref_type = 'Project' event.ref_name = self.doc.name event.save(1) + + def update_percent_complete(self): + total = webnotes.conn.sql("""select count(*) from tabTask where project=%s""", + self.doc.name)[0][0] + completed = webnotes.conn.sql("""select count(*) from tabTask where + project=%s and status='Closed'""", self.doc.name)[0][0] + webnotes.conn.set_value("Project", self.doc.name, "percent_complete", + int(float(completed) / total * 100)) + diff --git a/projects/doctype/project/project.txt b/projects/doctype/project/project.txt index 43079afd28..88dfb97195 100644 --- a/projects/doctype/project/project.txt +++ b/projects/doctype/project/project.txt @@ -2,7 +2,7 @@ { "creation": "2013-03-07 11:55:07", "docstatus": 0, - "modified": "2013-06-03 17:03:08", + "modified": "2013-06-07 12:38:37", "modified_by": "Administrator", "owner": "Administrator" }, @@ -26,19 +26,14 @@ }, { "amend": 0, - "cancel": 1, - "create": 1, "doctype": "DocPerm", "name": "__common__", "parent": "Project", "parentfield": "permissions", "parenttype": "DocType", - "permlevel": 0, "read": 1, "report": 1, - "role": "Projects User", - "submit": 0, - "write": 1 + "submit": 0 }, { "doctype": "DocType", @@ -145,19 +140,6 @@ "options": "Internal\nExternal\nOther", "search_index": 0 }, - { - "description": "Tasks belonging to this Project.", - "doctype": "DocField", - "fieldname": "sb_tasks", - "fieldtype": "Section Break", - "label": "Tasks" - }, - { - "doctype": "DocField", - "fieldname": "project_tasks", - "fieldtype": "HTML", - "label": "Project Tasks" - }, { "description": "Important dates and commitments in your project life cycle", "doctype": "DocField", @@ -196,6 +178,14 @@ "oldfieldtype": "Text Editor", "search_index": 0 }, + { + "doctype": "DocField", + "fieldname": "percent_complete", + "fieldtype": "Percent", + "in_list_view": 1, + "label": "Percent Complete", + "read_only": 1 + }, { "doctype": "DocField", "fieldname": "company", @@ -290,6 +280,18 @@ "search_index": 1 }, { - "doctype": "DocPerm" + "cancel": 1, + "create": 1, + "doctype": "DocPerm", + "permlevel": 0, + "role": "Projects User", + "write": 1 + }, + { + "cancel": 0, + "create": 0, + "doctype": "DocPerm", + "permlevel": 1, + "role": "All" } ] \ No newline at end of file diff --git a/projects/doctype/task/task.py b/projects/doctype/task/task.py index ad2303efaf..6069073fd2 100644 --- a/projects/doctype/task/task.py +++ b/projects/doctype/task/task.py @@ -15,7 +15,7 @@ # along with this program. If not, see . from __future__ import unicode_literals -import webnotes +import webnotes, json from webnotes.utils import getdate, today from webnotes.model import db_exists @@ -59,4 +59,35 @@ class DocType: if self.doc.status=="Closed" and status != "Closed" and not self.doc.act_end_date: self.doc.act_end_date = today() - \ No newline at end of file + + def on_update(self): + """update percent complete in project""" + if self.doc.project: + webnotes.bean("Project", self.doc.project).controller.update_percent_complete() + +@webnotes.whitelist() +def get_events(start, end, filters=None): + from webnotes.widgets.reportview import build_match_conditions + if not webnotes.has_permission("Task"): + webnotes.msgprint(_("No Permission"), raise_exception=1) + + conditions = build_match_conditions("Task") + conditions and (" and " + conditions) or "" + + if filters: + filters = json.loads(filters) + for key in filters: + if filters[key]: + conditions += " and " + key + ' = "' + filters[key].replace('"', '\"') + '"' + + data = webnotes.conn.sql("""select name, exp_start_date, exp_end_date, + subject, status, project from `tabTask` + where ((exp_start_date between '%(start)s' and '%(end)s') \ + or (exp_end_date between '%(start)s' and '%(end)s')) + %(conditions)s""" % { + "start": start, + "end": end, + "conditions": conditions + }, as_dict=True, update={"allDay": 0}, debug=1) + + return data diff --git a/projects/doctype/time_log/time_log.py b/projects/doctype/time_log/time_log.py index 8ab46c1086..0a5adba583 100644 --- a/projects/doctype/time_log/time_log.py +++ b/projects/doctype/time_log/time_log.py @@ -5,7 +5,6 @@ import webnotes from webnotes import _ from webnotes.utils import cstr -from webnotes.widgets.reportview import build_match_conditions class OverlapError(webnotes.ValidationError): pass @@ -60,6 +59,10 @@ class DocType: @webnotes.whitelist() def get_events(start, end): + from webnotes.widgets.reportview import build_match_conditions + if not webnotes.has_permission("Time Log"): + webnotes.msgprint(_("No Permission"), raise_exception=1) + match = build_match_conditions("Time Log") data = webnotes.conn.sql("""select name, from_time, to_time, activity_type, task, project from `tabTime Log` diff --git a/projects/doctype/timesheet/__init__.py b/projects/doctype/timesheet/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/projects/doctype/timesheet/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/projects/doctype/timesheet/locale/_messages_doc.json b/projects/doctype/timesheet/locale/_messages_doc.json deleted file mode 100644 index fab2534615..0000000000 --- a/projects/doctype/timesheet/locale/_messages_doc.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - "Status", - "Timesheet By", - "Notes", - "Timesheet", - "Timesheet Date", - "Amendment Date", - "Cancelled", - "Draft", - "Submitted", - "Timesheet Details", - "Amended From", - "Projects" -] \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/ar-doc.json b/projects/doctype/timesheet/locale/ar-doc.json deleted file mode 100644 index 335b3a92ac..0000000000 --- a/projects/doctype/timesheet/locale/ar-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "\u0639\u062f\u0644 \u0645\u0646", - "Amendment Date": "\u0627\u0644\u062a\u0639\u062f\u064a\u0644 \u062a\u0627\u0631\u064a\u062e", - "Cancelled": "\u0625\u0644\u063a\u0627\u0621", - "Draft": "\u0645\u0633\u0648\u062f\u0629", - "Notes": "\u062a\u0644\u0627\u062d\u0638", - "Projects": "\u0645\u0634\u0627\u0631\u064a\u0639", - "Status": "\u062d\u0627\u0644\u0629", - "Submitted": "\u0627\u0644\u0645\u0642\u062f\u0645\u0629", - "Timesheet": "\u0633\u0627\u0639\u0627\u062a \u0627\u0644\u0639\u0645\u0644", - "Timesheet By": "\u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0632\u0645\u0646\u064a \u0628\u0648\u0627\u0633\u0637\u0629", - "Timesheet Date": "\u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0632\u0645\u0646\u064a \u062a\u0627\u0631\u064a\u062e", - "Timesheet Details": "\u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0632\u0645\u0646\u064a \u062a\u0641\u0627\u0635\u064a\u0644" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/de-doc.json b/projects/doctype/timesheet/locale/de-doc.json deleted file mode 100644 index e070b215b6..0000000000 --- a/projects/doctype/timesheet/locale/de-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "Ge\u00e4ndert von", - "Amendment Date": "\u00c4nderung Datum", - "Cancelled": "Abgesagt", - "Draft": "Entwurf", - "Notes": "Aufzeichnungen", - "Projects": "Projekte", - "Status": "Status", - "Submitted": "Eingereicht", - "Timesheet": "Timesheet", - "Timesheet By": "Timesheet By", - "Timesheet Date": "Timesheet Datum", - "Timesheet Details": "Timesheet Einzelheiten" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/es-doc.json b/projects/doctype/timesheet/locale/es-doc.json deleted file mode 100644 index a769174183..0000000000 --- a/projects/doctype/timesheet/locale/es-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "De modificada", - "Amendment Date": "Enmienda Fecha", - "Cancelled": "Cancelado", - "Draft": "Borrador", - "Notes": "Notas", - "Projects": "Proyectos", - "Status": "Estado", - "Submitted": "Enviado", - "Timesheet": "Parte de horas", - "Timesheet By": "Por parte de horas", - "Timesheet Date": "Fecha de parte de horas", - "Timesheet Details": "Detalles del parte de horas" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/fr-doc.json b/projects/doctype/timesheet/locale/fr-doc.json deleted file mode 100644 index 7fe0e3801e..0000000000 --- a/projects/doctype/timesheet/locale/fr-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "De modifi\u00e9e", - "Amendment Date": "Date de la modification", - "Cancelled": "Annul\u00e9", - "Draft": "Avant-projet", - "Notes": "Remarques", - "Projects": "Projets", - "Status": "Statut", - "Submitted": "Soumis", - "Timesheet": "Feuille de pr\u00e9sence", - "Timesheet By": "Feuille de temps par", - "Timesheet Date": "Date de feuille de temps", - "Timesheet Details": "D\u00e9tails des feuilles de temps" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/hi-doc.json b/projects/doctype/timesheet/locale/hi-doc.json deleted file mode 100644 index 18e02b754e..0000000000 --- a/projects/doctype/timesheet/locale/hi-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "\u0938\u0947 \u0938\u0902\u0936\u094b\u0927\u093f\u0924", - "Amendment Date": "\u0938\u0902\u0936\u094b\u0927\u0928 \u0924\u093f\u0925\u093f", - "Cancelled": "Cancelled", - "Draft": "\u092e\u0938\u094c\u0926\u093e", - "Notes": "\u0928\u094b\u091f\u094d\u0938", - "Projects": "\u092a\u0930\u093f\u092f\u094b\u091c\u0928\u093e\u0913\u0902", - "Status": "\u0939\u0948\u0938\u093f\u092f\u0924", - "Submitted": "\u092a\u0947\u0936", - "Timesheet": "Timesheet", - "Timesheet By": "\u0926\u094d\u0935\u093e\u0930\u093e Timesheet", - "Timesheet Date": "Timesheet \u0924\u093f\u0925\u093f", - "Timesheet Details": "Timesheet \u0935\u093f\u0935\u0930\u0923" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/hr-doc.json b/projects/doctype/timesheet/locale/hr-doc.json deleted file mode 100644 index 5f7e1d6ec0..0000000000 --- a/projects/doctype/timesheet/locale/hr-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "Izmijenjena Od", - "Amendment Date": "Amandman Datum", - "Cancelled": "Otkazan", - "Draft": "Skica", - "Notes": "Bilje\u0161ke", - "Projects": "Projekti", - "Status": "Status", - "Submitted": "Prijavljen", - "Timesheet": "Kontrolna kartica", - "Timesheet By": "Timesheet Do", - "Timesheet Date": "Timesheet Datum", - "Timesheet Details": "Timesheet Detalji" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/nl-doc.json b/projects/doctype/timesheet/locale/nl-doc.json deleted file mode 100644 index 035df4c061..0000000000 --- a/projects/doctype/timesheet/locale/nl-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "Gewijzigd Van", - "Amendment Date": "Wijziging Datum", - "Cancelled": "Geannuleerd", - "Draft": "Ontwerp", - "Notes": "Opmerkingen", - "Projects": "Projecten", - "Status": "Staat", - "Submitted": "Ingezonden", - "Timesheet": "Rooster", - "Timesheet By": "Timesheet Door", - "Timesheet Date": "Timesheet Datum", - "Timesheet Details": "Timesheet Details" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/pt-BR-doc.json b/projects/doctype/timesheet/locale/pt-BR-doc.json deleted file mode 100644 index 5ad54cf3df..0000000000 --- a/projects/doctype/timesheet/locale/pt-BR-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "Corrigido De", - "Amendment Date": "Data da Corre\u00e7\u00e3o", - "Cancelled": "Cancelado", - "Draft": "Rascunho", - "Notes": "Notas", - "Projects": "Projetos", - "Status": "Estado", - "Submitted": "Enviado", - "Timesheet": "Quadro de Hor\u00e1rios", - "Timesheet By": "Quadro de Hor\u00e1rios Por", - "Timesheet Date": "Data do Quadro de Hor\u00e1rios", - "Timesheet Details": "Detalhes do Quadro de Hor\u00e1rios" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/pt-doc.json b/projects/doctype/timesheet/locale/pt-doc.json deleted file mode 100644 index f31ce7e4c2..0000000000 --- a/projects/doctype/timesheet/locale/pt-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "Alterado De", - "Amendment Date": "Data emenda", - "Cancelled": "Cancelado", - "Draft": "Rascunho", - "Notes": "Notas", - "Projects": "Projetos", - "Status": "Estado", - "Submitted": "Enviado", - "Timesheet": "Quadro de Hor\u00e1rios", - "Timesheet By": "Por Timesheet", - "Timesheet Date": "Data Timesheet", - "Timesheet Details": "Detalhes quadro de hor\u00e1rios" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/sr-doc.json b/projects/doctype/timesheet/locale/sr-doc.json deleted file mode 100644 index c9f9d9f6ab..0000000000 --- a/projects/doctype/timesheet/locale/sr-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "\u0418\u0437\u043c\u0435\u045a\u0435\u043d\u0430 \u043e\u0434", - "Amendment Date": "\u0410\u043c\u0430\u043d\u0434\u043c\u0430\u043d \u0414\u0430\u0442\u0443\u043c", - "Cancelled": "\u041e\u0442\u043a\u0430\u0437\u0430\u043d", - "Draft": "\u041d\u0430\u0446\u0440\u0442", - "Notes": "\u0411\u0435\u043b\u0435\u0448\u043a\u0435", - "Projects": "\u041f\u0440\u043e\u0458\u0435\u043a\u0442\u0438", - "Status": "\u0421\u0442\u0430\u0442\u0443\u0441", - "Submitted": "\u041f\u043e\u0434\u043d\u0435\u0442", - "Timesheet": "\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u0446\u0430", - "Timesheet By": "\u041f\u043e \u0422\u0438\u043c\u0435\u0441\u0445\u0435\u0435\u0442", - "Timesheet Date": "\u0414\u0430\u0442\u0443\u043c \u0422\u0438\u043c\u0435\u0441\u0445\u0435\u0435\u0442", - "Timesheet Details": "\u0422\u0438\u043c\u0435\u0441\u0445\u0435\u0435\u0442 \u0414\u0435\u0442\u0430\u0459\u0438" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/ta-doc.json b/projects/doctype/timesheet/locale/ta-doc.json deleted file mode 100644 index cb4cc2520f..0000000000 --- a/projects/doctype/timesheet/locale/ta-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "\u0bae\u0bc1\u0ba4\u0bb2\u0bcd \u0ba4\u0bbf\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f", - "Amendment Date": "\u0ba4\u0bbf\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0ba4\u0bcd\u0ba4\u0bc8 \u0ba4\u0bc7\u0ba4\u0bbf", - "Cancelled": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1", - "Draft": "\u0b95\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0bb5\u0bc0\u0b9a\u0bcd\u0b9a\u0bc1", - "Notes": "\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd", - "Projects": "\u0ba4\u0bbf\u0b9f\u0bcd\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd", - "Status": "\u0b85\u0ba8\u0bcd\u0ba4\u0bb8\u0bcd\u0ba4\u0bc1", - "Submitted": "\u0b9a\u0bae\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1", - "Timesheet": "Timesheet", - "Timesheet By": "By Timesheet", - "Timesheet Date": "Timesheet \u0ba4\u0bc7\u0ba4\u0bbf", - "Timesheet Details": "Timesheet \u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/locale/th-doc.json b/projects/doctype/timesheet/locale/th-doc.json deleted file mode 100644 index 6003a4c1d2..0000000000 --- a/projects/doctype/timesheet/locale/th-doc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "Amended From": "\u0e41\u0e01\u0e49\u0e44\u0e02\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21", - "Amendment Date": "\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e01\u0e49\u0e44\u0e02", - "Cancelled": "\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01", - "Draft": "\u0e23\u0e48\u0e32\u0e07", - "Notes": "\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38", - "Projects": "\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23", - "Status": "\u0e2a\u0e16\u0e32\u0e19\u0e30", - "Submitted": "Submitted", - "Timesheet": "timesheet", - "Timesheet By": "timesheet \u0e42\u0e14\u0e22", - "Timesheet Date": "\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48 timesheet", - "Timesheet Details": "\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14 Timesheet" -} \ No newline at end of file diff --git a/projects/doctype/timesheet/timesheet.js b/projects/doctype/timesheet/timesheet.js deleted file mode 100644 index ab2e05b9de..0000000000 --- a/projects/doctype/timesheet/timesheet.js +++ /dev/null @@ -1,53 +0,0 @@ -// ERPNext - web based ERP (http://erpnext.com) -// Copyright (C) 2012 Web Notes Technologies Pvt Ltd -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - - -// ======================= OnLoad ============================================= -cur_frm.cscript.onload = function(doc,cdt,cdn){ - if(!doc.status) set_multiple(cdt,cdn,{status:'Draft'}); - if(!doc.timesheet_date) set_multiple(cdt,cdn,{timesheet_date:get_today()}); -} - -cur_frm.cscript.refresh = function(doc,cdt,cdn){ - cur_frm.set_intro("Timesheets will soon be removed. Please create a new Time Log. To create \ - a new Time Log, to to Projects > Time Log > New Time Log. This will be removed in a few days.") -} - - -cur_frm.fields_dict['timesheet_details'].grid.get_field("project_name").get_query = function(doc,cdt,cdn){ - var cond=cond1=''; - var d = locals[cdt][cdn]; - //if(d.customer_name) cond = 'ifnull(`tabProject`.customer_name, "") = "'+d.customer_name+'" AND'; - if(d.task_id) cond1 = 'ifnull(`tabTask`.project, "") = `tabProject`.name AND `tabTask`.name = "'+d.task_id+'" AND'; - - return repl('SELECT distinct `tabProject`.`name` FROM `tabProject`, `tabTask` WHERE %(cond1)s `tabProject`.`name` LIKE "%s" ORDER BY `tabProject`.`name` ASC LIMIT 50', {cond1:cond1}); -} - -cur_frm.cscript.task_name = function(doc, cdt, cdn){ - var d = locals[cdt][cdn]; - if(d.task_name) get_server_fields('get_task_details', d.task_name, 'timesheet_details', doc, cdt, cdn, 1); -} - -cur_frm.fields_dict['timesheet_details'].grid.get_field("task_name").get_query = function(doc,cdt,cdn){ - var cond=''; - var d = locals[cdt][cdn]; - if(d.project_name) cond = 'ifnull(`tabTask`.project, "") = "'+d.project_name+'" AND'; - - return repl('SELECT distinct `tabTask`.`subject` FROM `tabTask` WHERE %(cond)s `tabTask`.`subject` LIKE "%s" ORDER BY `tabTask`.`subject` ASC LIMIT 50', {cond:cond}); -} - -cur_frm.fields_dict.timesheet_details.grid.get_field("customer_name").get_query = - erpnext.utils.customer_query; \ No newline at end of file diff --git a/projects/doctype/timesheet/timesheet.py b/projects/doctype/timesheet/timesheet.py deleted file mode 100644 index 8123278140..0000000000 --- a/projects/doctype/timesheet/timesheet.py +++ /dev/null @@ -1,97 +0,0 @@ -# ERPNext - web based ERP (http://erpnext.com) -# Copyright (C) 2012 Web Notes Technologies Pvt Ltd -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -from __future__ import unicode_literals -import webnotes -import time, datetime - -from webnotes.utils import cint, cstr, getdate, now, nowdate -from webnotes.model import db_exists -from webnotes.model.bean import getlist, copy_doclist -from webnotes import msgprint - -sql = webnotes.conn.sql - -class DocType: - def __init__(self,doc,doclist=[]): - self.doc = doc - self.doclist = doclist - - def get_customer_details(self, project_name): - cust = sql("select customer, customer_name from `tabProject` where name = %s", project_name) - if cust: - ret = {'customer': cust and cust[0][0] or '', 'customer_name': cust and cust[0][1] or ''} - return (ret) - - def get_task_details(self, task_sub): - tsk = sql("select name, project, customer, customer_name from `tabTask` where subject = %s", task_sub) - if tsk: - ret = {'task_id': tsk and tsk[0][0] or '', 'project_name': tsk and tsk[0][1] or '', 'customer_name': tsk and tsk[0][3] or ''} - return ret - - def get_time(self, timestr): - if len(timestr.split(":"))==2: - format = "%H:%M" - else: - format = "%H:%M:%S" - - return time.strptime(timestr, format) - - def validate(self): - msgprint("Please create a new Time Log", raise_exception=True) - - if getdate(self.doc.timesheet_date) > getdate(nowdate()): - msgprint("You can not prepare timesheet for future date") - raise Exception - - chk = sql("select name from `tabTimesheet` where timesheet_date=%s and owner=%s and status!='Cancelled' and name!=%s", (self.doc.timesheet_date, self.doc.owner, self.doc.name)) - if chk: - msgprint("You have already created timesheet "+ cstr(chk and chk[0][0] or '')+" for this date.") - raise Exception - - for d in getlist(self.doclist, 'timesheet_details'): - if d.act_start_time and d.act_end_time: - d1 = self.get_time(d.act_start_time) - d2 = self.get_time(d.act_end_time) - - if d1 > d2: - msgprint("Start time can not be greater than end time. Check for Task Id : "+cstr(d.task_id)) - raise Exception - elif d1 == d2: - msgprint("Start time and end time can not be same. Check for Task Id : "+cstr(d.task_id)) - raise Exception - - def calculate_total_hr(self): - for d in getlist(self.doclist, 'timesheet_details'): - x1 = d.act_start_time.split(":") - x2 = d.act_end_time.split(":") - - d1 = datetime.timedelta(minutes=cint(x1[1]), hours=cint(x1[0])) - d2 = datetime.timedelta(minutes=cint(x2[1]), hours=cint(x2[0])) - d3 = (d2 - d1).seconds - d.act_total_hrs = time.strftime("%H:%M:%S", time.gmtime(d3)) - sql("update `tabTimesheet Detail` set act_total_hrs = %s where parent=%s and name=%s", (d.act_total_hrs,self.doc.name,d.name)) - - def on_update(self): - self.calculate_total_hr() - webnotes.conn.set(self.doc, 'status', 'Draft') - - def on_submit(self): - webnotes.conn.set(self.doc, 'status', 'Submitted') - - def on_cancel(self): - webnotes.conn.set(self.doc, 'status', 'Cancelled') - \ No newline at end of file diff --git a/projects/doctype/timesheet/timesheet.txt b/projects/doctype/timesheet/timesheet.txt deleted file mode 100644 index d64a3e17a0..0000000000 --- a/projects/doctype/timesheet/timesheet.txt +++ /dev/null @@ -1,180 +0,0 @@ -[ - { - "creation": "2013-01-29 19:25:50", - "docstatus": 0, - "modified": "2013-02-26 13:44:35", - "modified_by": "Administrator", - "owner": "ashwini@webnotestech.com" - }, - { - "autoname": "TimeSheet.#####", - "doctype": "DocType", - "is_submittable": 1, - "module": "Projects", - "name": "__common__", - "search_fields": "status, owner, timesheet_date" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Timesheet", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocPerm", - "name": "__common__", - "parent": "Timesheet", - "parentfield": "permissions", - "parenttype": "DocType", - "read": 1 - }, - { - "doctype": "DocType", - "name": "Timesheet" - }, - { - "doctype": "DocField", - "fieldname": "timesheet_details_section_break", - "fieldtype": "Section Break", - "label": "Timesheet Details" - }, - { - "default": "Today", - "doctype": "DocField", - "fieldname": "timesheet_date", - "fieldtype": "Date", - "in_filter": 1, - "label": "Timesheet Date", - "oldfieldname": "timesheet_date", - "oldfieldtype": "Date", - "reqd": 1, - "search_index": 1 - }, - { - "doctype": "DocField", - "fieldname": "column_break_3", - "fieldtype": "Column Break" - }, - { - "default": "Draft", - "doctype": "DocField", - "fieldname": "status", - "fieldtype": "Select", - "in_filter": 0, - "in_list_view": 1, - "label": "Status", - "oldfieldname": "status", - "oldfieldtype": "Select", - "options": "\nDraft\nSubmitted\nCancelled", - "read_only": 1, - "reqd": 1, - "search_index": 1 - }, - { - "doctype": "DocField", - "fieldname": "section_break0", - "fieldtype": "Section Break", - "options": "Simple" - }, - { - "doctype": "DocField", - "fieldname": "timesheet_details", - "fieldtype": "Table", - "label": "Timesheet Details", - "oldfieldname": "timesheet_details", - "oldfieldtype": "Table", - "options": "Timesheet Detail" - }, - { - "doctype": "DocField", - "fieldname": "section_break_7", - "fieldtype": "Section Break" - }, - { - "doctype": "DocField", - "fieldname": "notes", - "fieldtype": "Text", - "in_list_view": 1, - "label": "Notes" - }, - { - "doctype": "DocField", - "fieldname": "owner", - "fieldtype": "Link", - "in_filter": 1, - "label": "Timesheet By", - "oldfieldname": "owner", - "oldfieldtype": "Link", - "options": "Profile", - "reqd": 1, - "search_index": 0 - }, - { - "doctype": "DocField", - "fieldname": "amended_from", - "fieldtype": "Data", - "hidden": 1, - "label": "Amended From", - "oldfieldname": "amended_from", - "oldfieldtype": "Data", - "print_hide": 1, - "read_only": 1 - }, - { - "doctype": "DocField", - "fieldname": "amendment_date", - "fieldtype": "Date", - "hidden": 1, - "label": "Amendment Date", - "oldfieldname": "amendment_date", - "oldfieldtype": "Date", - "print_hide": 1, - "read_only": 1 - }, - { - "amend": 1, - "cancel": 1, - "create": 1, - "doctype": "DocPerm", - "permlevel": 0, - "report": 1, - "role": "Projects User", - "submit": 0, - "write": 1 - }, - { - "amend": 0, - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1, - "report": 0, - "role": "Projects User", - "submit": 0, - "write": 0 - }, - { - "amend": 1, - "cancel": 1, - "create": 1, - "doctype": "DocPerm", - "permlevel": 0, - "report": 1, - "role": "System Manager", - "submit": 1, - "write": 1 - }, - { - "amend": 0, - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1, - "report": 0, - "role": "System Manager", - "submit": 0, - "write": 0 - } -] \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/__init__.py b/projects/doctype/timesheet_detail/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/projects/doctype/timesheet_detail/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/projects/doctype/timesheet_detail/locale/_messages_doc.json b/projects/doctype/timesheet_detail/locale/_messages_doc.json deleted file mode 100644 index a51a3e2464..0000000000 --- a/projects/doctype/timesheet_detail/locale/_messages_doc.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - "Task Id", - "Activity Type", - "Actual End Time", - "Actual Start Time", - "Project", - "Total Hours (Actual)", - "Customer Name", - "Additional Info", - "Timesheet Detail", - "Task Name", - "Projects" -] \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/ar-doc.json b/projects/doctype/timesheet_detail/locale/ar-doc.json deleted file mode 100644 index b4d1ce23c7..0000000000 --- a/projects/doctype/timesheet_detail/locale/ar-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "\u0627\u0644\u0646\u0634\u0627\u0637 \u0646\u0648\u0639", - "Actual End Time": "\u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0641\u0639\u0644\u064a", - "Actual Start Time": "\u0648\u0642\u062a \u0627\u0644\u0628\u062f\u0621 \u0627\u0644\u0641\u0639\u0644\u064a", - "Additional Info": "\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0625\u0636\u0627\u0641\u064a\u0629", - "Customer Name": "\u0627\u0633\u0645 \u0627\u0644\u0639\u0645\u064a\u0644", - "Project": "\u0645\u0634\u0631\u0648\u0639", - "Projects": "\u0645\u0634\u0627\u0631\u064a\u0639", - "Task Id": "\u0627\u0644\u0645\u0647\u0645\u0629 \u0631\u0642\u0645", - "Task Name": "\u0627\u0633\u0645 \u0627\u0644\u0645\u0647\u0645\u0629", - "Timesheet Detail": "\u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0632\u0645\u0646\u064a \u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644", - "Total Hours (Actual)": "\u0645\u062c\u0645\u0648\u0639 \u0633\u0627\u0639\u0627\u062a (\u0627\u0644\u0641\u0639\u0644\u064a\u0629)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/de-doc.json b/projects/doctype/timesheet_detail/locale/de-doc.json deleted file mode 100644 index 9a29d33e25..0000000000 --- a/projects/doctype/timesheet_detail/locale/de-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "Art der T\u00e4tigkeit", - "Actual End Time": "Tats\u00e4chliche Endzeit", - "Actual Start Time": "Tats\u00e4chliche Startzeit", - "Additional Info": "Zus\u00e4tzliche Informationen", - "Customer Name": "Name des Kunden", - "Project": "Projekt", - "Projects": "Projekte", - "Task Id": "Task-Id", - "Task Name": "Task-Name", - "Timesheet Detail": "Timesheet Details", - "Total Hours (Actual)": "Total Hours (Actual)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/es-doc.json b/projects/doctype/timesheet_detail/locale/es-doc.json deleted file mode 100644 index 0a28e7fba0..0000000000 --- a/projects/doctype/timesheet_detail/locale/es-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "Tipo de actividad", - "Actual End Time": "Hora de finalizaci\u00f3n real", - "Actual Start Time": "Tiempo real de inicio", - "Additional Info": "Informaci\u00f3n adicional", - "Customer Name": "Nombre del cliente", - "Project": "Proyecto", - "Projects": "Proyectos", - "Task Id": "Tarea Id", - "Task Name": "Nombre de tarea", - "Timesheet Detail": "Detalle de parte de horas", - "Total Hours (Actual)": "Horas totales (real)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/fr-doc.json b/projects/doctype/timesheet_detail/locale/fr-doc.json deleted file mode 100644 index 269ede8487..0000000000 --- a/projects/doctype/timesheet_detail/locale/fr-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "Type d'activit\u00e9", - "Actual End Time": "Heure de fin r\u00e9elle", - "Actual Start Time": "Heure de d\u00e9but r\u00e9elle", - "Additional Info": "Informations additionnelles \u00e0", - "Customer Name": "Nom du client", - "Project": "Projet", - "Projects": "Projets", - "Task Id": "T\u00e2che Id", - "Task Name": "Nom de la t\u00e2che", - "Timesheet Detail": "D\u00e9tail des feuilles de temps", - "Total Hours (Actual)": "Total des heures (r\u00e9elles)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/hi-doc.json b/projects/doctype/timesheet_detail/locale/hi-doc.json deleted file mode 100644 index 4d348713f9..0000000000 --- a/projects/doctype/timesheet_detail/locale/hi-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "\u0917\u0924\u093f\u0935\u093f\u0927\u093f \u092a\u094d\u0930\u0915\u093e\u0930", - "Actual End Time": "\u0935\u093e\u0938\u094d\u0924\u0935\u093f\u0915 \u0905\u0902\u0924 \u0938\u092e\u092f", - "Actual Start Time": "\u0935\u093e\u0938\u094d\u0924\u0935\u093f\u0915 \u092a\u094d\u0930\u093e\u0930\u0902\u092d \u0938\u092e\u092f", - "Additional Info": "\u0905\u0924\u093f\u0930\u093f\u0915\u094d\u0924 \u091c\u093e\u0928\u0915\u093e\u0930\u0940", - "Customer Name": "\u0917\u094d\u0930\u093e\u0939\u0915 \u0915\u093e \u0928\u093e\u092e", - "Project": "\u092a\u0930\u093f\u092f\u094b\u091c\u0928\u093e", - "Projects": "\u092a\u0930\u093f\u092f\u094b\u091c\u0928\u093e\u0913\u0902", - "Task Id": "\u091f\u093e\u0938\u094d\u0915 \u0906\u0908\u0921\u0940", - "Task Name": "\u0915\u093e\u0930\u094d\u092f \u0915\u093e \u0928\u093e\u092e", - "Timesheet Detail": "Timesheet \u0935\u093f\u0938\u094d\u0924\u093e\u0930", - "Total Hours (Actual)": "\u0915\u0941\u0932 \u0918\u0902\u091f\u0947 (\u0935\u093e\u0938\u094d\u0924\u0935\u093f\u0915)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/hr-doc.json b/projects/doctype/timesheet_detail/locale/hr-doc.json deleted file mode 100644 index d19276ad81..0000000000 --- a/projects/doctype/timesheet_detail/locale/hr-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "Aktivnost Tip", - "Actual End Time": "Stvarni Vrijeme zavr\u0161etka", - "Actual Start Time": "Stvarni Vrijeme po\u010detka", - "Additional Info": "Dodatne informacije", - "Customer Name": "Naziv klijenta", - "Project": "Projekt", - "Projects": "Projekti", - "Task Id": "Zadatak Id", - "Task Name": "Zadatak Ime", - "Timesheet Detail": "Timesheet Detalj", - "Total Hours (Actual)": "Ukupno vrijeme (Stvarni)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/nl-doc.json b/projects/doctype/timesheet_detail/locale/nl-doc.json deleted file mode 100644 index 83054402b4..0000000000 --- a/projects/doctype/timesheet_detail/locale/nl-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "Activiteit Type", - "Actual End Time": "Werkelijke Eindtijd", - "Actual Start Time": "Werkelijke Starttijd", - "Additional Info": "Extra informatie", - "Customer Name": "Klantnaam", - "Project": "Project", - "Projects": "Projecten", - "Task Id": "Taak-id", - "Task Name": "Taaknaam", - "Timesheet Detail": "Timesheet Detail", - "Total Hours (Actual)": "Totaal uren (werkelijke)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/pt-BR-doc.json b/projects/doctype/timesheet_detail/locale/pt-BR-doc.json deleted file mode 100644 index b11f35a007..0000000000 --- a/projects/doctype/timesheet_detail/locale/pt-BR-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "Tipo da Atividade", - "Actual End Time": "Tempos Final Real", - "Actual Start Time": "Hor\u00e1rio de In\u00edcio Real", - "Additional Info": "Informa\u00e7\u00f5es Adicionais", - "Customer Name": "Nome do cliente", - "Project": "Projeto", - "Projects": "Projetos", - "Task Id": "ID da Tarefa", - "Task Name": "Nome da Tarefa", - "Timesheet Detail": "Detalhe do Quadro de Hor\u00e1rios", - "Total Hours (Actual)": "Total de Horas (Real)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/pt-doc.json b/projects/doctype/timesheet_detail/locale/pt-doc.json deleted file mode 100644 index b2dcf2b887..0000000000 --- a/projects/doctype/timesheet_detail/locale/pt-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "Tipo de Atividade", - "Actual End Time": "Fim dos Tempos real", - "Actual Start Time": "Hor\u00e1rio de in\u00edcio real", - "Additional Info": "Informa\u00e7\u00f5es Adicionais", - "Customer Name": "Nome do cliente", - "Project": "Projeto", - "Projects": "Projetos", - "Task Id": "Tarefa Id", - "Task Name": "Nome da Tarefa", - "Timesheet Detail": "Detalhe de quadro de hor\u00e1rios", - "Total Hours (Actual)": "Total de Horas (Real)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/sr-doc.json b/projects/doctype/timesheet_detail/locale/sr-doc.json deleted file mode 100644 index b29f234325..0000000000 --- a/projects/doctype/timesheet_detail/locale/sr-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "\u0410\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442 \u0422\u0438\u043f", - "Actual End Time": "\u0421\u0443\u043d\u0446\u0435 \u041a\u0440\u0430\u0458\u045a\u0435 \u0432\u0440\u0435\u043c\u0435", - "Actual Start Time": "\u0421\u0443\u043d\u0446\u0435 \u0421\u0442\u0430\u0440\u0442 \u0422\u0438\u043c\u0435", - "Additional Info": "\u0414\u043e\u0434\u0430\u0442\u043d\u0438 \u043f\u043e\u0434\u0430\u0446\u0438", - "Customer Name": "\u0418\u043c\u0435 \u043a\u043b\u0438\u0458\u0435\u043d\u0442\u0430", - "Project": "\u041f\u0440\u043e\u0458\u0435\u043a\u0430\u0442", - "Projects": "\u041f\u0440\u043e\u0458\u0435\u043a\u0442\u0438", - "Task Id": "\u0417\u0430\u0434\u0430\u0442\u0430\u043a \u0418\u0434", - "Task Name": "\u041d\u0430\u0437\u0438\u0432 \u0437\u0430\u0434\u0430\u0442\u043a\u0430", - "Timesheet Detail": "\u0422\u0438\u043c\u0435\u0441\u0445\u0435\u0435\u0442 \u0414\u0435\u0442\u0430\u0459", - "Total Hours (Actual)": "\u0423\u043a\u0443\u043f\u043d\u043e \u0432\u0440\u0435\u043c\u0435 (\u0421\u0443\u043d\u0446\u0435)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/ta-doc.json b/projects/doctype/timesheet_detail/locale/ta-doc.json deleted file mode 100644 index d6abb7fa0c..0000000000 --- a/projects/doctype/timesheet_detail/locale/ta-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "\u0ba8\u0b9f\u0bb5\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc8 \u0bb5\u0b95\u0bc8", - "Actual End Time": "\u0b89\u0ba3\u0bcd\u0bae\u0bc8\u0baf\u0bbe\u0ba9 \u0bae\u0bc1\u0b9f\u0bbf\u0bb5\u0bc1 \u0ba8\u0bc7\u0bb0\u0bae\u0bcd", - "Actual Start Time": "\u0b89\u0ba3\u0bcd\u0bae\u0bc8\u0baf\u0bbe\u0ba9 \u0ba4\u0bc6\u0bbe\u0b9f\u0b95\u0bcd\u0b95 \u0ba8\u0bc7\u0bb0\u0bae\u0bcd", - "Additional Info": "\u0b95\u0bc2\u0b9f\u0bc1\u0ba4\u0bb2\u0bcd \u0ba4\u0b95\u0bb5\u0bb2\u0bcd", - "Customer Name": "\u0bb5\u0bbe\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc8\u0baf\u0bbe\u0bb3\u0bb0\u0bcd \u0baa\u0bc6\u0baf\u0bb0\u0bcd", - "Project": "\u0ba4\u0bbf\u0b9f\u0bcd\u0b9f\u0bae\u0bcd", - "Projects": "\u0ba4\u0bbf\u0b9f\u0bcd\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd", - "Task Id": "\u0baa\u0ba3\u0bbf \u0b85\u0b9f\u0bc8\u0baf\u0bbe\u0bb3\u0bae\u0bcd", - "Task Name": "\u0baa\u0ba3\u0bbf \u0baa\u0bc6\u0baf\u0bb0\u0bcd", - "Timesheet Detail": "Timesheet \u0bb5\u0bbf\u0bb0\u0bbf\u0bb5\u0bbe\u0b95", - "Total Hours (Actual)": "\u0bae\u0bc6\u0bbe\u0ba4\u0bcd\u0ba4 \u0ba8\u0bc7\u0bb0\u0bae\u0bcd (\u0b85\u0b9a\u0bb2\u0bcd)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/locale/th-doc.json b/projects/doctype/timesheet_detail/locale/th-doc.json deleted file mode 100644 index 197e90f789..0000000000 --- a/projects/doctype/timesheet_detail/locale/th-doc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Activity Type": "\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21", - "Actual End Time": "\u0e40\u0e27\u0e25\u0e32\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14\u0e08\u0e23\u0e34\u0e07", - "Actual Start Time": "\u0e40\u0e27\u0e25\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e08\u0e23\u0e34\u0e07", - "Additional Info": "\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21", - "Customer Name": "\u0e0a\u0e37\u0e48\u0e2d\u0e25\u0e39\u0e01\u0e04\u0e49\u0e32", - "Project": "\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23", - "Projects": "\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23", - "Task Id": "\u0e23\u0e2b\u0e31\u0e2a\u0e07\u0e32\u0e19", - "Task Name": "\u0e0a\u0e37\u0e48\u0e2d\u0e07\u0e32\u0e19", - "Timesheet Detail": "\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14 Timesheet", - "Total Hours (Actual)": "\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e23\u0e27\u0e21 (\u0e08\u0e23\u0e34\u0e07)" -} \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/timesheet_detail.py b/projects/doctype/timesheet_detail/timesheet_detail.py deleted file mode 100644 index 7f48feb2eb..0000000000 --- a/projects/doctype/timesheet_detail/timesheet_detail.py +++ /dev/null @@ -1,22 +0,0 @@ -# ERPNext - web based ERP (http://erpnext.com) -# Copyright (C) 2012 Web Notes Technologies Pvt Ltd -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl \ No newline at end of file diff --git a/projects/doctype/timesheet_detail/timesheet_detail.txt b/projects/doctype/timesheet_detail/timesheet_detail.txt deleted file mode 100644 index b99425b411..0000000000 --- a/projects/doctype/timesheet_detail/timesheet_detail.txt +++ /dev/null @@ -1,132 +0,0 @@ -[ - { - "creation": "2013-01-10 16:34:18", - "docstatus": 0, - "modified": "2013-01-22 14:50:09", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "autoname": "TSD.#####", - "doctype": "DocType", - "istable": 1, - "module": "Projects", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Timesheet Detail", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocType", - "name": "Timesheet Detail" - }, - { - "doctype": "DocField", - "fieldname": "act_start_time", - "fieldtype": "Time", - "label": "Actual Start Time", - "oldfieldname": "act_start_time", - "oldfieldtype": "Time", - "print_width": "160px", - "reqd": 1, - "width": "160px" - }, - { - "doctype": "DocField", - "fieldname": "act_end_time", - "fieldtype": "Time", - "label": "Actual End Time", - "oldfieldname": "act_end_time", - "oldfieldtype": "Time", - "print_width": "160px", - "reqd": 1, - "width": "160px" - }, - { - "doctype": "DocField", - "fieldname": "activity_type", - "fieldtype": "Link", - "label": "Activity Type", - "options": "Activity Type", - "print_width": "200px", - "reqd": 1, - "search_index": 0, - "width": "200px" - }, - { - "doctype": "DocField", - "fieldname": "other_details", - "fieldtype": "Text", - "label": "Additional Info", - "oldfieldname": "other_details", - "oldfieldtype": "Text", - "print_width": "200px", - "width": "200px" - }, - { - "doctype": "DocField", - "fieldname": "act_total_hrs", - "fieldtype": "Data", - "label": "Total Hours (Actual)", - "oldfieldname": "act_total_hrs", - "oldfieldtype": "Data", - "print_width": "100px", - "read_only": 1, - "width": "100px" - }, - { - "doctype": "DocField", - "fieldname": "customer_name", - "fieldtype": "Link", - "label": "Customer Name", - "oldfieldname": "customer_name", - "oldfieldtype": "Data", - "options": "Customer", - "print_width": "150px", - "width": "150px" - }, - { - "doctype": "DocField", - "fieldname": "project_name", - "fieldtype": "Link", - "in_filter": 1, - "label": "Project", - "oldfieldname": "project_name", - "oldfieldtype": "Link", - "options": "Project", - "print_width": "150px", - "reqd": 0, - "search_index": 1, - "width": "150px" - }, - { - "doctype": "DocField", - "fieldname": "task_id", - "fieldtype": "Link", - "in_filter": 1, - "label": "Task Id", - "oldfieldname": "task_id", - "oldfieldtype": "Link", - "options": "Task", - "print_width": "150px", - "search_index": 1, - "width": "150px" - }, - { - "doctype": "DocField", - "fieldname": "task_name", - "fieldtype": "Data", - "label": "Task Name", - "oldfieldname": "task_name", - "oldfieldtype": "Link", - "print_width": "250px", - "reqd": 0, - "search_index": 0, - "width": "250px" - } -] \ No newline at end of file