[projects] added ganttview, removed old timesheet
diff --git a/config.json b/config.json
index e0b85b1..33e898f 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 d4a034f..a6f32cb 100644
--- a/projects/doctype/project/project.js
+++ b/projects/doctype/project/project.js
@@ -15,20 +15,16 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// 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 = $('<div>')
- .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 1de551c..9455a98 100644
--- a/projects/doctype/project/project.py
+++ b/projects/doctype/project/project.py
@@ -18,57 +18,14 @@
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 @@
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 @@
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 43079af..88dfb97 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",
@@ -146,19 +141,6 @@
"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",
"fieldname": "sb_milestones",
@@ -198,6 +180,14 @@
},
{
"doctype": "DocField",
+ "fieldname": "percent_complete",
+ "fieldtype": "Percent",
+ "in_list_view": 1,
+ "label": "Percent Complete",
+ "read_only": 1
+ },
+ {
+ "doctype": "DocField",
"fieldname": "company",
"fieldtype": "Link",
"label": "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 ad2303e..6069073 100644
--- a/projects/doctype/task/task.py
+++ b/projects/doctype/task/task.py
@@ -15,7 +15,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
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 @@
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 8ab46c1..0a5adba 100644
--- a/projects/doctype/time_log/time_log.py
+++ b/projects/doctype/time_log/time_log.py
@@ -5,7 +5,6 @@
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 @@
@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 baffc48..0000000
--- 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 fab2534..0000000
--- 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 335b3a9..0000000
--- 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 e070b21..0000000
--- 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 a769174..0000000
--- 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 7fe0e38..0000000
--- 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 18e02b7..0000000
--- 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 5f7e1d6..0000000
--- 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 035df4c..0000000
--- 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 5ad54cf..0000000
--- 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 f31ce7e..0000000
--- 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 c9f9d9f..0000000
--- 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 cb4cc25..0000000
--- 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 6003a4c..0000000
--- 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 ab2e05b..0000000
--- 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 <http://www.gnu.org/licenses/>.
-
-
-// ======================= 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 8123278..0000000
--- 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 <http://www.gnu.org/licenses/>.
-
-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 d64a3e1..0000000
--- 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 baffc48..0000000
--- 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 a51a3e2..0000000
--- 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 b4d1ce2..0000000
--- 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 9a29d33..0000000
--- 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 0a28e7f..0000000
--- 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 269ede8..0000000
--- 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 4d34871..0000000
--- 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 d19276a..0000000
--- 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 8305440..0000000
--- 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 b11f35a..0000000
--- 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 b2dcf2b..0000000
--- 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 b29f234..0000000
--- 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 d6abb7f..0000000
--- 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 197e90f..0000000
--- 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 7f48feb..0000000
--- 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 <http://www.gnu.org/licenses/>.
-
-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 b99425b..0000000
--- 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