Merge pull request #4899 from nabinhait/seriailized_stock_valuation

Seriailized stock valuation
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index c672c5b..9926511 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
 from __future__ import unicode_literals
-__version__ = '6.23.6'
+__version__ = '6.23.7'
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/at_austria_chart_Einheitskontenrahmen.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/at_austria_chart_Einheitskontenrahmen.json
new file mode 100644
index 0000000..296be76
--- /dev/null
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/at_austria_chart_Einheitskontenrahmen.json
@@ -0,0 +1,414 @@
+{
+    "country_code": "at",
+    "name": "Austria - Chart of Accounts - Einheitskontenrahmen provided by fairkom.eu",
+    "tree": {
+        "Klasse 0 Aktiva: Anlageverm\u00f6gen": {
+				"0100 Konzessionen ": {"account_type": "Fixed Asset"},
+				"0110 Patentrechte und Lizenzen ": {"account_type": "Fixed Asset"},
+				"0120 Datenverarbeitungsprogramme ": {"account_type": "Fixed Asset"},
+				"0130 Marken, Warenzeichen und Musterschutzrechte, sonstige Urheberrechte ": {"account_type": "Fixed Asset"},
+				"0140 Pacht- und Mietrechte ": {"account_type": "Fixed Asset"},
+				"0150 Bezugs- und ähnliche Rechte ": {"account_type": "Fixed Asset"},
+				"0160 Geschäfts-/Firmenwert ": {"account_type": "Fixed Asset"},
+				"0170 Umgründungsmehrwert ": {"account_type": "Fixed Asset"},
+				"0180 Geleistete Anzahlungen auf immaterielle Vermögensgegenstände": {"account_type": "Fixed Asset"},
+				"0190 Kumulierte Abschreibungen zu immateriellen Vermögensgegenständen ": {"account_type": "Fixed Asset"},
+				"0200 Unbebaute Grundstücke, soweit nicht landwirtschaftlich genutzt ": {"account_type": "Fixed Asset"},
+				"0210 Bebaute Grundstücke (Grundwert) ": {"account_type": "Fixed Asset"},
+				"0220 Landwirtschaftlich genutzte Grundstücke ": {"account_type": "Fixed Asset"},
+				"0230 Grundstücksgleiche Rechte ": {"account_type": "Fixed Asset"},
+				"0300 Betriebs- und Geschäftsgebäude auf eigenem Grund ": {"account_type": "Fixed Asset"},
+				"0310 Wohn- und Sozialgebäude auf eigenem Grund ": {"account_type": "Fixed Asset"},
+				"0320 Betriebs- und Geschäftsgebäude auf fremdem Grund ": {"account_type": "Fixed Asset"},
+				"0330 Wohn- und Sozialgebäude auf fremdem Grund ": {"account_type": "Fixed Asset"},
+				"0340 Grundstückseinrichtungen auf eigenem Grund ": {"account_type": "Fixed Asset"},
+				"0350 Grundstückseinrichtungen auf fremdem Grund ": {"account_type": "Fixed Asset"},
+				"0360 Bauliche Investitionen in fremden (gepachteten) Betriebs- und Geschäftsgebäuden": {"account_type": "Fixed Asset"},
+				"0370 Bauliche Investitionen in fremden (gepachteten) Wohn- und Sozialgebäuden": {"account_type": "Fixed Asset"},
+				"0390 Kumulierte Abschreibungen zu Grundstücken ": {"account_type": "Fixed Asset"},
+				"0400 Maschinen und Geräte ": {"account_type": "Fixed Asset"},				
+				"0500 Maschinenwerkzeuge ": {"account_type": "Fixed Asset"},
+				"0510 Allgemeine Werkzeuge und Handwerkzeuge ": {"account_type": "Fixed Asset"},
+				"0520 Prototypen, Formen, Modelle ": {"account_type": "Fixed Asset"},
+				"0530 Andere Erzeugungshilfsmittel (auch Softwarewerkzeuge)": {"account_type": "Fixed Asset"},
+				"0540 Hebezeuge und Montageanlagen ": {"account_type": "Fixed Asset"},
+				"0550 Geringwertige Vermögensgegenstände, soweit im Erzeugungsprozess ": {"account_type": "Fixed Asset"},
+				"0560 Festwerte technische Anlagen und Maschinen ": {"account_type": "Fixed Asset"},
+				"0590 Kumulierte Abschreibungen zu technischen Anlagen und Maschinen ": {"account_type": "Fixed Asset"},
+				"0600 Betriebs- und Geschäftsausstattung, soweit nicht gesondert angeführt ": {"account_type": "Fixed Asset"},
+				"0610 Andere Anlagen, soweit nicht gesondert angeführt ": {"account_type": "Fixed Asset"},
+				"0620 Büromaschinen, EDV-Anlagen ": {"account_type": "Fixed Asset"},
+				"0630 PKW und Kombis ": {"account_type": "Fixed Asset"},
+				"0640 LKW ": {"account_type": "Fixed Asset"},
+				"0650 Andere Beförderungsmittel ": {"account_type": "Fixed Asset"},
+				"0660 Gebinde ": {"account_type": "Fixed Asset"},
+				"0670 Geringwertige Vermögensgegenstände, soweit nicht im Erzeugungssprozess verwendet": {"account_type": "Fixed Asset"},
+				"0680 Festwerte außer technische Anlagen und Maschinen ": {"account_type": "Fixed Asset"},
+				"0690 Kumulierte Abschreibungen zu anderen Anlagen, Betriebs- und Geschäftsausstattung": {"account_type": "Fixed Asset"},
+				"0700 Geleistete Anzahlungen auf Sachanlagen ": {"account_type": "Fixed Asset"},
+				"0710 Anlagen in Bau ": {"account_type": "Fixed Asset"},
+				"0790 Kumulierte Abschreibungen zu geleisteten Anzahlungen auf Sachanlagen ": {"account_type": "Fixed Asset"},
+				"0800 Anteile an verbundenen Unternehmen ": {"account_type": "Fixed Asset"},
+				"0810 Beteiligungen an Gemeinschaftsunternehmen ": {"account_type": "Fixed Asset"},
+				"0820 Beteiligungen an angeschlossenen (assoziierten) Unternehmen ": {"account_type": "Fixed Asset"},
+				"0830 Eigene Anteile, Anteile an herrschenden oder mit Mehrheit beteiligten ": {"account_type": "Fixed Asset"},
+				"0840 Sonstige Beteiligungen ": {"account_type": "Fixed Asset"},
+				"0850 Ausleihungen an verbundene Unternehmen ": {"account_type": "Fixed Asset"},
+				"0860 Ausleihungen an Unternehmen mit Beteiligungsverhältnis": {"account_type": "Fixed Asset"},
+				"0870 Ausleihungen an Gesellschafter ": {"account_type": "Fixed Asset"},
+				"0880 Sonstige Ausleihungen ": {"account_type": "Fixed Asset"},
+				"0890 Anteile an Kapitalgesellschaften ohne Beteiligungscharakter ": {"account_type": "Fixed Asset"},
+				"0900 Anteile an Personengesellschaften ohne Beteiligungscharakter ": {"account_type": "Fixed Asset"},
+				"0910 Genossenschaftsanteile ohne Beteiligungscharakter ": {"account_type": "Fixed Asset"},
+				"0920 Anteile an Investmentfonds ": {"account_type": "Fixed Asset"},
+				"0930 Festverzinsliche Wertpapiere des Anlagevermögens ": {"account_type": "Fixed Asset"},
+				"0980 Geleistete Anzahlungen auf Finanzanlagen ": {"account_type": "Fixed Asset"},
+				"0990 Kumulierte Abschreibungen zu Finanzanlagen ": {"account_type": "Fixed Asset"},
+            "root_type": "Asset"
+        },    
+        "Klasse 1 Aktiva: Vorr\u00e4te": {
+            "1000 Bezugsverrechnung": {"account_type": "Stock"},
+            "1100 Rohstoffe": {"account_type": "Stock"},
+            "1200 Bezogene Teile": {"account_type": "Stock"},
+            "1300 Hilfsstoffe": {"account_type": "Stock"},
+            "1350 Betriebsstoffe": {"account_type": "Stock"},
+            "1360 Vorrat Energietraeger": {"account_type": "Stock"},            
+            "1400 Unfertige Erzeugnisse": {"account_type": "Stock"},
+            "1500 Fertige Erzeugnisse": {"account_type": "Stock"},
+            "1600 Handelswarenvorrat": {"account_type": "Stock Received But Not Billed"},
+            "1700 Noch nicht abrechenbare Leistungen": {"account_type": "Stock"},
+            "1900 Wertberichtigungen": {"account_type": "Stock"},
+            "1800 Geleistete Anzahlungen": {"account_type": "Stock"},
+            "root_type": "Asset"
+        },    
+        "Klasse 3 Passiva: Verbindlichkeiten": {
+            "3020 Steuerr\u00fcckstellungen": {"account_type": "Tax"},
+            "3040 Sonstige R\u00fcckstellungen": {"account_type": "Payable"},
+            "3110 Verbindlichkeiten gegen\u00fcber Bank": {"account_type": "Payable"},
+            "3150 Verbindlichkeiten Darlehen": {"account_type": "Payable"},
+            "3185 Verbindlichkeiten Kreditkarte": {"account_type": "Payable"},            
+            "3380 Verbindlichkeiten aus der Annahme gezogener Wechsel u. d. Ausstellungen eigener Wechsel": {
+                "account_type": "Payable"
+            },
+            "3400 Verbindlichkeiten gegen\u00fc. verb. Untern., Verbindl. gegen\u00fc. Untern., mit denen eine Beteiligungsverh\u00e4lnis besteht": {},
+            "3460 Verbindlichkeiten gegenueber Gesellschaftern": {"account_type": "Payable"},
+            "3470 Einlagen stiller Gesellschafter": {"account_type": "Payable"},
+            "3590 Verbindlichkeiten Kommunalabgaben": {"account_type": "Tax"},                        
+            "3600 Verbindlichkeiten Sozialversicherung": {"account_type": "Payable"},
+            "3000 Allgemeine Verbindlichkeiten (Schuld)": {"account_type": "Payable"},
+            "3700 Sonstige Verbindlichkeiten": {"account_type": "Payable"},
+            "3900 Passive Rechnungsabgrenzungsposten": {"account_type": "Payable"},
+            "3100 Anleihen (einschlie\u00dflich konvertibler)": {"account_type": "Payable"},
+            "3200 Erhaltene Anzahlungen auf Bestellungen": {"account_type": "Payable"},
+            "3040 R\u00fcckstellungen f\u00fcr Abfertigung": {"account_type": "Payable"},
+            "3010 R\u00fcckstellungen f\u00fcr Pensionen": {"account_type": "Payable"},
+            "3530 USt. \u00a719 (reverse charge)": {
+                "account_type": "Tax"
+            },
+            "3500 Verbindlichkeiten aus Umsatzsteuer": {"account_type": "Tax"},
+            "3580 Umsatzsteuer Zahllast": {
+                "account_type": "Tax"
+            },
+            "3510 Umsatzsteuer aus i.g. Erwerb 10%": {
+                "account_type": "Tax"
+            },
+            "3520 Umsatzsteuer aus i.g. Erwerb 20%": {
+                "account_type": "Tax"
+            },
+            "3560 Umsatzsteuer-Evidenzkonto f\u00fcr erhaltene Anzahlungen auf Bestellungen": {},
+            "3360 Verbindlichkeiten aus Lieferungen u. Leistungen EU": {
+                "account_type": "Payable"
+            },
+            "3000 Verbindlichkeiten aus Lieferungen u. Leistungen Inland": {
+                "account_type": "Payable"
+            },
+            "3370 Verbindlichkeiten aus Lieferungen u. Leistungen sonst. Ausland": {
+                "account_type": "Payable"
+            },
+            "3400 Verbindlichkeiten gegen\u00fcber verbundenen Unternehmen": {},
+            "3570 Verrechnung Finanzamt": {
+                "account_type": "Tax"
+            },
+            "root_type": "Liability"
+        },      
+        "Klasse 2 Aktiva: Umlaufverm\u00f6gen, Rechnungsabgrenzungen": {
+            "2030 Forderungen aus Lieferungen und Leistungen Inland (0% USt, umsatzsteuerfrei)": {
+                "account_type": "Receivable"
+            },
+            "2010 Forderungen aus Lieferungen und Leistungen Inland (10% USt, umsatzsteuerfrei)": {
+                "account_type": "Receivable"
+            },
+            "2000 Forderungen aus Lieferungen und Leistungen Inland (20% USt, umsatzsteuerfrei)": {
+                "account_type": "Receivable"
+            },
+            "2040 Forderungen aus Lieferungen und Leistungen Inland (sonstiger USt-Satz)": {
+                "account_type": "Receivable"
+            },                                    
+            "2100 Forderungen aus Lieferungen und Leistungen EU": {
+                "account_type": "Receivable"
+            },
+            "2150 Forderungen aus Lieferungen und Leistungen Ausland (Nicht-EU)": {
+                "account_type": "Receivable"
+            },
+            "2200 Forderungen gegen\u00fcber verbundenen Unternehmen": {
+                "account_type": "Receivable"
+            },
+            "2250 Forderungen gegen\u00fcber Unternehmen, mit denen ein Beteiligungsverh\u00e4ltnis besteht": {
+                "account_type": "Receivable"
+            },
+            "2300 Sonstige Forderungen und Verm\u00f6gensgegenst\u00e4nde": {
+                "account_type": "Receivable"
+            },
+            "2630 Sonstige Wertpapiere": {
+                "account_type": "Stock"
+            },
+            "2750 Kassenbest\u00e4nde in Fremdw\u00e4hrung": {
+                "account_type": "Cash"
+            },
+            "2900 Aktive Rechnungsabrenzungsposten": {
+                "account_type": "Receivable"
+            },
+            "2600 Anteile an verbundenen Unternehmen": {
+                "account_type": "Equity"
+            },
+            "2680 Besitzwechsel ohne Forderungen": {
+                "account_type": "Receivable"
+            },
+            "2950 Aktiviertes Disagio": {
+                "account_type": "Receivable"
+            },
+            "2610 Eigene Anteile und Wertpapiere an mit Mehrheit beteiligten Unternehmen": {
+                "account_type": "Receivable"
+            },
+            "2570 Einfuhrumsatzsteuer (bezahlt)": {"account_type": "Tax"},
+            
+            "2460 Eingeforderte aber noch nicht eingezahlte Einlagen": {
+                "account_type": "Receivable"
+            },
+            "2180 Einzelwertberichtigungen zu Forderungen aus Lief. und Leist. Ausland": {
+                "account_type": "Receivable"
+            },
+            "2130 Einzelwertberichtigungen zu Forderungen aus Lief. und Leist. EU": {
+                "account_type": "Receivable"
+            },
+            "2080 Einzelwertberichtigungen zu Forderungen aus Lief. und Leist. Inland ": {
+                "account_type": "Receivable"
+            },
+            "2270 Einzelwertberichtigungen zu Forderungen gegen\u00fcber Unternehmen mit denen ein Beteiligungsverh\u00e4ltnis besteht": {
+                "account_type": "Receivable"
+            },
+            "2230 Einzelwertberichtigungen zu Forderungen gegen\u00fcber verbundenen Unternehmen": {
+                "account_type": "Receivable"
+            },
+            "2470 Einzelwertberichtigungen zu sonstigen Forderungen und Verm\u00f6gensgegenst\u00e4nden": {
+                "account_type": "Receivable"
+            },
+            "2700 Kassenbestand": {
+                "account_type": "Cash"
+            },
+            "2190 Pauschalwertberichtigungen zu Forderungen aus Lief. und Leist. sonstiges Ausland": {
+                "account_type": "Receivable"
+            },
+            "2130 Pauschalwertberichtigungen zu Forderungen aus Lief. und Leist. EU": {
+                "account_type": "Receivable"
+            },
+            "2100 Pauschalwertberichtigungen zu Forderungen aus Lief. und Leist. Inland ": {
+                "account_type": "Receivable"
+            },
+            "2280 Pauschalwertberichtigungen zu Forderungen gegen\u00fcber Unternehmen mit denen ein Beteiligungsverh\u00e4ltnis besteht": {
+                "account_type": "Receivable"
+            },
+            "2240 Pauschalwertberichtigungen zu Forderungen gegen\u00fcber verbundenen Unternehmen": {
+                "account_type": "Receivable"
+            },
+            "2480 Pauschalwertberichtigungen zu sonstigen Forderungen und Verm\u00f6gensgegenst\u00e4nden": {
+                "account_type": "Receivable"
+            },
+            "2740 Postwertzeichen": {
+                "account_type": "Cash"
+            },
+            "2780 Schecks in Euro": {
+                "account_type": "Cash"
+            },
+            "2800 Guthaben bei Kreditinstitut": {
+                "account_type": "Bank"
+            },            
+            "2810 Guthaben bei Paypal": {
+                "account_type": "Bank"
+            },
+            "2930 Mietvorauszahlungen": {
+                "account_type": "Receivable"
+            },
+            "2980 Abgrenzung latenter Steuern": {
+                "account_type": "Receivable"
+            },
+            "2500 Vorsteuer": {
+                "account_type": "Receivable"
+            },
+            "2510 Vorsteuer aus innergemeinschaftlichem Erwerb 10%": {
+                "account_type": "Tax"
+            },
+            "2520 Vorsteuer aus innergemeinschaftlichem Erwerb 20%": {
+                "account_type": "Tax"
+            },
+            "2530 Vorsteuer \u00a719/Art 19 ( reverse charge ) ": {
+                "account_type": "Tax"
+            },
+            "2690 Wertberichtigungen zu Wertpapieren und Anteilen": {
+                "account_type": "Receivable"
+            },
+            "root_type": "Asset"
+        },
+          "Klasse 4: Betriebliche Erträge": {
+            "4000 Erlöse 20 %": {"account_type": "Income Account"},          
+            "4020 Erl\u00f6se 0 % steuerbefreit": {"account_type": "Income Account"},            
+            "4010 Erl\u00f6se 10 %": {"account_type": "Income Account"},
+            "4030 Erl\u00f6se 13 %": {"account_type": "Income Account"},            
+            "4040 Erl\u00f6se 0 % innergemeinschaftliche Lieferungen": {"account_type": "Income Account"},      
+            "4400 Erl\u00f6sreduktion 0 % steuerbefreit": {"account_type": "Expense Account"},            
+            "4410 Erl\u00f6sreduktion 10 %": {"account_type": "Expense Account"},
+            "4420 Erl\u00f6sreduktion 20 %": {"account_type": "Expense Account"},
+            "4430 Erl\u00f6sreduktion 13 %": {"account_type": "Expense Account"},            
+            "4440 Erl\u00f6sreduktion 0 % innergemeinschaftliche Lieferungen": {"account_type": "Expense Account"}, 
+            "4500 Ver\u00e4nderungen des Bestandes an fertigen und unfertigen Erzeugn. sowie an noch nicht abrechenbaren Leistungen": {"account_type": "Income Account"},
+            "4580 Aktivierte Eigenleistungen": {"account_type": "Income Account"},
+            "4600 Erl\u00f6se aus dem Abgang vom Anlageverm\u00f6gen, ausgen. Finanzanlagen": {"account_type": "Income Account"},
+            "4630 Ertr\u00e4ge aus dem Abgang vom Anlageverm\u00f6gen, ausgen. Finanzanlagen": {"account_type": "Income Account"},
+            "4660 Ertr\u00e4ge aus der Zuschreibung zum Anlageverm\u00f6gen, ausgen. Finanzanlagen": {"account_type": "Income Account"},
+            "4700 Ertr\u00e4ge aus der Aufl\u00f6sung von R\u00fcckstellungen": {"account_type": "Income Account"},
+            "4800 \u00dcbrige betriebliche Ertr\u00e4ge": {"account_type": "Income Account"},
+            "root_type": "Income"
+        },        
+        "Klasse 5: Aufwand f\u00fcr Material und Leistungen": {
+            "5000 Einkauf Partnerleistungen": {"account_type": "Cost of Goods Sold"},        
+            "5100 Verbrauch an Rohstoffen": {"account_type": "Cost of Goods Sold"},
+            "5200 Verbrauch von bezogenen Fertig- und Einzelteilen": {"account_type": "Cost of Goods Sold"},
+            "5300 Verbrauch von Hilfsstoffen": {"account_type": "Cost of Goods Sold"},
+            "5340 Verbrauch Verpackungsmaterial": {"account_type": "Cost of Goods Sold"},
+            "5470 Verbrauch von Kleinmaterial": {"account_type": "Cost of Goods Sold"},
+            "5450 Verbrauch von Reinigungsmaterial": {"account_type": "Cost of Goods Sold"},                                  
+            "5400 Verbrauch von Betriebsstoffen": {"account_type": "Cost of Goods Sold"},
+            "5500 Verbrauch von Werkzeugen und anderen Erzeugungshilfsmittel": {"account_type": "Cost of Goods Sold"},
+            "5600 Verbrauch von Brenn- und Treibstoffen, Energie und Wasser": {"account_type": "Cost of Goods Sold"},
+            "5700 Bearbeitung durch Dritte": {"account_type": "Cost of Goods Sold"},
+            "5900 Aufwandsstellenrechnung Material": {"account_type": "Cost of Goods Sold"},
+            "5820 Skontoertr\u00e4ge (20% USt.)": {"account_type": "Income Account"},
+            "5810 Skontoertr\u00e4ge (10% USt.)": {"account_type": "Income Account"},
+            "5010 Handelswareneinkauf 10 %": {"account_type": "Cost of Goods Sold"},
+            "5020 Handelswareneinkauf 20 %": {"account_type": "Cost of Goods Sold"},
+            "5040 Handelswareneinkauf innergemeinschaftlicher Erwerb 10 % VSt/10 % USt": {"account_type": "Cost of Goods Sold"},
+            "5050 Handelswareneinkauf innergemeinschaftlicher Erwerb 20 % VSt/20 % USt": {"account_type": "Cost of Goods Sold"},
+            "5070 Handelswareneinkauf innergemeinschaftlicher Erwerb ohne Vorsteuerabzug und 10 % USt": {"account_type": "Cost of Goods Sold"},
+            "5080 Handelswareneinkauf innergemeinschaftlicher Erwerb ohne Vorsteuerabzug und 20 % USt": {"account_type": "Cost of Goods Sold"},
+            "root_type": "Expense"
+        },
+        "Klasse 6: Personalaufwand": {
+            "6000 L\u00f6hne": {"account_type": "Payable"},
+            "6200 Geh\u00e4lter": {"account_type": "Payable"},
+            "6400 Aufwendungen f\u00fcr Abfertigungen": {"account_type": "Payable"},
+            "6450 Aufwendungen f\u00fcr Altersversorgung": {"account_type": "Payable"},
+            "6500 Gesetzlicher Sozialaufwand Arbeiter": {"account_type": "Payable"},
+            "6560 Gesetzlicher Sozialaufwand Angestellte": {"account_type": "Payable"},
+            "6600 Lohnabh\u00e4ngige Abgaben und Pflichtbeitr\u00e4gte": {"account_type": "Payable"},
+            "6660 Gehaltsabh\u00e4ngige Abgaben und Pflichtbeitr\u00e4gte": {"account_type": "Payable"},
+            "6700 Sonstige Sozialaufwendungen": {"account_type": "Payable"},
+            "6900 Aufwandsstellenrechnung Personal": {"account_type": "Payable"},
+            "root_type": "Expense"
+        },       
+         "Klasse 7: Abschreibungen und sonstige betriebliche Aufwendungen": {
+            "7010 Abschreibungen auf das Anlageverm\u00f6gen (ausgenommen Finanzanlagen)": {"account_type": "Depreciation"},
+            "7100 Sonstige Steuern und Geb\u00fchren": {"account_type": "Tax"},
+            "7200 Instandhaltung u. Reinigung durch Dritte, Entsorgung, Energie": {"account_type": "Expense Account"},
+            "7300 Transporte durch Dritte": {"account_type": "Expense Account"},
+            "7310 Fahrrad - Aufwand": {"account_type": "Expense Account"},
+            "7320 Kfz - Aufwand": {"account_type": "Expense Account"},
+            "7330 LKW - Aufwand": {"account_type": "Expense Account"},
+            "7340 Lastenrad - Aufwand": {"account_type": "Expense Account"},            
+            "7350 Reise- und Fahraufwand": {"account_type": "Expense Account"},
+            "7360 Tag- und N\u00e4chtigungsgelder": {"account_type": "Expense Account"},
+            "7380 Nachrichtenaufwand": {"account_type": "Expense Account"},
+            "7400 Miet- und Pachtaufwand": {"account_type": "Expense Account"},
+            "7440 Leasingaufwand": {"account_type": "Expense Account"},
+            "7480 Lizenzaufwand": {"account_type": "Expense Account"},
+            "7500 Aufwand f\u00fcr beigestelltes Personal": {"account_type": "Expense Account"},
+            "7540 Provisionen an Dritte": {"account_type": "Expense Account"},
+            "7580 Aufsichtsratsverg\u00fctungen": {"account_type": "Expense Account"},
+            "7610 Druckerzeugnisse und Vervielf\u00e4ltigungen": {"account_type": "Expense Account"},
+            "7650 Werbung und Repr\u00e4sentationen": {"account_type": "Expense Account"},
+            "7700 Versicherungen": {"account_type": "Expense Account"},
+            "7750 Beratungs- und Pr\u00fcfungsaufwand": {"account_type": "Expense Account"},
+            "7800 Forderungsverluste und Schadensf\u00e4lle": {"account_type": "Expense Account"},
+            "7840 Verschiedene betriebliche Aufwendungen": {"account_type": "Expense Account"},
+            "7910 Aufwandsstellenrechung der Hersteller": {"account_type": "Expense Account"},
+            "7060 Sofortabschreibungen geringwertig": {"account_type": "Expense Account"},
+            "7070 Abschreibungen vom Umlaufverm\u00f6gen, soweit diese die im Unternehmen \u00fcblichen Abschreibungen \u00fcbersteigen": {"account_type": "Depreciation"},
+            "7900 Aufwandsstellenrechnung": {"account_type": "Expense Account"},
+            "7770 Aus- und Fortbildung": {"account_type": "Expense Account"},
+            "7820 Buchwert abgegangener Anlagen, ausgenommen Finanzanlagen": {"account_type": "Expense Account"},
+            "7600 B\u00fcromaterial und Drucksorten": {"account_type": "Expense Account"},
+            "7630 Fachliteratur und Zeitungen ": {"account_type": "Expense Account"},
+            "7960 Herstellungskosten der zur Erzielung der Umsatzerl\u00f6se erbrachten Leistungen": {"account_type": "Expense Account"},
+            "7780 Mitgliedsbeitr\u00e4ge": {"account_type": "Expense Account"},
+            "7880 Skontoertr\u00e4ge auf sonstige betriebliche Aufwendungen": {"account_type": "Expense Account"},
+            "7990 Sonstige betrieblichen Aufwendungen": {"account_type": "Expense Account"},
+            "7680 Spenden und Trinkgelder": {"account_type": "Expense Account"},
+            "7790 Spesen des Geldverkehrs": {"account_type": "Expense Account"},
+            "7830 Verluste aus dem Abgang vom Anlageverm\u00f6gen, ausgenommen Finanzanlagen": {"account_type": "Expense Account"},
+            "7970 Vertriebskosten": {"account_type": "Expense Account"},
+            "7980 Verwaltungskosten": {"account_type": "Expense Account"},
+            "root_type": "Expense"
+        },
+         "Klasse 8: Finanz- und ausserordentliche Ertr\u00e4ge und Aufwendungen": {
+            "8000 Ertr\u00e4ge aus Beteiligungen": {"account_type": "Income Account"},
+            "8050 Ertr\u00e4ge aus anderen Wertpapieren und Ausleihungen des Finanzanlageverm\u00f6gens": {"account_type": "Income Account"},
+            "8100 Zinsen aus Bankguthaben": {"account_type": "Income Account"},
+            "8110 Zinsen aus gewaehrten Darlehen": {"account_type": "Income Account"},
+            "8130 Verzugszinsenertraege": {"account_type": "Income Account"},
+            "8220 Aufwendungen aus Beteiligungen": {"account_type": "Expense Account"},
+            "8260 Aufwendungen aus sonst. Fiananzanlagen und aus Wertpapieren des Umlaufverm\u00f6gens": {},
+            "8280 Zinsen und \u00e4hnliche Aufwendungem": {"account_type": "Expense Account"},
+            "8400 Au\u00dferordentliche Ertr\u00e4ge": {"account_type": "Income Account"},
+            "8450 Au\u00dferordentliche Aufwendungen": {"account_type": "Expense Account"},
+            "8500 Steuern vom Einkommen und vom Ertrag": {
+                "account_type": "Tax"
+            },
+            "8600 Aufl\u00f6sung unversteuerten R\u00fccklagen": {"account_type": "Income Account"},
+            "8700 Aufl\u00f6sung von Kapitalr\u00fccklagen": {"account_type": "Income Account"},
+            "8750 Aufl\u00f6sung von Gewinnr\u00fccklagen": {"account_type": "Income Account"},
+            "8800 Zuweisung zu unversteuerten R\u00fccklagen": {"account_type": "Expense Account"},
+            "8900 Zuweisung zu Gewinnr\u00fccklagen": {"account_type": "Expense Account"},
+            "8100 Buchwert abgegangener Beteiligungen": {"account_type": "Expense Account"},
+            "8130 Buchwert abgegangener Wertpapiere des Umlaufverm\u00f6gens": {"account_type": "Expense Account"},
+            "8120 Buchwert abgegangener sonstiger Finanzanlagen": {"account_type": "Expense Account"},
+            "8990 Gewinnabfuhr bzw. Verlust\u00fcberrechnung aus Ergebnisabf\u00fchrungsvertr\u00e4gen": {"account_type": "Expense Account"},
+            "8350 nicht ausgenutzte Lieferantenskonti": {"account_type": "Expense Account"},
+            "root_type": "Income"
+        },       
+        "Klasse 9 Passiva: Eigenkapital, R\u00fccklagen, stille Einlagen, Abschlusskonten": {
+            "9000 Gezeichnetes bzw. gewidmetes Kapital": {
+                "account_type": "Equity"
+            },
+            "9200 Kapitalr\u00fccklagen": {
+                "account_type": "Equity"
+            },
+            "9300 Gewinnr\u00fccklagen": {
+                "account_type": "Equity"
+            },
+            "9400 Bewertungsreserven uns sonst. unversteuerte R\u00fccklagen": {
+                "account_type": "Equity"
+            },
+            "9600 Private Entnahmen": {"account_type": "Equity"},
+            "9610 Privatsteuern": {"account_type": "Equity"},
+            "9700 Einlagen stiller Gesellschafter ": {"account_type": "Equity"},
+            "9900 Evidenzkonto": {"account_type": "Equity"},
+            "9800 Er\u00f6ffnungsbilanzkonto (EBK)": {"account_type": "Equity"},
+            "9880 Jahresergebnis laut Gewinn- und Verlustrechnung (G+V)": {"account_type": "Equity"},
+            "9850 Schlussbilanzkonto (SBK)": {"account_type": "Round Off"},
+            "9190 nicht eingeforderte ausstehende Einlagen und berechtigte Entnahmen von Gesellschaftern": {
+                "account_type": "Equity"
+            },
+            "root_type": "Equity"
+        }
+     }   
+  }
+
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
index 4a22de9..3bbf082 100755
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -2472,7 +2472,7 @@
    "width": "50%"
   }, 
   {
-   "allow_on_submit": 0, 
+   "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
    "depends_on": "eval:doc.is_recurring==1", 
@@ -2490,7 +2490,7 @@
    "permlevel": 0, 
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
-   "read_only": 1, 
+   "read_only": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -2528,6 +2528,32 @@
    "bold": 0, 
    "collapsible": 0, 
    "depends_on": "eval:doc.is_recurring==1", 
+   "description": "Check to send it via Email, uncheck to generate a draft document only.", 
+   "fieldname": "notify_by_email", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Notify by Email", 
+   "length": 0, 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  },
+  {
+   "allow_on_submit": 1, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "depends_on": "eval:doc.notify_by_email==1", 
    "description": "Enter email id separated by commas, invoice will be mailed automatically on particular date", 
    "fieldname": "notification_email_address", 
    "fieldtype": "Code", 
@@ -2589,7 +2615,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-02-22 09:32:04.196291", 
+ "modified": "2016-02-24 16:03:07.975604", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Purchase Invoice", 
@@ -2743,4 +2769,4 @@
  "sort_order": "DESC", 
  "timeline_field": "supplier", 
  "title_field": "title"
-}
\ No newline at end of file
+}
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
index ab486aa..7ac8601 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
@@ -3221,7 +3221,7 @@
    "width": "50%"
   }, 
   {
-   "allow_on_submit": 0, 
+   "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
    "depends_on": "eval:doc.is_recurring==1", 
@@ -3239,7 +3239,7 @@
    "permlevel": 0, 
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
-   "read_only": 1, 
+   "read_only": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -3272,11 +3272,37 @@
    "set_only_once": 0, 
    "unique": 0
   }, 
-  {
+    {
    "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
    "depends_on": "eval:doc.is_recurring==1", 
+   "description": "Check to send it via Email, uncheck to generate a draft document only.", 
+   "fieldname": "notify_by_email", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Notify by Email", 
+   "length": 0, 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 1, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "depends_on": "eval:doc.notify_by_email==1", 
    "description": "Enter email id separated by commas, invoice will be mailed automatically on particular date", 
    "fieldname": "notification_email_address", 
    "fieldtype": "Code", 
@@ -3364,7 +3390,7 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-02-22 09:34:35.695558", 
+ "modified": "2016-02-24 15:56:43.416423", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Sales Invoice", 
@@ -3459,4 +3485,4 @@
  "sort_order": "DESC", 
  "timeline_field": "customer", 
  "title_field": "title"
-}
\ No newline at end of file
+}
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index fb1781a..9c518d1 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -2523,7 +2523,7 @@
    "unique": 0
   }, 
   {
-   "allow_on_submit": 0, 
+   "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
    "depends_on": "eval:doc.is_recurring==1", 
@@ -2541,7 +2541,7 @@
    "permlevel": 0, 
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
-   "read_only": 1, 
+   "read_only": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -2578,6 +2578,32 @@
    "bold": 0, 
    "collapsible": 0, 
    "depends_on": "eval:doc.is_recurring==1", 
+   "description": "Check to send it via Email, uncheck to generate a draft document only.", 
+   "fieldname": "notify_by_email", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Notify by Email", 
+   "length": 0, 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 1, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "depends_on": "eval:doc.notify_by_email==1", 
    "description": "Enter email id separated by commas, order will be mailed automatically on particular date", 
    "fieldname": "notification_email_address", 
    "fieldtype": "Code", 
@@ -2638,7 +2664,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-02-22 09:32:53.191526", 
+ "modified": "2016-02-25 09:51:38.479762", 
  "modified_by": "Administrator", 
  "module": "Buying", 
  "name": "Purchase Order", 
@@ -2772,4 +2798,4 @@
  "sort_order": "DESC", 
  "timeline_field": "supplier", 
  "title_field": "title"
-}
\ No newline at end of file
+}
diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py
index 3ecbe5f..d029132 100644
--- a/erpnext/controllers/recurring_document.py
+++ b/erpnext/controllers/recurring_document.py
@@ -38,18 +38,19 @@
 
 	recurring_documents = frappe.db.sql("""select name, recurring_id
 		from `tab{0}` where is_recurring=1
-		and docstatus=1 and next_date=%s
+		and (docstatus=1 or docstatus=0) and next_date=%s
 		and next_date <= ifnull(end_date, '2199-12-31') {1}""".format(doctype, condition), next_date)
 
 	exception_list = []
 	for ref_document, recurring_id in recurring_documents:
 		if not frappe.db.sql("""select name from `tab%s`
-				where %s=%s and recurring_id=%s and docstatus=1"""
+				where %s=%s and recurring_id=%s and (docstatus=1 or docstatus=0)"""
 				% (doctype, date_field, '%s', '%s'), (next_date, recurring_id)):
 			try:
 				reference_doc = frappe.get_doc(doctype, ref_document)
 				new_doc = make_new_document(reference_doc, date_field, next_date)
-				send_notification(new_doc)
+				if reference_doc.notify_by_email:
+					send_notification(new_doc)
 				if commit:
 					frappe.db.commit()
 			except:
@@ -92,7 +93,8 @@
 		date_field: posting_date,
 		"from_date": from_date,
 		"to_date": to_date,
-		"fiscal_year": get_fiscal_year(posting_date)[0]
+		"fiscal_year": get_fiscal_year(posting_date)[0],
+        	"next_date": get_next_date(from_date, mcount,cint(reference_doc.repeat_on_day_of_month))
 	})
 
 	# copy document fields
@@ -110,7 +112,11 @@
 
 	new_document.run_method("on_recurring", reference_doc=reference_doc)
 
-	new_document.submit()
+	if not reference_doc.notify_by_email:
+		new_document.docstatus=0
+		new_document.insert()
+	else:
+		new_document.submit()
 
 	return new_document
 
@@ -181,18 +187,19 @@
 #
 
 def validate_notification_email_id(doc):
-	if doc.notification_email_address:
-		email_list = split_emails(doc.notification_email_address.replace("\n", ""))
+	if doc.notify_by_email:
+		if doc.notification_email_address:
+			email_list = split_emails(doc.notification_email_address.replace("\n", ""))
+	
+			from frappe.utils import validate_email_add
+			for email in email_list:
+				if not validate_email_add(email):
+					throw(_("{0} is an invalid email address in 'Notification \
+						Email Address'").format(email))
 
-		from frappe.utils import validate_email_add
-		for email in email_list:
-			if not validate_email_add(email):
-				throw(_("{0} is an invalid email address in 'Notification \
-					Email Address'").format(email))
-
-	else:
-		frappe.throw(_("'Notification Email Addresses' not specified for recurring %s") \
-			% doc.doctype)
+		else:
+			frappe.throw(_("'Notification Email Addresses' not specified for recurring %s") \
+				% doc.doctype)
 
 def set_next_date(doc, posting_date):
 	""" Set next date on which recurring document will be created"""
@@ -200,7 +207,7 @@
 	if not doc.repeat_on_day_of_month:
 		msgprint(_("Please enter 'Repeat on Day of Month' field value"), raise_exception=1)
 
-	next_date = get_next_date(posting_date, month_map[doc.recurring_type],
+	next_date = doc.next_date or get_next_date(doc.from_date, month_map[doc.recurring_type],
 		cint(doc.repeat_on_day_of_month))
 
 	frappe.db.set(doc, 'next_date', next_date)
diff --git a/erpnext/controllers/tests/test_recurring_document.py b/erpnext/controllers/tests/test_recurring_document.py
index ef8d5fb..0723f3d 100644
--- a/erpnext/controllers/tests/test_recurring_document.py
+++ b/erpnext/controllers/tests/test_recurring_document.py
@@ -112,7 +112,7 @@
 
 	def _test(i):
 		obj.assertEquals(i+1, frappe.db.sql("""select count(*) from `tab%s`
-			where recurring_id=%s and docstatus=1""" % (base_doc.doctype, '%s'),
+			where recurring_id=%s and (docstatus=1 or docstatus=0)""" % (base_doc.doctype, '%s'),
 			(base_doc.recurring_id))[0][0])
 
 		next_date = get_next_date(base_doc.get(date_field), no_of_months,
@@ -121,7 +121,7 @@
 		manage_recurring_documents(base_doc.doctype, next_date=next_date, commit=False)
 
 		recurred_documents = frappe.db.sql("""select name from `tab%s`
-			where recurring_id=%s and docstatus=1 order by name desc"""
+			where recurring_id=%s and (docstatus=1 or docstatus=0) order by name desc"""
 			% (base_doc.doctype, '%s'), (base_doc.recurring_id))
 
 		obj.assertEquals(i+2, len(recurred_documents))
diff --git a/erpnext/docs/user/manual/en/accounts/articles/update-stock-option-in-sales-invoice.md b/erpnext/docs/user/manual/en/accounts/articles/update-stock-option-in-sales-invoice.md
index 3f3a470..4c6c659 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/update-stock-option-in-sales-invoice.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/update-stock-option-in-sales-invoice.md
@@ -1,9 +1,9 @@
 #Delivery from Sales Invoice
 
-If you have items delivery and invoicing happening at the same time, you can create delivery from with Sales Invocice itself. Sales Invoice has field called **Update Stock**, just before Item table. If this field is checked, on submission of Sales Invoice, stock of Item will be deducted from selected Warehouse.
+If you have items delivery and invoicing happening at the same time, you can create delivery from with Sales Invoice itself. Sales Invoice has field called **Update Stock**, just before Item table. If this field is checked, on submission of Sales Invoice, stock of Item will be deducted from selected Warehouse.
 
 <img alt="Update Stock" class="screenshot" src="{{docs_base_url}}/assets/img/articles/update-stock.png">
 
 On checking Update Stock, Sales Invoice Item will show relevant fields like Warehouse, Serial No., Batch No., Item valuation etc.
 
-On submission of Sales Invoice, with general ledger posting, stock ledger posting will happen as well.
\ No newline at end of file
+On submission of Sales Invoice, with general ledger posting, stock ledger posting will happen as well.
diff --git a/erpnext/docs/user/manual/en/accounts/articles/withdrawing-salary-from-owners-equity-account.md b/erpnext/docs/user/manual/en/accounts/articles/withdrawing-salary-from-owners-equity-account.md
index b18ec6c..1e7a993 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/withdrawing-salary-from-owners-equity-account.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/withdrawing-salary-from-owners-equity-account.md
@@ -1,4 +1,4 @@
-#WIthdrawing Salary from Owner's Equity Account
+#Withdrawing Salary from Owner's Equity Account
 
 ### Question
 
@@ -18,4 +18,4 @@
 1. Credit **Cash** $1000
 2. Debit **Owner's Draws** $1000
 
-<!-- markdown -->
\ No newline at end of file
+<!-- markdown -->
diff --git a/erpnext/docs/user/manual/es/accounts/accounting-entries.md b/erpnext/docs/user/manual/es/accounts/accounting-entries.md
new file mode 100644
index 0000000..ffda0b5
--- /dev/null
+++ b/erpnext/docs/user/manual/es/accounts/accounting-entries.md
@@ -0,0 +1,73 @@
+<!---
+WORK IN PROGRESS
+-->
+
+El concepto de contabilidad se explica con el siguiente ejemplo: Se toma a 
+"Tea Stall" como compañía y se observa como registrar entradas contables
+para el negocio. 
+
+  * Mama (El propietario de Tea-stall) invierte $25000 para iniciar el negocio.
+
+![A&L]({{docs_base_url}}/assets/old_images/erpnext/assets-1.png)
+
+__Análisis:__ Mama invierte 25000 en la compañía, con la esperanza de obtener alguna
+ganancia. En otras palabras, la compañía es responsable del pago de $25000 a mama en 
+el futuro. Así, la cuenta "Mama" es una cuenta de pasivo y es un crédito. El balance de
+efectivo de la compañía se incrementa debido a la inversión, "Caja" es un activo de
+la compañía y debe ser debitado.
+
+  * La compañía necesita equipos (Estufa, tetera, pocillos, etc) y materias primas (te, 
+  azucar, leche, etc) de inmediato. Decide comprar en una tienda cercana "Super Bazaar"
+  que pertenece a un amigo y le concede cierto crédito. Los equipos cuestan 2800 y las
+  materias primas valen 2200. La compañía paga 2000 de un total de 5000.
+  
+![A&L]({{docs_base_url}}/assets/old_images/erpnext/assets-2.png)
+
+__Análisis:__ Los equipos son "Activos Fijos" (porque tienen una larga vida útil) de la
+compañía y las materias primas son "Activos corrientes" (porque son usados en la 
+operación diaria del negocio). Entonces, "Equipos" y "Existencias disponibles" deben
+ser debitadas para incrementar su valor. La compañía pagó 2000, entonces la cuenta
+"Caja" debe ser reducida en dicha cantidad, es decir debe ser crédito. Y dado que la
+compañía tiene la obligación de pagar 3000 a "Super Bazaar", dicha cuenta debe tener
+un crédito de 3000.
+
+
+  * Mama (quien está pendiente de todas las entradas)decide anotar las ventas al finalizar
+  cada día, de tal manera que pueda analizar las ventas diarias. Al finaliza el primer
+  día, Tea Stall vende 325 tazas de té, lo cual da una venta neta de RS. 1575. El propietario
+  registra feliz su primer día de ventas.
+
+![A&L]({{docs_base_url}}/assets/old_images/erpnext/assets-3.png)
+
+__Análisis:__ Los ingresos han sido anotados en la cuenta "Ventas de Té", la cual se 
+debita para incrementar el valor y la misma cantidad se acredita de la cuenta
+"Caja". Digamos, para hacer 325 tazas de té cuestan Rs 800, entonces la 
+cuenta "Existencias disponibles" debe ser reducidas (crédito) en 800 y el gasto
+debe ser registado en la cuenta "Costos de bienes vendidos" en la misma cantidad.
+
+Al finalizar el mes, la compañía paga el arriendo del local (5000) y el salario de
+un empleado (8000), el cual trabajó desde el primer día.
+
+![A&L]({{docs_base_url}}/assets/old_images/erpnext/assets-4.png)
+
+### Registro de ganancias
+
+A medida que avanza el mes, la compañía compra más materias primas para el negocio.
+Después de un mes se anotan las ganancias en el "Libro de Balance" y en el de 
+"Estado de Pérdidas y Ganancias". Ya que las ganacias pertenecen a Mama y no a
+la compañía, se considera que dichas ganacias son una obligación (la compañía tiene
+que pagárselas a Mama). Cuando el Libro de Balance no está balanceado, p.e. el
+débito no es igual al crédito, la ganacia aún no ha sido anotada. Se debe realziar
+la siguiente entrada:
+
+![A&L]({{docs_base_url}}/assets/old_images/erpnext/assets-5.png)
+
+Explicación: Las ventas y gastos netos son 40000 y 20000 respectivamente.
+Entonces, la compañía tuvo una ganancia de 20000. Para registrar esa entrada,
+la cuenta "Pérdidas y Ganancias" debe ser debitada y la cuenta "Capital"
+debe ser acreditada. El balance neto de caja es 44000 y existe alguna materia
+prima que vale $1000.
+
+**Trabajo en progreso.**
+
+{next}
diff --git a/erpnext/docs/user/manual/es/accounts/accounting-reports.md b/erpnext/docs/user/manual/es/accounts/accounting-reports.md
new file mode 100644
index 0000000..925ea1f
--- /dev/null
+++ b/erpnext/docs/user/manual/es/accounts/accounting-reports.md
@@ -0,0 +1,48 @@
+<!---
+WORK IN PROGRESS
+-->
+
+Algunos de los principales reportes contables son:
+
+### Libro Mayor
+
+El Libro Mayor está basada en la tabla de Entradas y puede ser filtrado por
+cuenta y por periodo específico de tiempo. Esto ayuda a tener un reporte
+actualizado de todas las entradas que existan para una cuetna dada en un 
+periodo determinado. 
+
+<img alt="Libro Mayor" class="screenshot"
+    src="{{docs_base_url}}/assets/img/accounts/general-ledger.png">
+
+### Balance Contable
+
+Es el listado del balance para todas las cuentas ("Libro Mayor" y "Grupo")
+en una fecha particular. Para cada cuenta proporciona:
+
+  * Apertura
+  * Débitos
+  * Creditos
+  * Cierre
+
+<img alt="Balance Contable" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/trial-balance.png">
+
+La suma de todos los balances de cierre en el Balance Contable debe ser igual a cero.
+
+### Cuentas por Pagar y Cuentas por Cobrar (CP / CC)
+
+Este reporte permite hacer seguimiento a las facturas enviadas a los clientes y proveedores. En este 
+reporte, se resaltan diferentes periodos de tiempo. p.e. entre 0-30 días, 30-60 días y así por el estilo.
+
+<img alt="Accounts Receivable" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/accounts-receivable.png">
+
+### Registro de Ventas y Compras
+
+En este reporte, cada cuenta de impuestos es transpuesta en columnas. For cada factura y por cada item
+se puede obtener la cantidad de impuestos individuales que debe ser pagados, de acuerdo a la
+tabla de Impuestos y Contribuciones,
+
+<img alt="Sales Register" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/sales-register.png">
+
+**Trabajo en progreso.**
+
+{next}
diff --git a/erpnext/docs/user/manual/es/accounts/advance-payment-entry.md b/erpnext/docs/user/manual/es/accounts/advance-payment-entry.md
new file mode 100644
index 0000000..81491bc
--- /dev/null
+++ b/erpnext/docs/user/manual/es/accounts/advance-payment-entry.md
@@ -0,0 +1,67 @@
+<!---
+WORK IN PROGRESS
+-->
+Los pagos realizados por el cliente antes de recibir el envío del producto se
+denominan Anticipos. Para ordenes de alto costo, los negocios esperan recibir
+dcho tipos de pago.
+
+  
+__Por Ejemplo:__ Consider a customer- Jane D'souza placing an order for a double
+bed costing $10000 She is asked to give some advance before the furniture
+house begins work on her order. She gives them $5000 in cash.
+
+  
+Go to Accounts and open a new Journal Entry to make the advance entry.
+
+> Accounts > Documents > Journal Entry > New Journal Entry  
+
+Mention the voucher type as cash voucher. This differs for different
+customers. If somebody pays by cheque the voucher type will be Bank Voucher.
+Then select the customer account and make the respective debit and credit
+entries.  
+
+Since the customer has given $5000 as cash advance,it will be recorded as a
+credit entry against the customer. To balance it with the debit entry [Double
+accounting Entry] enter $5000 as debit against the company's cash account. In
+the row "Is Advance" click 'Yes'.
+
+#### Figure 1 : Journal Entry -Advance Entry  
+
+<img class="screenshot" alt="Advace Payment" src="{{docs_base_url}}/assets/img/accounts/advance-payment-1.png">
+
+### Double Entry Accounting  
+
+Double entry bookkeeping is a system of accounting in which every transaction
+has a corresponding positive and negative entry : debits and credits. Every
+transaction involves a [debit entry
+](http://www.e-conomic.co.uk/accountingsystem/glossary/debit)in one account
+and a [credit
+entry](http://www.e-conomic.co.uk/accountingsystem/glossary/credit) in another
+account. This means that every transaction must be recorded in two accounts;
+one account will be debited because it receives value and the other account
+will be credited because it has given value.
+
+  
+#### Figure 2: Transaction and Difference Entry
+
+<img class="screenshot" alt="Advace Payment" src="{{docs_base_url}}/assets/img/accounts/advance-payment-2.png">
+
+Save and submit the JV. If this document is not saved it will not be pulled in
+other accounting documents.
+
+When you make a new Sales Invoice for the same customer, mention the advance
+in the Sales Invoice Form.
+
+To link the Sales Invoice to the Journal Entry which mentions the advance
+payment entry, click on ‘Get Advances Received’.  Allocate the amount of
+advance in the advances table. The accounting will be adjusted accordingly.
+
+#### Figure 3: Receive Advance 
+
+<img class="screenshot" alt="Advace Payment" src="{{docs_base_url}}/assets/img/accounts/advance-payment-3.png">
+
+Save and submit the Sales Invoice.
+
+**Trabajo en progreso.**
+
+{next}
diff --git a/erpnext/docs/user/manual/es/accounts/index.md b/erpnext/docs/user/manual/es/accounts/index.md
new file mode 100644
index 0000000..9599bf9
--- /dev/null
+++ b/erpnext/docs/user/manual/es/accounts/index.md
@@ -0,0 +1,33 @@
+<!---
+WORK IN PROGRESS
+-->
+Al final del ciclo de compra y venta viene la facturación y los pagos.
+Quizás se tenga un contador en el equipo, quizás se haga la contabilidad
+por cuenta propia o quizás se tenga contratado un tercero que realice la tarea.
+En todos los casos, la contabilidad finaciera forma parte del núcleo de
+cualquier sistema de gestión del negocio tal como los ERP.
+
+En **ERPNext**, las operaciones contables consisten en 3 transacciones principales: 
+
+  * Factura de ventas: Las facturas que se entregan al Cliente correspondientes a 
+    los servicios o productos que se proveen.
+  * Factura de Compra: Facturas que los proveedores le entregan a la compañía por
+    la compra de sus productos o servicios.
+  * Entradas 
+
+
+At the end of sales and purchase cycle comes billing and payments. You may have
+an accountant in your team, or you may be doing accounting yourself, or you may
+have outsourced your accounting. In all the cases financial accounting forms the core of any business management system like an ERP.
+
+In ERPNext, your accounting operations consists of 3 main transactions:
+
+  * Sales Invoice: The bills that you raise to your Customers for the products or services you provide.
+  * Purchase Invoice: Bills that your Suppliers give you for their products or services.
+  * Entradas Diarias: Para contabilizar entradas, tales cvomo pagos, créditos y otros tipos.
+
+### Temas
+
+**Trabajo en progreso.**
+
+{index}
diff --git a/erpnext/docs/user/manual/es/accounts/index.txt b/erpnext/docs/user/manual/es/accounts/index.txt
new file mode 100644
index 0000000..bad8436
--- /dev/null
+++ b/erpnext/docs/user/manual/es/accounts/index.txt
@@ -0,0 +1,3 @@
+advance-payment-entry
+accounting-reports
+accounting-entries
diff --git a/erpnext/docs/user/manual/es/index.md b/erpnext/docs/user/manual/es/index.md
new file mode 100644
index 0000000..5c2bcef
--- /dev/null
+++ b/erpnext/docs/user/manual/es/index.md
@@ -0,0 +1,12 @@
+<!---
+WORK IN PROGRESS
+-->
+# Manual de Usuario (Español)
+
+### Contenido: 
+
+{index}
+
+**Trabajo en progreso.**
+
+[The Spanish Translation of the ERPNext manual is in progress. Click here to see the english manual]({{ docs_base_url }}/user/manual/en)
diff --git a/erpnext/docs/user/manual/es/index.txt b/erpnext/docs/user/manual/es/index.txt
new file mode 100644
index 0000000..e6573f2
--- /dev/null
+++ b/erpnext/docs/user/manual/es/index.txt
@@ -0,0 +1 @@
+accounts
diff --git a/erpnext/docs/user/manual/index.md b/erpnext/docs/user/manual/index.md
index 3a992d9..a2db1ba 100644
--- a/erpnext/docs/user/manual/index.md
+++ b/erpnext/docs/user/manual/index.md
@@ -1,6 +1,10 @@
+<!---
+WORK IN PROGRESS
+-->
 # ERPNext User Manual
 
 Select your language
 
 1. [English](en)
 1. [Deutsch](de)
+1. [Español](es)
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/index.txt b/erpnext/docs/user/manual/index.txt
index c574d07..2c4c454 100644
--- a/erpnext/docs/user/manual/index.txt
+++ b/erpnext/docs/user/manual/index.txt
@@ -1 +1 @@
-en
+en
\ No newline at end of file
diff --git a/erpnext/fixtures/web_form.json b/erpnext/fixtures/web_form.json
new file mode 100644
index 0000000..a24107e38b
--- /dev/null
+++ b/erpnext/fixtures/web_form.json
@@ -0,0 +1,380 @@
+[
+ {
+  "allow_comments": 0, 
+  "allow_delete": 0, 
+  "allow_edit": 0, 
+  "allow_multiple": 0, 
+  "breadcrumbs": null, 
+  "doc_type": "Lead", 
+  "docstatus": 0, 
+  "doctype": "Web Form", 
+  "introduction_text": "To contact us sales persons", 
+  "is_standard": 0, 
+  "login_required": 0, 
+  "modified": "2015-01-22 10:43:02.928698", 
+  "name": "contact", 
+  "page_name": "contact", 
+  "published": 1, 
+  "success_message": "Thanks for contact us. We will soon get back to you.", 
+  "success_url": "/contact", 
+  "title": "Contact", 
+  "web_form_fields": [
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "lead_name", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Contact Name", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 1
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "company_name", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Organization Name", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "email_id", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Email Id", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "website", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Website", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }
+  ], 
+  "web_page_link_text": null
+ }, 
+ {
+  "allow_comments": 1, 
+  "allow_delete": 1, 
+  "allow_edit": 1, 
+  "allow_multiple": 1, 
+  "breadcrumbs": "[{\"title\":\"Issues\", \"name\":\"issues\"}]", 
+  "doc_type": "Issue", 
+  "docstatus": 0, 
+  "doctype": "Web Form", 
+  "introduction_text": null, 
+  "is_standard": 1, 
+  "login_required": 1, 
+  "modified": "2015-06-01 08:14:26.350792", 
+  "name": "issues", 
+  "page_name": "issues", 
+  "published": 1, 
+  "success_message": "", 
+  "success_url": "/issues", 
+  "title": "Issues", 
+  "web_form_fields": [
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "subject", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Subject", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 1
+   }, 
+   {
+    "default": "Open", 
+    "description": null, 
+    "fieldname": "status", 
+    "fieldtype": "Select", 
+    "hidden": 0, 
+    "label": "Status", 
+    "options": "Open\nReplied\nHold\nClosed", 
+    "read_only": 1, 
+    "reqd": 0
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "description", 
+    "fieldtype": "Text", 
+    "hidden": 0, 
+    "label": "Description", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "attachment", 
+    "fieldtype": "Attach", 
+    "hidden": 0, 
+    "label": "Attachment", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }
+  ], 
+  "web_page_link_text": null
+ }, 
+ {
+  "allow_comments": 0, 
+  "allow_delete": 0, 
+  "allow_edit": 1, 
+  "allow_multiple": 1, 
+  "breadcrumbs": null, 
+  "doc_type": "Address", 
+  "docstatus": 0, 
+  "doctype": "Web Form", 
+  "introduction_text": null, 
+  "is_standard": 1, 
+  "login_required": 1, 
+  "modified": "2015-11-23 08:21:53.924318", 
+  "name": "addresses", 
+  "page_name": "addresses", 
+  "published": 1, 
+  "success_message": null, 
+  "success_url": "/addresses", 
+  "title": "Addresses", 
+  "web_form_fields": [
+   {
+    "default": null, 
+    "description": "", 
+    "fieldname": "address_title", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Address Title", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "address_type", 
+    "fieldtype": "Select", 
+    "hidden": 0, 
+    "label": "Address Type", 
+    "options": "Billing\nShipping\nOffice\nPersonal\nPlant\nPostal\nShop\nSubsidiary\nWarehouse\nOther", 
+    "read_only": 0, 
+    "reqd": 1
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "address_line1", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Address Line 1", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 1
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "address_line2", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Address Line 2", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "city", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "City/Town", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 1
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "state", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "State", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "pincode", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Postal Code", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "country", 
+    "fieldtype": "Link", 
+    "hidden": 0, 
+    "label": "Country", 
+    "options": "Country", 
+    "read_only": 0, 
+    "reqd": 1
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": null, 
+    "fieldtype": "Column Break", 
+    "hidden": 0, 
+    "label": null, 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "email_id", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Email Id", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "phone", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Phone", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 1
+   }, 
+   {
+    "default": "0", 
+    "description": "", 
+    "fieldname": "is_primary_address", 
+    "fieldtype": "Check", 
+    "hidden": 0, 
+    "label": "Preferred Billing Address", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }, 
+   {
+    "default": "0", 
+    "description": "", 
+    "fieldname": "is_shipping_address", 
+    "fieldtype": "Check", 
+    "hidden": 0, 
+    "label": "Preferred Shipping Address", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }
+  ], 
+  "web_page_link_text": null
+ }, 
+ {
+  "allow_comments": 0, 
+  "allow_delete": 0, 
+  "allow_edit": 0, 
+  "allow_multiple": 0, 
+  "breadcrumbs": "[{\"title\":\"Jobs\", \"name\":\"jobs\"}]", 
+  "doc_type": "Job Applicant", 
+  "docstatus": 0, 
+  "doctype": "Web Form", 
+  "introduction_text": null, 
+  "is_standard": 0, 
+  "login_required": 0, 
+  "modified": "2016-02-19 16:46:57.448416", 
+  "name": "job_application", 
+  "page_name": "job_application", 
+  "published": 1, 
+  "success_message": "Thank you for applying.", 
+  "success_url": "/jobs", 
+  "title": "Job Application", 
+  "web_form_fields": [
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "job_title", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Job Title", 
+    "options": "", 
+    "read_only": 1, 
+    "reqd": 0
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "applicant_name", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Applicant Name", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 1
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "email_id", 
+    "fieldtype": "Data", 
+    "hidden": 0, 
+    "label": "Email Id", 
+    "options": "Email", 
+    "read_only": 0, 
+    "reqd": 0
+   }, 
+   {
+    "default": "Cover Letter/Message", 
+    "description": null, 
+    "fieldname": "message", 
+    "fieldtype": "Text", 
+    "hidden": 0, 
+    "label": "Message", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 1
+   }, 
+   {
+    "default": null, 
+    "description": null, 
+    "fieldname": "upload_cv", 
+    "fieldtype": "Attach", 
+    "hidden": 0, 
+    "label": "Upload CV", 
+    "options": null, 
+    "read_only": 0, 
+    "reqd": 0
+   }
+  ], 
+  "web_page_link_text": null
+ }
+]
\ No newline at end of file
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 958fc83..f47185e 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -7,7 +7,7 @@
 app_description = """ERP made simple"""
 app_icon = "icon-th"
 app_color = "#e74c3c"
-app_version = "6.23.6"
+app_version = "6.23.7"
 app_email = "info@erpnext.com"
 app_license = "GNU General Public License (v3)"
 source_link = "https://github.com/frappe/erpnext"
@@ -40,6 +40,8 @@
 
 calendars = ["Task", "Production Order", "Time Log", "Leave Application", "Sales Order", "Holiday List"]
 
+fixtures = ["Web Form"]
+
 website_generators = ["Item Group", "Item", "Sales Partner"]
 
 website_context = {
@@ -68,6 +70,13 @@
 			"doctype": "Delivery Note",
 			"parents": [{"title": _("Shipments"), "name": "shipments"}]
 		}
+	},
+	{"from_route": "/jobs", "to_route": "Job Opening"},
+	{"from_route": "/jobs/<path:name>", "to_route": "job_opening",
+		"defaults": {
+			"doctype": "Job Opening",
+			"parents": [{"title": _("Job Opening"), "name": "jobs"}]
+		}
 	}
 ]
 
diff --git a/erpnext/hr/doctype/employee/test_employee.py b/erpnext/hr/doctype/employee/test_employee.py
index 618be1b..dbd510b 100644
--- a/erpnext/hr/doctype/employee/test_employee.py
+++ b/erpnext/hr/doctype/employee/test_employee.py
@@ -12,7 +12,7 @@
 class TestEmployee(unittest.TestCase):
 	def test_birthday_reminders(self):
 		employee = frappe.get_doc("Employee", frappe.db.sql_list("select name from tabEmployee limit 1")[0])
-		employee.date_of_birth = "1990" + frappe.utils.nowdate()[4:]
+		employee.date_of_birth = "1992" + frappe.utils.nowdate()[4:]
 		employee.company_email = "test@example.com"
 		employee.save()
 
diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.json b/erpnext/hr/doctype/job_applicant/job_applicant.json
index 423ab7e..fc579cb 100644
--- a/erpnext/hr/doctype/job_applicant/job_applicant.json
+++ b/erpnext/hr/doctype/job_applicant/job_applicant.json
@@ -108,7 +108,7 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "job_opening", 
+   "fieldname": "job_title", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -184,7 +184,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-02-12 00:38:31.773297", 
+ "modified": "2016-02-19 16:43:24.705867", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Job Applicant", 
@@ -204,11 +204,33 @@
    "print": 1, 
    "read": 1, 
    "report": 1, 
+   "restrict": 0, 
+   "restricted": 0, 
    "role": "HR User", 
    "set_user_permissions": 0, 
    "share": 1, 
    "submit": 0, 
    "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 0, 
+   "delete": 0, 
+   "email": 0, 
+   "export": 0, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 0, 
+   "read": 1, 
+   "report": 0, 
+   "role": "Guest", 
+   "set_user_permissions": 0, 
+   "share": 0, 
+   "submit": 0, 
+   "write": 0
   }
  ], 
  "read_only": 0, 
diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.py b/erpnext/hr/doctype/job_applicant/job_applicant.py
index b0482cd..f1c0362 100644
--- a/erpnext/hr/doctype/job_applicant/job_applicant.py
+++ b/erpnext/hr/doctype/job_applicant/job_applicant.py
@@ -7,10 +7,12 @@
 from frappe.model.document import Document
 import frappe
 from frappe import _
-from frappe.utils import comma_and
+from frappe.utils import comma_and, validate_email_add
 
 sender_field = "email_id"
 
+class DuplicationError(frappe.ValidationError): pass
+
 class JobApplicant(Document):
 	def onload(self):
 		offer_letter = frappe.get_all("Offer Letter", filters={"job_applicant": self.name})
@@ -25,6 +27,14 @@
 
 	def validate(self):
 		self.check_email_id_is_unique()
+		validate_email_add(self.email_id, True)
+		if frappe.db.sql("""select applicant_name from `tabJob Applicant` where email_id= %s and job_title= %s""",
+				(self.email_id, self.job_title)):
+					frappe.throw(_("Application already exist for {0} against Job Opening - {1}")
+						.format(self.applicant_name, self.job_title), DuplicationError)
+		
+		if not self.get("__islocal") and not self.upload_cv:
+			frappe.throw(_("CV Required"))
 
 	def check_email_id_is_unique(self):
 		if self.email_id:
@@ -33,3 +43,5 @@
 
 			if names:
 				frappe.throw(_("Email id must be unique, already exists for {0}").format(comma_and(names)), frappe.DuplicateEntryError)
+
+		
\ No newline at end of file
diff --git a/erpnext/hr/doctype/job_opening/job_opening.js b/erpnext/hr/doctype/job_opening/job_opening.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/hr/doctype/job_opening/job_opening.js
diff --git a/erpnext/hr/doctype/job_opening/job_opening.json b/erpnext/hr/doctype/job_opening/job_opening.json
index f4380ad..d05fe48 100644
--- a/erpnext/hr/doctype/job_opening/job_opening.json
+++ b/erpnext/hr/doctype/job_opening/job_opening.json
@@ -25,6 +25,7 @@
    "no_copy": 0, 
    "permlevel": 0, 
    "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
    "read_only": 0, 
    "report_hide": 0, 
    "reqd": 1, 
@@ -48,6 +49,7 @@
    "options": "Open\nClosed", 
    "permlevel": 0, 
    "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
    "read_only": 0, 
    "report_hide": 0, 
    "reqd": 0, 
@@ -71,6 +73,7 @@
    "no_copy": 0, 
    "permlevel": 0, 
    "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
    "read_only": 0, 
    "report_hide": 0, 
    "reqd": 0, 
@@ -89,7 +92,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2015-11-16 06:29:48.769149", 
+ "modified": "2016-02-17 17:29:04.401527", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Job Opening", 
@@ -114,8 +117,29 @@
    "share": 1, 
    "submit": 0, 
    "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 0, 
+   "delete": 0, 
+   "email": 0, 
+   "export": 0, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 0, 
+   "read": 1, 
+   "report": 0, 
+   "role": "Guest", 
+   "set_user_permissions": 0, 
+   "share": 0, 
+   "submit": 0, 
+   "write": 0
   }
  ], 
  "read_only": 0, 
- "read_only_onload": 0
+ "read_only_onload": 0, 
+ "sort_order": "ASC"
 }
\ No newline at end of file
diff --git a/erpnext/projects/doctype/time_log/test_time_log.py b/erpnext/projects/doctype/time_log/test_time_log.py
index 8d5694f..81a352f 100644
--- a/erpnext/projects/doctype/time_log/test_time_log.py
+++ b/erpnext/projects/doctype/time_log/test_time_log.py
@@ -20,6 +20,22 @@
 			from_time= tl1.from_time, to_time= tl1.to_time, do_not_save= 1)
 
 		self.assertRaises(OverlapError, tl2.insert)
+		
+		tl3 = make_time_log_test_record(user= "test@example.com", employee= "_T-Employee-0002",
+			from_time= tl1.from_time - datetime.timedelta(hours=1), 
+			to_time= tl1.to_time + datetime.timedelta(hours=1), do_not_save= 1)
+
+		self.assertRaises(OverlapError, tl3.insert)
+		
+		tl4 = make_time_log_test_record(user= "test@example.com", employee= "_T-Employee-0002",
+			from_time= tl1.from_time + datetime.timedelta(minutes=20), 
+			to_time= tl1.to_time + datetime.timedelta(minutes=30), do_not_save= 1)
+
+		self.assertRaises(OverlapError, tl4.insert)
+		
+		make_time_log_test_record(user= "test@example.com", employee= "_T-Employee-0002",
+			from_time= tl1.to_time, 
+			to_time= tl1.to_time + datetime.timedelta(hours=1))
 
 	def test_production_order_status(self):
 		prod_order = make_prod_order_test_record(item= "_Test FG Item 2", qty= 1, do_not_submit= True)
diff --git a/erpnext/projects/doctype/time_log/time_log.py b/erpnext/projects/doctype/time_log/time_log.py
index 5242b2c..b2a855d 100644
--- a/erpnext/projects/doctype/time_log/time_log.py
+++ b/erpnext/projects/doctype/time_log/time_log.py
@@ -88,8 +88,8 @@
 		existing = frappe.db.sql("""select name, from_time, to_time from `tabTime Log`
 			where `{0}`=%(val)s and
 			(
-				(%(from_time)s between from_time and to_time) or 
-				(%(to_time)s between from_time and to_time) or 
+				(%(from_time)s > from_time and %(from_time)s < to_time) or 
+				(%(to_time)s > from_time and %(to_time)s < to_time) or 
 				(%(from_time)s <= from_time and %(to_time)s >= to_time))
 			and name!=%(name)s
 			and docstatus < 2""".format(fieldname),
diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json
index 73c5d20..1be2031 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.json
+++ b/erpnext/selling/doctype/sales_order/sales_order.json
@@ -2826,7 +2826,7 @@
    "unique": 0
   }, 
   {
-   "allow_on_submit": 0, 
+   "allow_on_submit": 1, 
    "bold": 0, 
    "collapsible": 0, 
    "depends_on": "eval:doc.is_recurring==1", 
@@ -2844,7 +2844,7 @@
    "permlevel": 0, 
    "print_hide": 1, 
    "print_hide_if_no_value": 0, 
-   "read_only": 1, 
+   "read_only": 0, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -2881,6 +2881,32 @@
    "bold": 0, 
    "collapsible": 0, 
    "depends_on": "eval:doc.is_recurring==1", 
+   "description": "Check to send it via Email, uncheck to generate a draft document only.", 
+   "fieldname": "notify_by_email", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Notify by Email", 
+   "length": 0, 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  },
+  {
+   "allow_on_submit": 1, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "depends_on": "eval:doc.notify_by_email==1", 
    "description": "Enter email id separated by commas, order will be mailed automatically on particular date", 
    "fieldname": "notification_email_address", 
    "fieldtype": "Code", 
@@ -2941,7 +2967,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-02-22 09:35:08.094329", 
+ "modified": "2016-02-24 16:10:47.732147", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Sales Order", 
@@ -3116,4 +3142,4 @@
  "sort_order": "DESC", 
  "timeline_field": "customer", 
  "title_field": "title"
-}
\ No newline at end of file
+}
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 95b2dd1..679bd2d 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -71,7 +71,7 @@
 
 		from erpnext.controllers.status_updater import validate_status
 		validate_status(self.status, ["Draft", "Submitted", "Stopped", "Cancelled"])
-		
+
 		pc_obj = frappe.get_doc('Purchase Common')
 		pc_obj.validate_for_items(self)
 
@@ -125,7 +125,7 @@
 					if d.ordered_qty and d.ordered_qty > d.qty:
 						frappe.throw(_("The total Issue / Transfer quantity {0} in Material Request {1}  \
 							cannot be greater than requested quantity {2} for Item {3}").format(d.ordered_qty, d.parent, d.qty, d.item_code))
-					
+
 				elif self.material_request_type == "Manufacture":
 					d.ordered_qty = flt(frappe.db.sql("""select sum(qty)
 						from `tabProduction Order` where material_request = %s
@@ -133,7 +133,7 @@
 						(self.name, d.name))[0][0])
 
 				frappe.db.set_value(d.doctype, d.name, "ordered_qty", d.ordered_qty)
-		
+
 		self._update_percent_field({
 			"target_dt": "Material Request Item",
 			"target_parent_dt": self.doctype,
@@ -228,7 +228,7 @@
 
 		target_doc.set("items", [d for d in target_doc.get("items")
 			if d.get("item_code") in supplier_items and d.get("qty") > 0])
-		
+
 		set_missing_values(source, target_doc)
 
 	for mr in material_requests:
@@ -263,7 +263,7 @@
 			and mr.material_request_type = 'Purchase'
 			and mr.per_ordered < 99.99
 			and mr.docstatus = 1
-			and mr.status != 'Stopped' 
+			and mr.status != 'Stopped'
                         order by mr_item.item_code ASC""" % ', '.join(['%s']*len(supplier_items)),
 			tuple(supplier_items))
 	else:
@@ -360,10 +360,10 @@
 				production_orders.append(prod_order.name)
 			else:
 				errors.append(d.item_code + " in Row " + cstr(d.idx))
-	if production_orders: 
+	if production_orders:
 		message = ["""<a href="#Form/Production Order/%s" target="_blank">%s</a>""" % \
 			(p, p) for p in production_orders]
-		msgprint(_("The following Production Orders were created : \n {0} ").format(new_line_sep(message)))
+		msgprint(_("The following Production Orders were created:" + '\n' + new_line_sep(message)))
 	if errors:
-		msgprint(_("Productions Orders cannot be raised for : \n {0}").format(new_line_sep(errors)))
-	return production_orders
\ No newline at end of file
+		msgprint(_("Productions Orders cannot be raised for:" + '\n' + new_line_sep(errors)))
+	return production_orders
diff --git a/erpnext/templates/pages/job_opening.html b/erpnext/templates/pages/job_opening.html
new file mode 100644
index 0000000..6a7ceb1
--- /dev/null
+++ b/erpnext/templates/pages/job_opening.html
@@ -0,0 +1,20 @@
+
+<head>
+<title>{{doc.job_title}}</title>
+</head>
+{% extends "templates/web.html" %}
+{% block header %}
+<h1>{{ doc.job_title }}</h1>
+{% endblock %}
+
+{% block breadcrumbs %}
+	{% include "templates/includes/breadcrumbs.html" %}
+{% endblock %}
+
+{% block page_content %}
+
+<p>{{ doc.description }}</p>
+
+<input class="btn btn-large btn-primary" type="button" onclick="location.href='/job_application?job_title={{ doc.job_title }}';" value="Apply Now" />
+
+{% endblock %}
\ No newline at end of file
diff --git a/erpnext/templates/pages/job_opening.py b/erpnext/templates/pages/job_opening.py
new file mode 100644
index 0000000..1bcfce2
--- /dev/null
+++ b/erpnext/templates/pages/job_opening.py
@@ -0,0 +1,16 @@
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+from frappe import _
+
+def get_context(context):
+	context.no_cache = 1
+	context.doc = frappe.get_doc(frappe.form_dict.doctype, frappe.form_dict.name)
+	context.parents = frappe.form_dict.parents
+
+	if not context.doc.has_website_permission("read"):
+		frappe.throw(_("Not Permitted"), frappe.PermissionError)
+
diff --git a/setup.py b/setup.py
index 92e4a92..76c0c12 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 from setuptools import setup, find_packages
 from pip.req import parse_requirements
 
-version = "6.23.6"
+version = "6.23.7"
 requirements = parse_requirements("requirements.txt", session="")
 
 setup(