added Time Log
diff --git a/patches/patch_list.py b/patches/patch_list.py
index f60b204..1160809 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -199,4 +199,5 @@
 	'execute:webnotes.reload_doc("accounts", "Print Format", "Sales Invoice Classic") # 2013-02-26',
 	'execute:webnotes.reload_doc("accounts", "Print Format", "Sales Invoice Modern") # 2013-02-26',
 	'execute:webnotes.reload_doc("accounts", "Print Format", "Sales Invoice Spartan") # 2013-02-26',
+	"execute:(not webnotes.conn.exists('Role', 'Projects Manager')) and webnotes.doc({'doctype':'Role', 'role_name':'Projects Manager'}).insert()",
 ]
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/_messages_doc.json b/production/doctype/bom_replace_tool/locale/_messages_doc.json
deleted file mode 100644
index d6c8d69..0000000
--- a/production/doctype/bom_replace_tool/locale/_messages_doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-[
- "BOM Replace Tool", 
- "The BOM which will be replaced", 
- "New BOM", 
- "The new BOM after replacement", 
- "Production", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM", 
- "Replace", 
- "Current BOM"
-]
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/ar-doc.json b/production/doctype/bom_replace_tool/locale/ar-doc.json
deleted file mode 100644
index f746131..0000000
--- a/production/doctype/bom_replace_tool/locale/ar-doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "BOM Replace Tool": "BOM \u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0623\u062f\u0627\u0629", 
- "Current BOM": "BOM \u0627\u0644\u062d\u0627\u0644\u064a", 
- "New BOM": "BOM \u062c\u062f\u064a\u062f\u0629", 
- "Production": "\u0627\u0644\u0625\u0646\u062a\u0627\u062c", 
- "Replace": "\u0627\u0633\u062a\u0628\u062f\u0644", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644 BOM \u062e\u0627\u0635\u0629 \u0641\u064a \u062c\u0645\u064a\u0639 BOMs \u0627\u0644\u0623\u062e\u0631\u0649 \u0627\u0644\u062a\u064a \u064a\u0633\u062a\u062e\u062f\u0645 \u0641\u064a\u0647\u0627. \u0648\u0627\u0646\u0647 \u0633\u064a\u062d\u0644 \u0645\u062d\u0644 \u0627\u0644\u0631\u0627\u0628\u0637 BOM \u0627\u0644\u0642\u062f\u064a\u0645\u0629\u060c \u0648\u062a\u062d\u062f\u064a\u062b \u0648\u062a\u062c\u062f\u064a\u062f \u0627\u0644\u062a\u0643\u0644\u0641\u0629 "\u0627\u0644\u0628\u0646\u062f \u0627\u0646\u0641\u062c\u0627\u0631 BOM" \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u062c\u062f\u064a\u062f \u0648\u0641\u0642\u0627 BOM", 
- "The BOM which will be replaced": "\u0648BOM \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u0628\u062f\u0627\u0644\u0647\u0627", 
- "The new BOM after replacement": "\u0648BOM \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0628\u0639\u062f \u0627\u0633\u062a\u0628\u062f\u0627\u0644"
-}
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/es-doc.json b/production/doctype/bom_replace_tool/locale/es-doc.json
deleted file mode 100644
index 9834598..0000000
--- a/production/doctype/bom_replace_tool/locale/es-doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "BOM Replace Tool": "BOM Tool Reemplazar", 
- "Current BOM": "BOM actual", 
- "New BOM": "Nueva lista de materiales", 
- "Production": "Producci\u00f3n", 
- "Replace": "Reemplazar", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM": "Reemplazar un BOM particular en todas las listas de materiales de otros en los que se utiliza. Se sustituir\u00e1 el enlace BOM viejo, actualizar el costo y regenerar "Explosi\u00f3n lista de materiales Item" tabla seg\u00fan nueva lista de materiales", 
- "The BOM which will be replaced": "La lista de materiales que ser\u00e1 sustituido", 
- "The new BOM after replacement": "La lista de materiales nuevo despu\u00e9s de sustituirlo"
-}
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/fr-doc.json b/production/doctype/bom_replace_tool/locale/fr-doc.json
deleted file mode 100644
index 9284cad..0000000
--- a/production/doctype/bom_replace_tool/locale/fr-doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "BOM Replace Tool": "Outil Remplacer BOM", 
- "Current BOM": "Nomenclature actuelle", 
- "New BOM": "Nouvelle nomenclature", 
- "Production": "Production", 
- "Replace": "Remplacer", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM": "Remplacer une nomenclature particuli\u00e8re dans toutes les nomenclatures d'autres o\u00f9 il est utilis\u00e9. Il remplacera le lien de nomenclature ancienne, mettre \u00e0 jour les co\u00fbts et r\u00e9g\u00e9n\u00e9rer "Explosion de nomenclature article" la table comme pour une nouvelle nomenclature", 
- "The BOM which will be replaced": "La nomenclature qui sera remplac\u00e9", 
- "The new BOM after replacement": "La nouvelle nomenclature apr\u00e8s le remplacement"
-}
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/hi-doc.json b/production/doctype/bom_replace_tool/locale/hi-doc.json
deleted file mode 100644
index 3d9e9b4..0000000
--- a/production/doctype/bom_replace_tool/locale/hi-doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "BOM Replace Tool": "\u092c\u0940\u0913\u090f\u092e \u092c\u0926\u0932\u0947\u0902 \u0909\u092a\u0915\u0930\u0923", 
- "Current BOM": "\u0935\u0930\u094d\u0924\u092e\u093e\u0928 \u092c\u0940\u0913\u090f\u092e", 
- "New BOM": "\u0928\u0908 \u092c\u0940\u0913\u090f\u092e", 
- "Production": "\u0909\u0924\u094d\u092a\u093e\u0926\u0928", 
- "Replace": "\u092c\u0926\u0932\u0947\u0902", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM": "\u0905\u0928\u094d\u092f \u0938\u092d\u0940 BOMs \u091c\u0939\u093e\u0902 \u092f\u0939 \u092a\u094d\u0930\u092f\u094b\u0917 \u0915\u093f\u092f\u093e \u091c\u093e\u0924\u093e \u0939\u0948 \u092e\u0947\u0902 \u090f\u0915 \u0935\u093f\u0936\u0947\u0937 \u092c\u0940\u0913\u090f\u092e \u092c\u0926\u0932\u0947\u0902. \u092f\u0939 \u092a\u0941\u0930\u093e\u0928\u0947 \u092c\u0940\u0913\u090f\u092e \u0932\u093f\u0902\u0915 \u0915\u0940 \u091c\u0917\u0939, \u0932\u093e\u0917\u0924 \u0905\u0926\u094d\u092f\u0924\u0928 \u0914\u0930 \u0928\u092f\u093e \u092c\u0940\u0913\u090f\u092e \u0915\u0947 \u0905\u0928\u0941\u0938\u093e\u0930 "BOM \u0927\u092e\u093e\u0915\u093e \u0906\u0907\u091f\u092e" \u0924\u093e\u0932\u093f\u0915\u093e \u092a\u0941\u0928\u0930\u094d\u091c\u0928\u094d\u092e", 
- "The BOM which will be replaced": "\u092c\u0940\u0913\u090f\u092e \u091c\u094b \u092a\u094d\u0930\u0924\u093f\u0938\u094d\u0925\u093e\u092a\u093f\u0924 \u0915\u093f\u092f\u093e \u091c\u093e\u090f\u0917\u093e", 
- "The new BOM after replacement": "\u092c\u0926\u0932\u0928\u0947 \u0915\u0947 \u092c\u093e\u0926 \u0928\u090f \u092c\u0940\u0913\u090f\u092e"
-}
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/hr-doc.json b/production/doctype/bom_replace_tool/locale/hr-doc.json
deleted file mode 100644
index c6ff6b6..0000000
--- a/production/doctype/bom_replace_tool/locale/hr-doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "BOM Replace Tool": "BOM Zamijenite alat", 
- "Current BOM": "Trenutni BOM", 
- "New BOM": "Novi BOM", 
- "Production": "Proizvodnja", 
- "Replace": "Zamijeniti", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM": "Zamijenite odre\u0111eni BOM u svim drugim sastavnicama gdje se koriste. To \u0107e zamijeniti staru vezu BOM, a\u017eurirati tro\u0161kove i regenerirati "BOM eksploziju predmeta" stol kao i po novom BOM", 
- "The BOM which will be replaced": "BOM koji \u0107e biti zamijenjen", 
- "The new BOM after replacement": "Novi BOM nakon zamjene"
-}
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/nl-doc.json b/production/doctype/bom_replace_tool/locale/nl-doc.json
deleted file mode 100644
index 26a07e8..0000000
--- a/production/doctype/bom_replace_tool/locale/nl-doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "BOM Replace Tool": "BOM Replace Tool", 
- "Current BOM": "Actueel BOM", 
- "New BOM": "Nieuwe BOM", 
- "Production": "Productie", 
- "Replace": "Vervang", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM": "Vervang een bepaalde BOM in alle andere BOMs waar het wordt gebruikt. Deze vervangt de oude BOM link, updaten kosten en regenereren "BOM Explosion Item" tafel als per nieuwe BOM", 
- "The BOM which will be replaced": "De BOM die zal worden vervangen", 
- "The new BOM after replacement": "De nieuwe BOM na vervanging"
-}
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/pt-BR-doc.json b/production/doctype/bom_replace_tool/locale/pt-BR-doc.json
deleted file mode 100644
index 69ebd0f..0000000
--- a/production/doctype/bom_replace_tool/locale/pt-BR-doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "BOM Replace Tool": "Ferramenta de Substitui\u00e7\u00e3o da LDM", 
- "Current BOM": "LDM atual", 
- "New BOM": "Nova LDM", 
- "Production": "Produ\u00e7\u00e3o", 
- "Replace": "Substituir", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM": "Substituir uma LDM espec\u00edfica em todas as LDMs outros onde ela \u00e9 usada. Isso ir\u00e1 substituir o link da LDM antiga, atualizar o custo e regenerar a tabela "Item de Explos\u00e3o da LDM" com a nova LDM", 
- "The BOM which will be replaced": "A LDM que ser\u00e1 substitu\u00edda", 
- "The new BOM after replacement": "A nova LDM ap\u00f3s substitui\u00e7\u00e3o"
-}
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/pt-doc.json b/production/doctype/bom_replace_tool/locale/pt-doc.json
deleted file mode 100644
index a189dcd..0000000
--- a/production/doctype/bom_replace_tool/locale/pt-doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "BOM Replace Tool": "BOM Ferramenta Substituir", 
- "Current BOM": "BOM atual", 
- "New BOM": "Novo BOM", 
- "Production": "Produ\u00e7\u00e3o", 
- "Replace": "Substituir", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM": "Substituir um BOM particular em todas as BOMs outros onde ele \u00e9 usado. Ele ir\u00e1 substituir o link BOM antigo, atualizar o custo e regenerar "Explos\u00e3o BOM Item" tabela como por novo BOM", 
- "The BOM which will be replaced": "O BOM que ser\u00e1 substitu\u00eddo", 
- "The new BOM after replacement": "O BOM novo ap\u00f3s substitui\u00e7\u00e3o"
-}
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/sr-doc.json b/production/doctype/bom_replace_tool/locale/sr-doc.json
deleted file mode 100644
index 6d0ecb0..0000000
--- a/production/doctype/bom_replace_tool/locale/sr-doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "BOM Replace Tool": "\u0411\u041e\u041c \u0417\u0430\u043c\u0435\u043d\u0430 \u0430\u043b\u0430\u0442\u0430", 
- "Current BOM": "\u0422\u0440\u0435\u043d\u0443\u0442\u043d\u0438 \u0411\u041e\u041c", 
- "New BOM": "\u041d\u043e\u0432\u0438 \u0411\u041e\u041c", 
- "Production": "\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u045a\u0430", 
- "Replace": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0438", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u043f\u043e\u0441\u0435\u0431\u043d\u0443 \u0431\u043e\u043c \u0443 \u0441\u0432\u0438\u043c \u043e\u0441\u0442\u0430\u043b\u0438\u043c \u0411\u041e\u041c\u0441 \u0433\u0434\u0435 \u0441\u0435 \u043e\u043d \u043a\u043e\u0440\u0438\u0441\u0442\u0438. \u041e\u043d\u0430 \u045b\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0438 \u0441\u0442\u0430\u0440\u0443 \u0432\u0435\u0437\u0443 \u0431\u043e\u043c, \u0430\u0436\u0443\u0440\u0438\u0440\u0430\u045a\u0435 \u0442\u0440\u043e\u0448\u043a\u043e\u0432\u0435 \u0438 \u0440\u0435\u0433\u0435\u043d\u0435\u0440\u0438\u0448\u0443 "\u0431\u043e\u043c \u0435\u043a\u0441\u043f\u043b\u043e\u0437\u0438\u0458\u0435 \u0458\u0435\u0434\u0438\u043d\u0438\u0446\u0435" \u0442\u0430\u0431\u0435\u043b\u0443 \u043f\u043e \u043d\u043e\u0432\u043e\u043c \u0411\u041e\u041c", 
- "The BOM which will be replaced": "\u0411\u041e\u041c \u043a\u043e\u0458\u0438 \u045b\u0435 \u0431\u0438\u0442\u0438 \u0437\u0430\u043c\u0435\u045a\u0435\u043d", 
- "The new BOM after replacement": "\u041d\u043e\u0432\u0438 \u0411\u041e\u041c \u043d\u0430\u043a\u043e\u043d \u0437\u0430\u043c\u0435\u043d\u0435"
-}
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/ta-doc.json b/production/doctype/bom_replace_tool/locale/ta-doc.json
deleted file mode 100644
index c2e816d..0000000
--- a/production/doctype/bom_replace_tool/locale/ta-doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "BOM Replace Tool": "BOM \u0baa\u0ba4\u0bbf\u0bb2\u0bbe\u0b95 \u0b95\u0bb0\u0bc1\u0bb5\u0bbf", 
- "Current BOM": "\u0ba4\u0bb1\u0bcd\u0baa\u0bc7\u0bbe\u0ba4\u0bc8\u0baf BOM", 
- "New BOM": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf BOM", 
- "Production": "\u0b89\u0bb1\u0bcd\u0baa\u0ba4\u0bcd\u0ba4\u0bbf", 
- "Replace": "\u0baa\u0ba4\u0bbf\u0bb2\u0bbe\u0b95", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM": "\u0b87\u0ba4\u0bc1 \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1 \u0b85\u0bae\u0bc8\u0ba8\u0bcd\u0ba4\u0bc1\u0bb3\u0bcd\u0bb3 \u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc1 \u0bae\u0bb1\u0bcd\u0bb1 BOM \u0b95\u0bb3\u0bcd \u0b92\u0bb0\u0bc1 \u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bbf\u0b9f\u0bcd\u0b9f BOM \u0baa\u0ba4\u0bbf\u0bb2\u0bbe\u0b95. \u0b87\u0ba4\u0bc1, \u0baa\u0bb4\u0bc8\u0baf BOM \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0baa\u0ba4\u0bbf\u0bb2\u0bbe\u0b95 \u0b9a\u0bc6\u0bb2\u0bb5\u0bc1 \u0baa\u0bc1\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0b95\u0bcd\u0b95 \u0baa\u0bc1\u0ba4\u0bbf\u0baf BOM \u0baa\u0b9f\u0bbf "BOM \u0bb5\u0bc6\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0bc1 \u0baa\u0bc6\u0bbe\u0bb0\u0bc1\u0bb3\u0bcd" \u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8 \u0bae\u0bb1\u0bc1\u0b89\u0bb1\u0bcd\u0baa\u0ba4\u0bcd\u0ba4\u0bbf", 
- "The BOM which will be replaced": "\u0baa\u0ba4\u0bbf\u0bb2\u0bc0\u0b9f\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0baf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0bae\u0bcd BOM", 
- "The new BOM after replacement": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd\u0ba9\u0bb0\u0bcd \u0baa\u0bc1\u0ba4\u0bbf\u0baf BOM"
-}
\ No newline at end of file
diff --git a/production/doctype/bom_replace_tool/locale/th-doc.json b/production/doctype/bom_replace_tool/locale/th-doc.json
deleted file mode 100644
index c699223..0000000
--- a/production/doctype/bom_replace_tool/locale/th-doc.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "BOM Replace Tool": "\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48 BOM", 
- "Current BOM": "BOM \u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19", 
- "New BOM": "BOM \u0e43\u0e2b\u0e21\u0e48", 
- "Production": "\u0e01\u0e32\u0e23\u0e1c\u0e25\u0e34\u0e15", 
- "Replace": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48", 
- "Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate \"BOM Explosion Item\" table as per new BOM": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48 BOM \u0e42\u0e14\u0e22\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e43\u0e19 BOMs \u0e2d\u0e37\u0e48\u0e19 \u0e46 \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e19\u0e33\u0e21\u0e32\u0e43\u0e0a\u0e49 \u0e21\u0e31\u0e19\u0e08\u0e30\u0e40\u0e02\u0e49\u0e32\u0e21\u0e32\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07 BOM \u0e40\u0e01\u0e48\u0e32\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e04\u0e48\u0e32\u0e43\u0e0a\u0e49\u0e08\u0e48\u0e32\u0e22\u0e41\u0e25\u0e30\u0e43\u0e2b\u0e49\u0e0a\u0e35\u0e27\u0e34\u0e15\u0e43\u0e2b\u0e21\u0e48 "\u0e23\u0e30\u0e40\u0e1a\u0e34\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 BOM" \u0e15\u0e32\u0e23\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48 BOM", 
- "The BOM which will be replaced": "BOM \u0e0b\u0e36\u0e48\u0e07\u0e08\u0e30\u0e16\u0e39\u0e01\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48", 
- "The new BOM after replacement": "BOM \u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19"
-}
\ No newline at end of file
diff --git a/projects/doctype/time_log/__init__.py b/projects/doctype/time_log/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/projects/doctype/time_log/__init__.py
diff --git a/projects/doctype/time_log/time_log.py b/projects/doctype/time_log/time_log.py
new file mode 100644
index 0000000..4188503
--- /dev/null
+++ b/projects/doctype/time_log/time_log.py
@@ -0,0 +1,45 @@
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import webnotes
+from webnotes import _
+
+from webnotes.widgets.reportview import build_match_conditions
+
+class DocType:
+	def __init__(self, d, dl):
+		self.doc, self.doclist = d, dl
+		
+	def validate(self):
+		self.validate_overlap()
+		
+	def validate_overlap(self):
+		existing = webnotes.conn.sql_list("""select name from `tabTime Log` where owner=%s and
+			((from_time between %s and %s) or (to_time between %s and %s)) and name!=%s""", 
+			(self.doc.owner, self.doc.from_time, self.doc.to_time, self.doc.from_time, 
+				self.doc.to_time, self.doc.name))
+
+		if existing:
+			webnotes.msgprint(_("This Time Log conflicts with") + ":" + ', '.join(existing),
+				raise_exception=True)
+		
+@webnotes.whitelist()
+def get_events(start, end):
+	match = build_match_conditions("Time Log")
+	data = webnotes.conn.sql("""select name, from_time, to_time, 
+		activity_type, task, project from `tabTime Log`
+		where from_time between '%(start)s' and '%(end)s' or to_time between '%(start)s' and '%(end)s'
+		%(match)s""" % {
+			"start": start,
+			"end": end,
+			"match": match and (" and " + match) or ""
+		}, as_dict=True, update={"allDay": 0})
+		
+	for d in data:
+		d.title = d.name + ": " + d.activity_type
+		if d.task:
+			d.title += " for Task: " + d.task
+		if d.project:
+			d.title += " for Project: " + d.project
+			
+	return data
diff --git a/projects/doctype/time_log/time_log.txt b/projects/doctype/time_log/time_log.txt
new file mode 100644
index 0000000..b8e927a
--- /dev/null
+++ b/projects/doctype/time_log/time_log.txt
@@ -0,0 +1,121 @@
+[
+ {
+  "creation": "2013-02-26 14:58:28", 
+  "docstatus": 0, 
+  "modified": "2013-02-26 16:09:53", 
+  "modified_by": "Administrator", 
+  "owner": "Administrator"
+ }, 
+ {
+  "autoname": "TL-.######", 
+  "description": "Log of Activities performed by users against Tasks that can be used for tracking time, billing.", 
+  "doctype": "DocType", 
+  "document_type": "Master", 
+  "module": "Projects", 
+  "name": "__common__"
+ }, 
+ {
+  "doctype": "DocField", 
+  "name": "__common__", 
+  "parent": "Time Log", 
+  "parentfield": "fields", 
+  "parenttype": "DocType", 
+  "permlevel": 0
+ }, 
+ {
+  "doctype": "DocPerm", 
+  "name": "__common__", 
+  "parent": "Time Log", 
+  "parentfield": "permissions", 
+  "parenttype": "DocType", 
+  "permlevel": 0, 
+  "read": 1, 
+  "write": 1
+ }, 
+ {
+  "doctype": "DocType", 
+  "name": "Time Log"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "from_time", 
+  "fieldtype": "Datetime", 
+  "label": "From Time", 
+  "reqd": 1
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "to_time", 
+  "fieldtype": "Datetime", 
+  "label": "To Time", 
+  "reqd": 1
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "column_break_3", 
+  "fieldtype": "Column Break"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "activity_type", 
+  "fieldtype": "Link", 
+  "in_list_view": 1, 
+  "label": "Activity Type", 
+  "options": "Activity Type", 
+  "reqd": 1
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "task", 
+  "fieldtype": "Link", 
+  "label": "Task", 
+  "options": "Task"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "billable", 
+  "fieldtype": "Check", 
+  "label": "Billable"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "section_break_7", 
+  "fieldtype": "Section Break"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "note", 
+  "fieldtype": "Text Editor", 
+  "label": "Note"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "section_break_9", 
+  "fieldtype": "Section Break"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "project", 
+  "fieldtype": "Link", 
+  "in_list_view": 1, 
+  "label": "Project", 
+  "options": "Project"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "sales_invoice", 
+  "fieldtype": "Link", 
+  "label": "Sales Invoice", 
+  "options": "Sales Invoice"
+ }, 
+ {
+  "create": 1, 
+  "doctype": "DocPerm", 
+  "match": "owner", 
+  "role": "Projects User"
+ }, 
+ {
+  "doctype": "DocPerm", 
+  "role": "Projects Manager"
+ }
+]
\ No newline at end of file
diff --git a/projects/doctype/time_log/time_log_calendar.js b/projects/doctype/time_log/time_log_calendar.js
new file mode 100644
index 0000000..e5bb774
--- /dev/null
+++ b/projects/doctype/time_log/time_log_calendar.js
@@ -0,0 +1,10 @@
+wn.views.calendar["Time Log"] = wn.views.Calendar.extend({
+	field_map: {
+		"start": "from_time",
+		"end": "to_time",
+		"id": "name",
+		"title": "title",
+		"allDay": "allDay"
+	},
+	get_events_method: "projects.doctype.time_log.time_log.get_events"
+})
\ No newline at end of file
diff --git a/projects/doctype/timesheet/timesheet.py b/projects/doctype/timesheet/timesheet.py
index 6e6e27a..560bc5f 100644
--- a/projects/doctype/timesheet/timesheet.py
+++ b/projects/doctype/timesheet/timesheet.py
@@ -91,4 +91,5 @@
 		webnotes.conn.set(self.doc, 'status', 'Submitted')
 	
 	def on_cancel(self):
-		webnotes.conn.set(self.doc, 'status', 'Cancelled')
\ No newline at end of file
+		webnotes.conn.set(self.doc, 'status', 'Cancelled')
+			
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/_messages_doc.json b/projects/module_def/projects/locale/_messages_doc.json
deleted file mode 100644
index da33435..0000000
--- a/projects/module_def/projects/locale/_messages_doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-[
- "Projects Home", 
- "Projects"
-]
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/ar-doc.json b/projects/module_def/projects/locale/ar-doc.json
deleted file mode 100644
index 7e4aaaf..0000000
--- a/projects/module_def/projects/locale/ar-doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Projects": "\u0645\u0634\u0627\u0631\u064a\u0639", 
- "Projects Home": "\u0635\u0641\u062d\u0629 \u0627\u0644\u0645\u0634\u0631\u0648\u0639\u0627\u062a"
-}
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/es-doc.json b/projects/module_def/projects/locale/es-doc.json
deleted file mode 100644
index 7ca0100..0000000
--- a/projects/module_def/projects/locale/es-doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Projects": "Proyectos", 
- "Projects Home": "Home Proyectos"
-}
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/fr-doc.json b/projects/module_def/projects/locale/fr-doc.json
deleted file mode 100644
index d292936..0000000
--- a/projects/module_def/projects/locale/fr-doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Projects": "Projets", 
- "Projects Home": "Accueil Projets"
-}
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/hi-doc.json b/projects/module_def/projects/locale/hi-doc.json
deleted file mode 100644
index 6ec7020..0000000
--- a/projects/module_def/projects/locale/hi-doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Projects": "\u092a\u0930\u093f\u092f\u094b\u091c\u0928\u093e\u0913\u0902", 
- "Projects Home": "\u092a\u0930\u093f\u092f\u094b\u091c\u0928\u093e\u0913\u0902 \u0918\u0930"
-}
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/hr-doc.json b/projects/module_def/projects/locale/hr-doc.json
deleted file mode 100644
index cdf6a7b..0000000
--- a/projects/module_def/projects/locale/hr-doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Projects": "Projekti", 
- "Projects Home": "Projekti Po\u010detna"
-}
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/nl-doc.json b/projects/module_def/projects/locale/nl-doc.json
deleted file mode 100644
index a8b753e..0000000
--- a/projects/module_def/projects/locale/nl-doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Projects": "Projecten", 
- "Projects Home": "Projecten Home"
-}
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/pt-BR-doc.json b/projects/module_def/projects/locale/pt-BR-doc.json
deleted file mode 100644
index d50cdd8..0000000
--- a/projects/module_def/projects/locale/pt-BR-doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Projects": "Projetos", 
- "Projects Home": "In\u00edcio de Projetos"
-}
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/pt-doc.json b/projects/module_def/projects/locale/pt-doc.json
deleted file mode 100644
index 602e521..0000000
--- a/projects/module_def/projects/locale/pt-doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Projects": "Projetos", 
- "Projects Home": "Home Projetos"
-}
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/sr-doc.json b/projects/module_def/projects/locale/sr-doc.json
deleted file mode 100644
index b831f42..0000000
--- a/projects/module_def/projects/locale/sr-doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Projects": "\u041f\u0440\u043e\u0458\u0435\u043a\u0442\u0438", 
- "Projects Home": "\u041f\u0440\u043e\u0458\u0435\u043a\u0442\u0438"
-}
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/ta-doc.json b/projects/module_def/projects/locale/ta-doc.json
deleted file mode 100644
index 71fd303..0000000
--- a/projects/module_def/projects/locale/ta-doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Projects": "\u0ba4\u0bbf\u0b9f\u0bcd\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd", 
- "Projects Home": "\u0ba4\u0bbf\u0b9f\u0bcd\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bae\u0bc1\u0b95\u0baa\u0bcd\u0baa\u0bc1"
-}
\ No newline at end of file
diff --git a/projects/module_def/projects/locale/th-doc.json b/projects/module_def/projects/locale/th-doc.json
deleted file mode 100644
index 17d8bfa..0000000
--- a/projects/module_def/projects/locale/th-doc.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "Projects": "\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23", 
- "Projects Home": "\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e23\u0e01\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23"
-}
\ No newline at end of file
diff --git a/projects/page/projects_home/projects_home.js b/projects/page/projects_home/projects_home.js
index 3f91468..c9a6b93 100644
--- a/projects/page/projects_home/projects_home.js
+++ b/projects/page/projects_home/projects_home.js
@@ -21,6 +21,11 @@
 				description: wn._("Timesheet for tasks."),
 				doctype:"Timesheet"
 			},
+			{
+				label: wn._("Time Log"),
+				description: wn._("Time Log for tasks."),
+				doctype:"Time Log"
+			},
 		]
 	},
 	{
diff --git a/startup/install.py b/startup/install.py
index b42b716..5ddbf09 100644
--- a/startup/install.py
+++ b/startup/install.py
@@ -30,7 +30,7 @@
 		"HR Manager", "HR User", "Leave Approver", "Maintenance Manager",
 		"Maintenance User", "Manufacturing Manager", "Manufacturing User",
 		"Material Manager", "Material Master Manager", "Material User",
-		"Partner", "Projects User", "Purchase Manager", "Purchase Master Manager",
+		"Partner", "Projects User", "Projects Manager", "Purchase Manager", "Purchase Master Manager",
 		"Purchase User", "Quality Manager", "Sales Manager",
 		"Sales Master Manager", "Sales User", "Supplier", "Support Manager",
 		"Support Team", "Website Manager"]