Merge pull request #4871 from ShashaQin/patch-27
Improvements about recurring documents
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index 5967305..9926511 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
from __future__ import unicode_literals
-__version__ = '6.23.0'
+__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.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index b91df4b..50a50d9 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -24,11 +24,11 @@
if(!doc.is_return) {
if(doc.docstatus==1) {
- if(doc.outstanding_amount < 0) {
+ if(doc.outstanding_amount > 0) {
this.frm.add_custom_button(__('Payment'), this.make_bank_entry, __("Make"));
cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
}
- if(Math.abs(flt(doc.outstanding_amount)) < flt(doc.grand_total)) {
+ if(doc.outstanding_amount >= 0 || Math.abs(flt(doc.outstanding_amount)) < flt(doc.grand_total)) {
cur_frm.add_custom_button(__('Debit Note'), this.make_debit_note, __("Make"));
}
}
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 200fca6..d4d00ff 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -57,7 +57,7 @@
return item.is_delivered_by_supplier ? true : false;
})
- if(Math.abs(flt(doc.outstanding_amount)) < flt(doc.grand_total)) {
+ if(doc.outstanding_amount >= 0 || Math.abs(flt(doc.outstanding_amount)) < flt(doc.grand_total)) {
cur_frm.add_custom_button(doc.update_stock ? __('Sales Return') : __('Credit Note'),
this.make_sales_return, __("Make"));
cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
diff --git a/erpnext/docs/assets/img/articles/$SGrab_323.png b/erpnext/docs/assets/img/articles/$SGrab_323.png
deleted file mode 100644
index e97f343..0000000
--- a/erpnext/docs/assets/img/articles/$SGrab_323.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/$SGrab_327.png b/erpnext/docs/assets/img/articles/$SGrab_327.png
deleted file mode 100644
index 8e63c70..0000000
--- a/erpnext/docs/assets/img/articles/$SGrab_327.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/$SGrab_328.png b/erpnext/docs/assets/img/articles/$SGrab_328.png
deleted file mode 100644
index 88882c1..0000000
--- a/erpnext/docs/assets/img/articles/$SGrab_328.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/$SGrab_329.png b/erpnext/docs/assets/img/articles/$SGrab_329.png
deleted file mode 100644
index fa3711b..0000000
--- a/erpnext/docs/assets/img/articles/$SGrab_329.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/$SGrab_330.png b/erpnext/docs/assets/img/articles/$SGrab_330.png
deleted file mode 100644
index f1fe4f2..0000000
--- a/erpnext/docs/assets/img/articles/$SGrab_330.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/$SGrab_331.png b/erpnext/docs/assets/img/articles/$SGrab_331.png
deleted file mode 100644
index 3c4d10d..0000000
--- a/erpnext/docs/assets/img/articles/$SGrab_331.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/$SGrab_406.png b/erpnext/docs/assets/img/articles/$SGrab_406.png
deleted file mode 100644
index 022eeb8..0000000
--- a/erpnext/docs/assets/img/articles/$SGrab_406.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/$SGrab_407.png b/erpnext/docs/assets/img/articles/$SGrab_407.png
deleted file mode 100644
index bc75a10..0000000
--- a/erpnext/docs/assets/img/articles/$SGrab_407.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/$SGrab_408.png b/erpnext/docs/assets/img/articles/$SGrab_408.png
deleted file mode 100644
index bcd3d83..0000000
--- a/erpnext/docs/assets/img/articles/$SGrab_408.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/$SGrab_422.png b/erpnext/docs/assets/img/articles/$SGrab_422.png
deleted file mode 100644
index e1eabe9..0000000
--- a/erpnext/docs/assets/img/articles/$SGrab_422.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Order Copy.png b/erpnext/docs/assets/img/articles/Order Copy.png
deleted file mode 100644
index 5f7ede8..0000000
--- a/erpnext/docs/assets/img/articles/Order Copy.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Screen Shot 2015-02-10 at 5.32.56 pm.png b/erpnext/docs/assets/img/articles/Screen Shot 2015-02-10 at 5.32.56 pm.png
deleted file mode 100644
index 0b7045b..0000000
--- a/erpnext/docs/assets/img/articles/Screen Shot 2015-02-10 at 5.32.56 pm.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Screen Shot 2015-02-10 at 5.35.44 pm.png b/erpnext/docs/assets/img/articles/Screen Shot 2015-02-10 at 5.35.44 pm.png
deleted file mode 100644
index 59a2351..0000000
--- a/erpnext/docs/assets/img/articles/Screen Shot 2015-02-10 at 5.35.44 pm.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Screen Shot 2015-02-10 at 5.36.23 pm.png b/erpnext/docs/assets/img/articles/Screen Shot 2015-02-10 at 5.36.23 pm.png
deleted file mode 100644
index ea5bd6a..0000000
--- a/erpnext/docs/assets/img/articles/Screen Shot 2015-02-10 at 5.36.23 pm.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_013.png b/erpnext/docs/assets/img/articles/Selection_013.png
deleted file mode 100644
index 0a76617..0000000
--- a/erpnext/docs/assets/img/articles/Selection_013.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_0149d98bf.png b/erpnext/docs/assets/img/articles/Selection_0149d98bf.png
deleted file mode 100644
index 2a2d8fb..0000000
--- a/erpnext/docs/assets/img/articles/Selection_0149d98bf.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_018ef32b6.png b/erpnext/docs/assets/img/articles/Selection_018ef32b6.png
deleted file mode 100644
index 7513648..0000000
--- a/erpnext/docs/assets/img/articles/Selection_018ef32b6.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_019bf0547.png b/erpnext/docs/assets/img/articles/Selection_019bf0547.png
deleted file mode 100644
index 00ffb87..0000000
--- a/erpnext/docs/assets/img/articles/Selection_019bf0547.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_028.png b/erpnext/docs/assets/img/articles/Selection_028.png
deleted file mode 100644
index cbe0d09..0000000
--- a/erpnext/docs/assets/img/articles/Selection_028.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_029.png b/erpnext/docs/assets/img/articles/Selection_029.png
deleted file mode 100644
index adee68d..0000000
--- a/erpnext/docs/assets/img/articles/Selection_029.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_030.png b/erpnext/docs/assets/img/articles/Selection_030.png
deleted file mode 100644
index ce37124..0000000
--- a/erpnext/docs/assets/img/articles/Selection_030.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_043.png b/erpnext/docs/assets/img/articles/Selection_043.png
deleted file mode 100644
index 55c7c91..0000000
--- a/erpnext/docs/assets/img/articles/Selection_043.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_044.png b/erpnext/docs/assets/img/articles/Selection_044.png
deleted file mode 100644
index cbbbd97..0000000
--- a/erpnext/docs/assets/img/articles/Selection_044.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_064.png b/erpnext/docs/assets/img/articles/Selection_064.png
deleted file mode 100644
index 95a0032..0000000
--- a/erpnext/docs/assets/img/articles/Selection_064.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_066.png b/erpnext/docs/assets/img/articles/Selection_066.png
deleted file mode 100644
index 5a48927..0000000
--- a/erpnext/docs/assets/img/articles/Selection_066.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/Selection_069.png b/erpnext/docs/assets/img/articles/Selection_069.png
deleted file mode 100644
index 0e19f82..0000000
--- a/erpnext/docs/assets/img/articles/Selection_069.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/attach-file-1.gif b/erpnext/docs/assets/img/articles/attach-file-1.gif
new file mode 100644
index 0000000..df0f6e4
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/attach-file-1.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/attach-file-2.gif b/erpnext/docs/assets/img/articles/attach-file-2.gif
new file mode 100644
index 0000000..c07e019
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/attach-file-2.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/attach-file-3.gif b/erpnext/docs/assets/img/articles/attach-file-3.gif
new file mode 100644
index 0000000..fdc1095
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/attach-file-3.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/delete-submitted-doc-1.png b/erpnext/docs/assets/img/articles/delete-submitted-doc-1.png
new file mode 100644
index 0000000..d20a9ea
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/delete-submitted-doc-1.png
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/delete-submitted-doc-2.png b/erpnext/docs/assets/img/articles/delete-submitted-doc-2.png
new file mode 100644
index 0000000..e3c9333
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/delete-submitted-doc-2.png
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/delete-submitted-doc-3.gif b/erpnext/docs/assets/img/articles/delete-submitted-doc-3.gif
new file mode 100644
index 0000000..8d7a8e2
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/delete-submitted-doc-3.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/duplicate.gif b/erpnext/docs/assets/img/articles/duplicate.gif
new file mode 100644
index 0000000..5d76b99
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/duplicate.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/email-file-attachment.gif b/erpnext/docs/assets/img/articles/email-file-attachment.gif
new file mode 100644
index 0000000..4b5e35f
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/email-file-attachment.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/links-1.gif b/erpnext/docs/assets/img/articles/links-1.gif
new file mode 100644
index 0000000..a12dcb5
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/links-1.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/links-2.gif b/erpnext/docs/assets/img/articles/links-2.gif
new file mode 100644
index 0000000..2ffa216
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/links-2.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/merge-docs-1.png b/erpnext/docs/assets/img/articles/merge-docs-1.png
new file mode 100644
index 0000000..186fe1b
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/merge-docs-1.png
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/merge-docs-2.gif b/erpnext/docs/assets/img/articles/merge-docs-2.gif
new file mode 100644
index 0000000..3901e02
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/merge-docs-2.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/perm-level-1.gif b/erpnext/docs/assets/img/articles/perm-level-1.gif
new file mode 100644
index 0000000..27d65c7
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/perm-level-1.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/perm-level-2.png b/erpnext/docs/assets/img/articles/perm-level-2.png
new file mode 100644
index 0000000..ecbdfb5
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/perm-level-2.png
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/perm-level-3.png b/erpnext/docs/assets/img/articles/perm-level-3.png
new file mode 100644
index 0000000..3f4eefe
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/perm-level-3.png
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/rename-a-doc.gif b/erpnext/docs/assets/img/articles/rename-a-doc.gif
new file mode 100644
index 0000000..24c4323
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/rename-a-doc.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/rename-account-2.gif b/erpnext/docs/assets/img/articles/rename-account-2.gif
new file mode 100644
index 0000000..412ad98
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/rename-account-2.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/rename-account.png b/erpnext/docs/assets/img/articles/rename-account.png
new file mode 100644
index 0000000..0f2ec52
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/rename-account.png
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/rename-docs-1.png b/erpnext/docs/assets/img/articles/rename-docs-1.png
new file mode 100644
index 0000000..3a41d1e
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/rename-docs-1.png
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/search-filter-auto.gif b/erpnext/docs/assets/img/articles/search-filter-auto.gif
new file mode 100644
index 0000000..5f0256f2
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/search-filter-auto.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/search-filter-based-on.gif b/erpnext/docs/assets/img/articles/search-filter-based-on.gif
new file mode 100644
index 0000000..d2addda
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/search-filter-based-on.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/search-filter-field.gif b/erpnext/docs/assets/img/articles/search-filter-field.gif
new file mode 100644
index 0000000..e9f4a26
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/search-filter-field.gif
Binary files differ
diff --git a/erpnext/docs/assets/img/articles/search-filter-result.png b/erpnext/docs/assets/img/articles/search-filter-result.png
new file mode 100644
index 0000000..2c5d16d
--- /dev/null
+++ b/erpnext/docs/assets/img/articles/search-filter-result.png
Binary files differ
diff --git a/erpnext/docs/user/manual/en/accounts/articles/freeze-accounting-entries.md b/erpnext/docs/user/manual/en/accounts/articles/freeze-accounting-entries.md
index cc2a865..9d5f614 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/freeze-accounting-entries.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/freeze-accounting-entries.md
@@ -16,6 +16,6 @@
<img alt="Frozen Date Error" class="screenshot" src="{{docs_base_url}}/assets/img/articles/frozen-date-2.png">
-You can still allow user with certain role to create/edit entries beyound accounts frozen date. You can set that Role in the Account Settings itself.
+You can still allow user with certain role to create/edit entries within accounts frozen date. You can set that Role in the Account Settings itself.
-<img alt="Frozen Date Error" class="screenshot" src="{{docs_base_url}}/assets/img/articles/frozen-date-3.png">
\ No newline at end of file
+<img alt="Frozen Date Error" class="screenshot" src="{{docs_base_url}}/assets/img/articles/frozen-date-3.png">
diff --git a/erpnext/docs/user/manual/en/accounts/articles/managing-transactions-in-multiple-currency.md b/erpnext/docs/user/manual/en/accounts/articles/managing-transactions-in-multiple-currency.md
index fe69ab5..d89c199 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/managing-transactions-in-multiple-currency.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/managing-transactions-in-multiple-currency.md
@@ -1,6 +1,6 @@
#Managing Transactions In Multiple Currency
-In ERPNext, transactions can be created in the base currency as well as in parties (customer or supplier) currency. In transaction is created in the parties currency, their currency symbol is updated in the print foramt as well.
+In ERPNext, transactions can be created in the base currency as well as in parties (customer or supplier) currency. If transaction is created in the parties currency, their currency symbol is updated in the print format as well.
Let's consider a Sales Invoice, where your base currency is of a Company is USD and party currency is EUR.
@@ -14,7 +14,7 @@
#### Step 3: Exchange Rate
-Currenct Exchange between between base currency and customer currency will auto-fetch.
+Currency Exchange between base currency and customer currency will auto-fetch.
<img alt="Accounts Frozen Date" class="screenshot" src="{{docs_base_url}}/assets/img/articles/multiple-currency-1.gif">
@@ -34,5 +34,5 @@
`Accounts > Setup > Currency Exchange`
- If system find Exchange Rate master for any cuurrecy, it is given preference over currency exchnage rate.
+ If system find Exchange Rate master for any currency, it is given preference over currency exchange rate.
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/en/accounts/tools/period-closing-voucher.md b/erpnext/docs/user/manual/en/accounts/tools/period-closing-voucher.md
index fbec8d1..418ea84 100644
--- a/erpnext/docs/user/manual/en/accounts/tools/period-closing-voucher.md
+++ b/erpnext/docs/user/manual/en/accounts/tools/period-closing-voucher.md
@@ -21,7 +21,7 @@
<img class="screenshot" alt="Period Closing Voucher" src="{{docs_base_url}}/assets/img/accounts/period-closing-voucher.png">
-This voucher will transfer Profit or Loss (availed from P&L statment) to Closing Account Head. You should select a libility account like Reserves and Surplus, or Capital Fund account as Closing Account.
+This voucher will transfer Profit or Loss (availed from P&L statment) to Closing Account Head. You should select a liability account like Reserves and Surplus, or Capital Fund account as Closing Account.
The Period Closing Voucher will make accounting entries (GL Entry) making all your Income and Expense Accounts zero and transferring Profit/Loss balance to the Closing Account.
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/managing-perm-level.md b/erpnext/docs/user/manual/en/setting-up/articles/managing-perm-level.md
index 308a0a7..f79229b 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/managing-perm-level.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/managing-perm-level.md
@@ -2,7 +2,7 @@
In each document, you can group fields by "levels". Each group of field is denoted by a unique number (0, 1, 2, 3 etc.). A separate set of permission rules can be applied to each field group. By default all fields are of level 0.
-Perm Level for a field can be defined in the [Customize Form](docs_base_url}}/user/manual/en/customize-erpnext/customize-form.html).
+Perm Level for a field can be defined in the [Customize Form]({{docs_base_url}}/user/manual/en/customize-erpnext/customize-form.html).
<img alt="Perm Level Field" class="screenshot" src="{{docs_base_url}}/assets/img/articles/perm-level-1.gif">
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/adding-attachments-to-outgoing-messages.md b/erpnext/docs/user/manual/en/using-erpnext/articles/adding-attachments-to-outgoing-messages.md
index 39fe6d1..75ade17 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/adding-attachments-to-outgoing-messages.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/adding-attachments-to-outgoing-messages.md
@@ -1,10 +1,9 @@
#Adding Attachments to Outgoing Messages
-ERPNext has in-built file manage system. Click [here](https://erpnext.com/kb/tools/managing-attachments) to learn more on how attachments are managed in ERPNext.
+ERPNext has in-built file manager. Click [here]({{docs_base_url}}/user/videos/learn/file-manager.html) to learn more on how attachments are managed in ERPNext.
-If you have some files attached in your transaction (say Purchase Order), which needs to be emailed with Purchase Order details. When click on Email option, at the end of the Communication dialog box, you will find all the attachments listed with check-box option. You should check files which needs to be emailed as an attachment to recipient.
+If you have file attached to the document (say Purchase Order), and same file needs to be emailed as attachment, following is how you can achieve it.
-
-
+<img alt="Emailing Attachments" class="screenshot" src="{{docs_base_url}}/assets/img/articles/email-file-attachment.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/adding-file-as-a-attachment.md b/erpnext/docs/user/manual/en/using-erpnext/articles/adding-file-as-a-attachment.md
new file mode 100644
index 0000000..e1c4ebd
--- /dev/null
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/adding-file-as-a-attachment.md
@@ -0,0 +1,36 @@
+#Adding File as a Attachment
+
+ERPNext allows to attach files with documents. User with a read permission on particular document will also be able to access files attached with it.
+
+###Attach New File
+
+There are several ways to attach file to the document.
+
+####From Browser
+
+<img alt="Sales Order File Attachment" class="screenshot" src="{{docs_base_url}}/assets/img/articles/attach-file-1.gif">
+
+####By drag and drop
+
+<img alt="Sales Order File Attachment" class="screenshot" src="{{docs_base_url}}/assets/img/articles/attach-file-2.gif">
+
+Click on Attach to browse and select the file.
+
+####Link
+
+If you use separate server for files, or use online service like Dropbox, you can attach file by providing link of a particular file.
+
+<img alt="Sales Order Select File" class="screenshot" src="{{docs_base_url}}/assets/img/articles/attach-file-3.gif">
+
+`For hosted users, limit of 5 MB is applied on file size.`
+
+To ensure there are not many files attached to a document, which can affect your accounts performance, you can set limit as how many files can be attached to a particular document. Click [here]({{docs_base_url}}/user/manual/en/customize-erpnext/articles/increase-max-attachments.html) to learn more about it.
+
+####File Manager
+
+Check following link to learn how files are managed in ERPNext.
+
+<iframe width="660" height="371" src="https://www.youtube.com/embed/4-osLW3E_Rk" frameborder="0" allowfullscreen></iframe>
+
+
+<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/bulk-rename.md b/erpnext/docs/user/manual/en/using-erpnext/articles/bulk-rename.md
new file mode 100644
index 0000000..3378b2d
--- /dev/null
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/bulk-rename.md
@@ -0,0 +1,25 @@
+#Bulk Rename
+
+Using renaming tool, you can to rectify/change multiple document ids at once. This tool is only accessible to the User who has System Manager role assigned.
+
+###Rename Tool
+
+You can rename ids of upto 500 records at a time. Following are step to bulk rename bulk records. Let's assume we are renaming Item Codes for the existing items.
+
+#### Step 1: Open Excel File
+
+In a spreadsheet file, enter old Item IDs in the first column, and new Item Ids in the second column. Save spreadsheet file in a CSV format.
+
+<img alt="Data File" class="screenshot" src="{{docs_base_url}}/assets/img/articles/rename-docs-1.png">
+
+#### Step 2: Upload Data File
+
+To upload data file go to,
+
+`Setup > Data > Rename Tool`
+
+Select DocType which you want to rename. Here DocType will be Item. Then Browse and Upload data file.
+
+
+
+<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/check-link-between-documents.md b/erpnext/docs/user/manual/en/using-erpnext/articles/check-link-between-documents.md
index 92d5547..76cdeb7 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/check-link-between-documents.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/check-link-between-documents.md
@@ -1,27 +1,23 @@
#Checking Link Between Documents
-Linked With function in ERPNext allows you checking a document is linked with which other documents. You will find Linked With function in the every document.
+Links option shows one document is linked to which other documents. Check Menu for the Links options.
-
+<img alt="Cancel Doc" class="screenshot" src="{{docs_base_url}}/assets/img/articles/links-1.gif">
####Scenario
-If you need to check which Delivery Note and Sales Invoice has been created against Sales Order, you should open Sales Order document, and click on Linked With in it.
-
-
-
-Since Sales Order is a centralize transaction, using linked-with option in the Sales Order, you can track complete deal, like billing done, purchases made, manufacturing development against this particular order.
+If you need that against Sales Order, which Delivery Note and Sales Invoice has been created, you should open Sales Order document, and check Links. Same way, you can also check Purchase Order, and find which Purchase Receipt and Purchase Ivoice is linked with it.
####How It Works?
-When you check Linked With in for a Sales Order, it lists all the record where this Sales Order ID is updated. It will not show documents where this Sales Order Id is entered as text, and not in the link field.
+When you check Links for a Sales Order, it lists all the record where this Sales Order ID is linked. When Delivery Note is created against Sales Order, then Sales Order link is updated in the Delivery Note Item table.
####Backward Links
-If I check Linked With in the Delivery Note, will it list Sales Order created before this delivery note?
+If I check Links in the Purchase Receipt, will it list Purchase Order from which this Purchase Receipt was created?
-Linked With function works only for the forward linkages. For the backward linkages, you should check current document itself. In the Delivery Note, you can check Item table to see which Sales Order it is linked with.
+Links only shows forward linkages. For the backward links, you should check current document itself. In the Purchase Receipt Item table table, you can check which Purchase Order it is linked to.
-
+<img alt="Cancel Doc" class="screenshot" src="{{docs_base_url}}/assets/img/articles/links-2.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/delete-submitted-document.md b/erpnext/docs/user/manual/en/using-erpnext/articles/delete-submitted-document.md
index 1af8f86..8d7700a 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/delete-submitted-document.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/delete-submitted-document.md
@@ -1,27 +1,29 @@
#Delete Submitted Document
-ERPNext allows you to assign deletion permission exclusively to User. Only those users will be able to delete records. Click [here](/user-guide/setting-up/permissions/role-based-permissions) to learn more about permissions.
+To be able to delete Submitted document, you should first Cancel. Once canceled, you can delete that document from Menu or from the List View of that Document Type.
-To delete any document from system you should cancel all linked documents. For example if you need to delete Sales Order, but Delivery Note and Sales Invoice has already been created against that Sales Order. Then you should cancel and delete documents in reverse order, i.e. Sales Invoice, Delivery Note and then Sales Order. If payment entry was also made against Sales Invoice, then you should first Cancel and Delete that Journal Voucher, and then come to Sales Invoice.
+If document which needs to be deleted is also linked to other documents, then you should first Cancel document those document as well. For example if you need to delete Sales Order, but Delivery Note and Sales Invoice has already been created against it. Then you should first cancel and delete documents in reverse order, i.e. Sales Invoice, Delivery Note and then Sales Order.
+
+Delete option is only visible to user having related permission. From Role Permission Manager, you can control and define Delete permission and Role for each Document Type.
Following are step to delete submitted documents.
-####1. Cancel Document
+####Step 1: Cancel Document
-To be able to delete Submitted document, it must be cancelled first. After document is cancelled, you will find option to delete it.
+You will find option to Cancel in the submitted document. If document is at draft stage, it can delete directly. Also if document is not submittable, but only save, it can be deleted directly.
-
+<img alt="Cancel Doc" class="screenshot" src="{{docs_base_url}}/assets/img/articles/delete-submitted-doc-1.png">
-####2. Delete Document
+####Step 2: Delete Document
-After cancellation, go to File menu and click on Delete option.
+After cancellation, go to Menu and click on Delete.
-
+<img alt="Delete Doc" class="screenshot" src="{{docs_base_url}}/assets/img/articles/delete-submitted-doc-2.png">
-#### Deleting from List
+####Step 3: Deleting from List
-For bulk deletion, you can select multiple Cancelled records and delete them at once from the list.
+For bulk deletion, you can select multiple Cancelled records and delete at once from the List View.
-
+<img alt="Delete Doc from List" class="screenshot" src="{{docs_base_url}}/assets/img/articles/delete-submitted-doc-3.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/duplicate-record.md b/erpnext/docs/user/manual/en/using-erpnext/articles/duplicate-record.md
index 0f4e740..69b4ecf 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/duplicate-record.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/duplicate-record.md
@@ -1,17 +1,15 @@
#Duplicate a Record
-ERPNext allows you to duplicate existing record. With this, you get values of existing record into new form, and create entries faster.
+Duplicate feature helps you to copy values of existing document into new document.
####Scenario
-An electronic supplier receives a repeat order from an existing customer. Since new order will have details just like previous order, you can open previous order, and Copy it to create new order faster. On copying, details of the previous transaction will be updated in the new form. You can make changes where needed and submit the transaction.
+An electronic supplier receives a repeat order from an existing customer. Since new order will have details just like previous order, you should open previous order, and Duplciate it to create new order faster. On Duplicating, values of the previous transaction will be updated in a new document. You can make changes where needed and submit the document.
You will find Copy option under:
-File > Copy
+`Menu > Copy`
-
-
-When Copy function is executed, values are mapped field-by-field from existing to new form.
+<img alt="Duplicate" class="screenshot" src="{{docs_base_url}}/assets/img/articles/duplicate.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/index.txt b/erpnext/docs/user/manual/en/using-erpnext/articles/index.txt
index 289753d..4ca21aa 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/index.txt
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/index.txt
@@ -1,11 +1,11 @@
-adding-attachments-to-outgoing-messages
+adding-attachment-to-outgoing-messages
check-link-between-documents
delete-submitted-document
duplicate-record
-managing-attachments
+adding-file-as-a-attachment
merging-documents
-rename-tool
+bulk-rename
renaming-documents
-search-filters
+search-filter
tree-master-renaming
pos-view
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/managing-attachments.md b/erpnext/docs/user/manual/en/using-erpnext/articles/managing-attachments.md
deleted file mode 100644
index 79a1105..0000000
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/managing-attachments.md
+++ /dev/null
@@ -1,20 +0,0 @@
-#Adding Attachments in a Documents
-
-ERPNext allows to attach files with documents like Order, Invoices, Items etc. User with a read permission on particular document will also be able to access files attached with it. For example, Sales Order can have text file attached detailing item description and specification as decided with customers. Also it can be image file of drawing as per which product is to be manufactured.
-
-Open to attach file is at the footer of a form.
-
-
-
-Click on Attach to browse and select the file.
-
-
-
-If you maintain separate server for the files, or use online service like Dropbox, you can provide link of a particular file in the document in ERPNext.
-
-
-
-`For hosted users, limit of 1 MB is applied on file size.`
-
-To ensure there are not many files attached against the document, which can lead to your system slowing down, you can set limit as how many files can be attached against particular document. Click [here](https://erpnext.com/kb/customize/increase-max-attachments) to learn more about it.
-<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/merging-documents.md b/erpnext/docs/user/manual/en/using-erpnext/articles/merging-documents.md
index d4518ea..15dd117 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/merging-documents.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/merging-documents.md
@@ -1,32 +1,31 @@
#Merging Documents
-Document merging feature is available in ERPNext. You can done this via 'Rename' feature in ERPNext.
+For a document, of you have two records which are identical, and meant for common purpose, you can merge them into one record.
-Following are step to merge document in existing document. Let's assume we are merging Account Ledger.
+Following are step to merge documents. Let's assume we are merging two Accounts.
-#### 1: Go to Chart of Account
+#### Step 1: Go to Chart of Account
-`Accounts > Setup > Chart of Accounts`
+`Accounts > Documents > Chart of Accounts`
-#### 2: Go to Account
+#### Step 2: Go to Account
-Click on Rename option of that account, which you want to merge in existing account.
+For an Account to be merge, click on "Rename" option.
-#### 3: Merge Account
+<img alt="Sales Order File Attachment" class="screenshot" src="{{docs_base_url}}/assets/img/articles/merge-docs-1.png">
-Enter existing account name in New Name field and check Mark on "Merge with existing" option. Then press 'Rename' button to merge.
+#### Step 3: Merge Account
-
+In the New Name field, enter another account name with which this account will be merged. Check "Merge with existing" option. Then press 'Rename' button to merge.
Following is how merged account will appear in the Chart of Account master.
-
+<img alt="Sales Order File Attachment" class="screenshot" src="{{docs_base_url}}/assets/img/articles/merge-docs-2.gif">
-###Effect of Merging
+###Effect of Merging
-Merging document affects existing transaction where this record is selected. As well as it will affected on existing document balance.
+After Account is merged, new name is updated in the existing transactions where old account was selected.
-<div class="well"> Note: You can't merge Group into Ledger documents. As well as Ledger into Group documents. Also this feature is applicable for few documents only.</div>
-
+<div class="well"> Note: Group Account cannot be merged into Child Account and vice versa.</div>
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/rename-tool.md b/erpnext/docs/user/manual/en/using-erpnext/articles/rename-tool.md
deleted file mode 100644
index 72e8b4f..0000000
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/rename-tool.md
+++ /dev/null
@@ -1,37 +0,0 @@
-#Rename Tool
-
-ERPNext has Renaming Tool which allows you to rectify/change record id for existing records. This facility can be only performed by User with System Manager's role.
-
-There are two ways you can rename records in your account. You can follow the approach based on how many records needs to be renamed.
-
-###Rename Record via Rename Tool
-
-Using this tool you can correct/rectify primary ids of 500 records at a time.
-
-Following are step to rename bulk records in ERPNext. Let's assume we are renaming Item Codes for existing Items.
-
-#### Step 1: Open Excel File
-
-In new excel file enter old Item Ids in one column and enter new Item Ids in exact next column. Then save data file in .csv format.
-
-
-
-#### Step 2: Upload Data File
-
-To upload data file go to,
-
-`Setup > Data > Rename Tool`
-
-Select DocType which you want to rename. Here DocType will be Item. Then Browse and Upload data file.
-
-
-
-Following are the renamed Item Codes.
-
-
-
-###Rename Individual Document
-
-Click [here](https://erpnext.com/kb/tools/renaming-documents) for detailed steps on how to rename document one by one.
-
-<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/renaming-documents.md b/erpnext/docs/user/manual/en/using-erpnext/articles/renaming-documents.md
index da1945f..a6b6696 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/renaming-documents.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/renaming-documents.md
@@ -1,24 +1,14 @@
-#Renaming Documents
+#Renaming a Document
-ERPNext has Renaming feature which allows you to correct primary id of a record.
-
-Following are step to rename document in ERPNext. Let's assume we are renaming Item Code for existing Item.
+Using Renaming feature, you can change ID of a master documents like Item, Warehouse, Accounts etc. Following are the steps to rename Item Code. Following same steps, you can rename other masters as well.
#### 1. Go to Item
-`Stock > Documents > Item List > (Open Item)`
+`Stock > Documents > Item List > (Open Item to be renamed)`
-Open Item for which Item Code needs to be renamed.
+#### 2. Rename
-#### 2. Go to File
-
-
-
-#### 3. Rename
-
-Enter desired Item Code, and click on "Rename".
-
-
+<img alt="Renamed Item" class="screenshot" src="{{docs_base_url}}/assets/img/articles/rename-a-doc.gif">
###Effect of Renaming
@@ -26,8 +16,8 @@
###See Also
-1. [Bulk Renaming](https://erpnext.com/kb/tools/rename-tool)
-2. [Document Merging](https://erpnext.com/kb/tools/merging-documents)
+1. [Bulk Renaming]({{docs_base_url}}/user/manual/en/using-erpnext/articles/bulk-rename.html)
+2. [Document Merging]({{docs_base_url}}/user/manual/en/using-erpnext/articles/merging-documents.html)
**List of Renamable Documents**
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/search-filter.md b/erpnext/docs/user/manual/en/using-erpnext/articles/search-filter.md
new file mode 100644
index 0000000..8a0a67b
--- /dev/null
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/search-filter.md
@@ -0,0 +1,35 @@
+#Search Filter
+
+Search Filter option allow user to filter records based on value in the specific field of that document. Search Filters are available on the List View of Document Type and in the Report Builder.
+
+Each filter option has three fields.
+
+#### Field
+
+Select field of the document based on which you wish to filter records.
+
+<img alt="Search Filter Field" class="screenshot" src="{{docs_base_url}}/assets/img/articles/search-filter-field.gif">
+
+
+#### Based On
+
+With Field, you will provide a value. In the based on field, you can define a criterion that when filter should be applied in record. It will be when value define for the field if filter is:
+
+<img alt="Search Filter Based On" class="screenshot" src="{{docs_base_url}}/assets/img/articles/search-filter-based-on.gif">
+
+#### Value
+
+A value should be entered in this field based on while records will be filtered. After filter is applied, records will be filtered based on it. And filter will shrunk under one field/button.
+
+<img alt="Search Filter Based On" class="screenshot" src="{{docs_base_url}}/assets/img/articles/search-filter-result.png">
+
+
+You can apply multiple filters at a time. To remove specific filter, just click on cancelled (X) sign ahead of it.
+
+#### Ready Filters
+
+From the list views, you can also apply filters by clicking on the Status field.
+
+<img alt="Renamed Item" class="screenshot" src="{{docs_base_url}}/assets/img/articles/search-filter-auto.gif">
+
+<!-- markdown -->
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/search-filters.md b/erpnext/docs/user/manual/en/using-erpnext/articles/search-filters.md
deleted file mode 100644
index 73dbcfb..0000000
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/search-filters.md
+++ /dev/null
@@ -1,39 +0,0 @@
-#Search Filters
-
-Search Filter option allows user to filter records based on value in the specific fields of that form.
-
-Search Filter option is available on the List View page of transactions.
-
-
-
-Each filter option has three fields to select value in.
-
-#### Field
-
-Select field of the form based on which you wish to filter records.
-
-
-
-#### Based On
-
-With Field, you will provide a value. In the based on field, you can define a criterion that when filter should be applied in record. It will be when value define for the field if filter is:
-
-
-
-#### Value
-
-A value should be entered in this field based on while records will be filtered.
-
-
-
-After filter is applied, records will be filtered based on it. And filter will shrunk under one field/button.
-
-
-
-On the transactions, Document Status - Not Equal To - Cancelled is applied by default. With this, Cancelled transactions are hidden from the list.
-
-
-
-You can apply multiple filters on a list of transactions one-by-one. To remove specific filter, just click on cancelled (X) sign ahead of it.
-
-<!-- markdown -->
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/tree-master-renaming.md b/erpnext/docs/user/manual/en/using-erpnext/articles/tree-master-renaming.md
index af812c3..44d4e97 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/tree-master-renaming.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/tree-master-renaming.md
@@ -1,29 +1,23 @@
#Tree Master Renaming
-There are various master which are maintained in tree structure. Click [here](https://erpnext.com/kb/setup/managing-tree-structure-masters) to learn more about tree structured masters in ERPNext.
+There are various master which are maintained in tree structure. Click [here]({{docs_base_url}}/user/manual/en/setting-up/articles/managing-tree-structure-masters.html) to learn more about tree structured masters in ERPNext.
-Following are the steps to be followed for renaming Account/Ledger ID, master which is maintained in tree structure. These steps will be applicable for renaming any master which is maintained in tree structure.
+Following are the steps to be followed for renaming ID of a master which is maintained in tree structure. Let's rename an Account for the instance.
#### Step 1: Go to Chart of Account
`Accounts > Setup > Chart of Accounts`
-#### Step 2: Go to Account
+#### Step 2: Go to Account
-Expand Chart of Accounts and click on that account which you want to rename. When you click on that account, you will find Rename option.
+When click on the Account, you will find Rename option.
-
+<img alt="Account" class="screenshot" src="{{docs_base_url}}/assets/img/articles/rename-account.png">
#### Step 2: Rename Account
-On clicking Rename option, dialog box will give you field to enter New Name for this Account. You should enter new name for the Account/Ledger and click on "Rename" button. On clicking Rename button, existing account will be renamed.
+On clicking Rename, you will get field to enter New Name. After entering new name for the Account, click on the "Rename" button.
-
-
-Following is how renamed account will appear in the Chart of Account master.
-
-
-
-
+<img alt="Renamed Account" class="screenshot" src="{{docs_base_url}}/assets/img/articles/rename-account-2.gif">
<!-- markdown -->
\ No newline at end of file
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.
+
+
+
+__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.
+
+
+
+__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.
+
+
+
+__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.
+
+
+
+### 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:
+
+
+
+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 5645981..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.0"
+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/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index 349c778..24a21d9 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -9,6 +9,10 @@
from operator import itemgetter
+form_grid_templates = {
+ "items": "templates/form_grid/item_grid.html"
+}
+
class BOM(Document):
def autoname(self):
last_name = frappe.db.sql("""select max(name) from `tabBOM`
diff --git a/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py b/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py
index 302513f..d4d5329 100644
--- a/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py
+++ b/erpnext/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py
@@ -23,6 +23,10 @@
def validate_bom(self):
if cstr(self.current_bom) == cstr(self.new_bom):
frappe.throw(_("Current BOM and New BOM can not be same"))
+
+ if frappe.db.get_value("BOM", self.current_bom, "item") \
+ != frappe.db.get_value("BOM", self.new_bom, "item"):
+ frappe.throw(_("The selected BOMs are not for the same item"))
def update_new_bom(self):
current_bom_unitcost = frappe.db.sql("""select total_cost/quantity
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 76bffc2..1ecd440 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -246,6 +246,7 @@
erpnext.patches.v6_16.create_manufacturer_records
execute:frappe.db.sql("update `tabPricing Rule` set title=name where title='' or title is null") #2016-01-27
erpnext.patches.v6_20.set_party_account_currency_in_orders
-#erpnext.patches.v6_19.comment_feed_communication
+erpnext.patches.v6_19.comment_feed_communication
erpnext.patches.v6_21.fix_reorder_level
erpnext.patches.v6_21.rename_material_request_fields
+erpnext.patches.v6_23.update_stopped_status_to_closed
\ No newline at end of file
diff --git a/erpnext/patches/v6_23/__init__.py b/erpnext/patches/v6_23/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/patches/v6_23/__init__.py
diff --git a/erpnext/patches/v6_23/update_stopped_status_to_closed.py b/erpnext/patches/v6_23/update_stopped_status_to_closed.py
new file mode 100644
index 0000000..79d1e0a
--- /dev/null
+++ b/erpnext/patches/v6_23/update_stopped_status_to_closed.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+ for dt in ("Sales Order", "Purchase Order"):
+ frappe.db.sql("update `tab{0}` set status='Closed' where status='Stopped'".format(dt))
\ 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 6763209..b2a855d 100644
--- a/erpnext/projects/doctype/time_log/time_log.py
+++ b/erpnext/projects/doctype/time_log/time_log.py
@@ -88,10 +88,9 @@
existing = frappe.db.sql("""select name, from_time, to_time from `tabTime Log`
where `{0}`=%(val)s and
(
- (from_time > %(from_time)s and from_time < %(to_time)s) or
- (to_time > %(from_time)s and to_time < %(to_time)s) or
- (%(from_time)s > from_time and %(from_time)s < to_time) or
- (%(from_time)s = from_time and %(to_time)s = to_time))
+ (%(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/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js
index 9c6cd03..b2693b9 100644
--- a/erpnext/public/js/setup_wizard.js
+++ b/erpnext/public/js/setup_wizard.js
@@ -9,43 +9,8 @@
function load_erpnext_slides() {
$.extend(erpnext.wiz, {
- user: {
- title: __("The First User: You"),
- icon: "icon-user",
- fields: [
- {"fieldname": "first_name", "label": __("First Name"), "fieldtype": "Data",
- reqd:1},
- {"fieldname": "last_name", "label": __("Last Name"), "fieldtype": "Data"},
- {"fieldname": "email", "label": __("Email Address"), "fieldtype": "Data",
- reqd:1, "description": __("You will use it to Login"), "options":"Email"},
- {"fieldname": "password", "label": __("Password"), "fieldtype": "Password",
- reqd:1},
- {fieldtype:"Attach Image", fieldname:"attach_user",
- label: __("Attach Your Picture"), is_private: 0},
- ],
- help: __('The first user will become the System Manager (you can change this later).'),
- onload: function(slide) {
- if(user!=="Administrator") {
- slide.form.fields_dict.password.$wrapper.toggle(false);
- slide.form.fields_dict.email.$wrapper.toggle(false);
- slide.form.fields_dict.first_name.set_input(frappe.boot.user.first_name);
- slide.form.fields_dict.last_name.set_input(frappe.boot.user.last_name);
-
- var user_image = frappe.get_cookie("user_image");
- if(user_image) {
- var $attach_user = slide.form.fields_dict.attach_user.$wrapper;
- $attach_user.find(".missing-image").toggle(false);
- $attach_user.find("img").attr("src", decodeURIComponent(user_image)).toggle(true);
- }
-
- delete slide.form.fields_dict.email;
- delete slide.form.fields_dict.password;
- }
- },
- css_class: "single-column"
- },
-
org: {
+ app_name: "erpnext",
title: __("The Organization"),
icon: "icon-building",
fields: [
@@ -160,6 +125,7 @@
},
branding: {
+ app_name: "erpnext",
icon: "icon-bookmark",
title: __("The Brand"),
help: __('Upload your letter head and logo. (you can edit them later).'),
@@ -181,10 +147,11 @@
},
users: {
+ app_name: "erpnext",
icon: "icon-money",
- "title": __("Add Users"),
- "help": __("Add users to your organization, other than yourself"),
- "fields": [],
+ title: __("Add Users"),
+ help: __("Add users to your organization, other than yourself"),
+ fields: [],
before_load: function(slide) {
slide.fields = [];
for(var i=1; i<5; i++) {
@@ -209,9 +176,10 @@
},
taxes: {
+ app_name: "erpnext",
icon: "icon-money",
- "title": __("Add Taxes"),
- "help": __("List your tax heads (e.g. VAT, Customs etc; they should have unique names) and their standard rates. This will create a standard template, which you can edit and add more later."),
+ title: __("Add Taxes"),
+ help: __("List your tax heads (e.g. VAT, Customs etc; they should have unique names) and their standard rates. This will create a standard template, which you can edit and add more later."),
"fields": [],
before_load: function(slide) {
slide.fields = [];
@@ -229,10 +197,11 @@
},
customers: {
+ app_name: "erpnext",
icon: "icon-group",
- "title": __("Your Customers"),
- "help": __("List a few of your customers. They could be organizations or individuals."),
- "fields": [],
+ title: __("Your Customers"),
+ help: __("List a few of your customers. They could be organizations or individuals."),
+ fields: [],
before_load: function(slide) {
slide.fields = [];
for(var i=1; i<6; i++) {
@@ -251,10 +220,11 @@
},
suppliers: {
+ app_name: "erpnext",
icon: "icon-group",
- "title": __("Your Suppliers"),
- "help": __("List a few of your suppliers. They could be organizations or individuals."),
- "fields": [],
+ title: __("Your Suppliers"),
+ help: __("List a few of your suppliers. They could be organizations or individuals."),
+ fields: [],
before_load: function(slide) {
slide.fields = [];
for(var i=1; i<6; i++) {
@@ -273,10 +243,11 @@
},
items: {
+ app_name: "erpnext",
icon: "icon-barcode",
- "title": __("Your Products or Services"),
- "help": __("List your products or services that you buy or sell. Make sure to check the Item Group, Unit of Measure and other properties when you start."),
- "fields": [],
+ title: __("Your Products or Services"),
+ help: __("List your products or services that you buy or sell. Make sure to check the Item Group, Unit of Measure and other properties when you start."),
+ fields: [],
before_load: function(slide) {
slide.fields = [];
for(var i=1; i<6; i++) {
@@ -336,7 +307,6 @@
frappe.wiz.on("before_load", function() {
load_erpnext_slides();
- frappe.wiz.add_slide(erpnext.wiz.user);
frappe.wiz.add_slide(erpnext.wiz.org);
frappe.wiz.add_slide(erpnext.wiz.branding);
frappe.wiz.add_slide(erpnext.wiz.users);
diff --git a/erpnext/selling/doctype/quotation_item/quotation_item.json b/erpnext/selling/doctype/quotation_item/quotation_item.json
index e3745da..b58568f 100644
--- a/erpnext/selling/doctype/quotation_item/quotation_item.json
+++ b/erpnext/selling/doctype/quotation_item/quotation_item.json
@@ -724,11 +724,12 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 1,
- "collapsible_depends_on": "eval:doc.actual_qty",
+ "collapsible_depends_on": "eval:doc.warehouse",
"fieldname": "item_balance",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Item Balance",
@@ -753,6 +754,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Warehouse",
@@ -778,6 +780,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -797,11 +800,37 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "fieldname": "projected_qty",
+ "fieldtype": "Float",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Projected Qty",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 1,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "report_hide": 1,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
"description": "",
"fieldname": "actual_qty",
"fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Actual Qty",
@@ -826,6 +855,7 @@
"fieldtype": "Button",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Stock Balance",
@@ -1067,7 +1097,7 @@
"istable": 1,
"max_attachments": 0,
"menu_index": 0,
- "modified": "2016-02-23 18:12:49.939175",
+ "modified": "2016-02-26 18:30:22.286356",
"modified_by": "Administrator",
"module": "Selling",
"name": "Quotation Item",
diff --git a/erpnext/selling/page/sales_funnel/sales_funnel.py b/erpnext/selling/page/sales_funnel/sales_funnel.py
index eb3b996..4d12efd 100644
--- a/erpnext/selling/page/sales_funnel/sales_funnel.py
+++ b/erpnext/selling/page/sales_funnel/sales_funnel.py
@@ -17,7 +17,7 @@
and status != "Passive" """, (from_date, to_date))[0][0]
opportunities = frappe.db.sql("""select count(*) from `tabOpportunity`
- where docstatus = 1 and (date(`creation`) between %s and %s)
+ where (date(`creation`) between %s and %s)
and status != "Lost" """, (from_date, to_date))[0][0]
quotations = frappe.db.sql("""select count(*) from `tabQuotation`
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index ed7da9c..7669bff 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -16,7 +16,8 @@
website = frappe._dict(
condition_field = "show_in_website",
template = "templates/generators/item_group.html",
- parent_website_route_field = "parent_item_group"
+ parent_website_route_field = "parent_item_group",
+ no_cache = 1
)
def autoname(self):
@@ -52,8 +53,11 @@
frappe.throw(frappe._("An item exists with same name ({0}), please change the item group name or rename the item").format(self.name))
def get_context(self, context):
+ start = int(frappe.form_dict.start or 0)
+ if start < 0:
+ start = 0
context.update({
- "items": get_product_list_for_group(product_group = self.name, limit=100),
+ "items": get_product_list_for_group(product_group = self.name, start=start, limit=24),
"parent_groups": get_parent_item_groups(self.name),
"title": self.name
})
@@ -63,6 +67,7 @@
return context
+@frappe.whitelist(allow_guest=True)
def get_product_list_for_group(product_group=None, start=0, limit=10):
child_groups = ", ".join(['"' + i[0] + '"' for i in get_child_groups(product_group)])
@@ -122,4 +127,4 @@
d = frappe.get_doc("Item Group", d.name)
route = d.get_route()
if route:
- clear_cache(route)
+ clear_cache(route)
\ No newline at end of file
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index b4e19da..d218793 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -12,7 +12,7 @@
frappe.get_doc({'doctype': "Role", "role_name": "Analytics"}).insert()
set_single_defaults()
feature_setup()
- from erpnext.setup.setup_wizard.setup_wizard import add_all_roles_to
+ from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to
add_all_roles_to("Administrator")
add_web_forms()
frappe.db.commit()
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index 890f317..5a04682 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -19,8 +19,7 @@
frappe.throw(_("Setup Already Complete!!"))
install_fixtures.install(args.get("country"))
-
- update_user_name(args)
+
create_fiscal_year_and_company(args)
create_users(args)
set_defaults(args)
@@ -54,67 +53,32 @@
pass
-
-def update_user_name(args):
- if args.get("email"):
- args['name'] = args.get("email")
-
- _mute_emails, frappe.flags.mute_emails = frappe.flags.mute_emails, True
- doc = frappe.get_doc({
- "doctype":"User",
- "email": args.get("email"),
- "first_name": args.get("first_name"),
- "last_name": args.get("last_name")
- })
- doc.flags.no_welcome_mail = True
- doc.insert()
- frappe.flags.mute_emails = _mute_emails
- from frappe.auth import _update_password
- _update_password(args.get("email"), args.get("password"))
-
- else:
- args['name'] = frappe.session.user
-
- # Update User
- if not args.get('last_name') or args.get('last_name')=='None':
- args['last_name'] = None
- frappe.db.sql("""update `tabUser` SET first_name=%(first_name)s,
- last_name=%(last_name)s WHERE name=%(name)s""", args)
-
- if args.get("attach_user"):
- attach_user = args.get("attach_user").split(",")
- if len(attach_user)==3:
- filename, filetype, content = attach_user
- fileurl = save_file(filename, content, "User", args.get("name"), decode=True).file_url
- frappe.db.set_value("User", args.get("name"), "user_image", fileurl)
-
- add_all_roles_to(args.get("name"))
-
def create_fiscal_year_and_company(args):
- curr_fiscal_year = get_fy_details(args.get('fy_start_date'), args.get('fy_end_date'))
- frappe.get_doc({
+ if (args.get('fy_start_date')):
+ curr_fiscal_year = get_fy_details(args.get('fy_start_date'), args.get('fy_end_date'))
+ frappe.get_doc({
"doctype":"Fiscal Year",
'year': curr_fiscal_year,
'year_start_date': args.get('fy_start_date'),
'year_end_date': args.get('fy_end_date'),
- }).insert()
-
+ }).insert()
+ args["curr_fiscal_year"] = curr_fiscal_year
+
# Company
- frappe.get_doc({
- "doctype":"Company",
- 'domain': args.get("industry"),
- 'company_name':args.get('company_name').strip(),
- 'abbr':args.get('company_abbr'),
- 'default_currency':args.get('currency'),
- 'country': args.get('country'),
- 'chart_of_accounts': args.get(('chart_of_accounts')),
- }).insert()
+ if (args.get('company_name')):
+ frappe.get_doc({
+ "doctype":"Company",
+ 'domain': args.get("industry"),
+ 'company_name':args.get('company_name').strip(),
+ 'abbr':args.get('company_abbr'),
+ 'default_currency':args.get('currency'),
+ 'country': args.get('country'),
+ 'chart_of_accounts': args.get(('chart_of_accounts')),
+ }).insert()
- # Bank Account
- create_bank_account(args)
-
- args["curr_fiscal_year"] = curr_fiscal_year
-
+ # Bank Account
+ create_bank_account(args)
+
def create_bank_account(args):
if args.get("bank_account"):
company_name = args.get('company_name').strip()
@@ -440,14 +404,6 @@
frappe.db.set_value("Website Settings", "Website Settings", "brand_html",
"<img src='{0}' style='max-width: 40px; max-height: 25px;'> {1}".format(fileurl, args.get("company_name").strip()))
-def add_all_roles_to(name):
- user = frappe.get_doc("User", name)
- for role in frappe.db.sql("""select name from tabRole"""):
- if role[0] not in ["Administrator", "Guest", "All", "Customer", "Supplier", "Partner", "Employee"]:
- d = user.append("user_roles")
- d.role = role[0]
- user.save()
-
def create_territories():
"""create two default territories, one for home country and one named Rest of the World"""
from frappe.utils.nestedset import get_root_of
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/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 6860486..e972868 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -168,7 +168,8 @@
})
# if default specified in item is for another company, fetch from company
- for d in [["Account", "income_account", "default_income_account"], ["Account", "expense_account", "default_expense_account"],
+ for d in [["Account", "income_account", "default_income_account"],
+ ["Account", "expense_account", "default_expense_account"],
["Cost Center", "cost_center", "cost_center"], ["Warehouse", "warehouse", ""]]:
company = frappe.db.get_value(d[0], out.get(d[1]), "company")
if not out[d[1]] or (company and args.company != company):
diff --git a/erpnext/templates/generators/item_group.html b/erpnext/templates/generators/item_group.html
index eb1278c..7e68bc7 100644
--- a/erpnext/templates/generators/item_group.html
+++ b/erpnext/templates/generators/item_group.html
@@ -25,9 +25,14 @@
{{ item }}
{% endfor %}
</div>
- {% if (items|length)==100 %}
- <div class="text-muted info">Showing top 100 items.</div>
- {% endif %}
+ <div class="text-center">
+ {% if frappe.form_dict.start|int > 0 %}
+ <a class="btn btn-default" href="{{ pathname }}?start={{ frappe.form_dict.start|int - 24 }}">Prev</a>
+ {% endif %}
+ {% if items|length == 24 %}
+ <a class="btn btn-default" href="{{ pathname }}?start={{ frappe.form_dict.start|int + 24 }}">Next</a>
+ {% endif %}
+ </div>
{% else %}
<div class="text-muted">No items listed.</div>
{% endif %}
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 cfbc311..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.0"
+version = "6.23.7"
requirements = parse_requirements("requirements.txt", session="")
setup(