diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 608e6b75b6d..1c187fa01c4 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -5,7 +5,7 @@ import frappe from erpnext.hooks import regional_overrides from frappe.utils import getdate -__version__ = '11.1.21' +__version__ = '11.1.22' def get_default_company(user=None): '''Get default company for user''' diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04.json index e29ad827bf5..7fa67081341 100644 --- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04.json +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04.json @@ -1,6 +1,6 @@ { "country_code": "de", - "name": "Germany - Kontenplan SKR04", + "name": "SKR04 ohne Kontonummern", "tree": { "Bilanz - Aktiva": { "Anlageverm\u00f6gen": { @@ -1383,8 +1383,7 @@ "Sonstige Zinsen und \u00e4hnliche Ertr\u00e4ge 1": { "Diskontertr\u00e4ge": {}, "Diskontertr\u00e4ge aus verbundenen Unternehmen": {}, - "Laufende Ertr\u00e4ge aus Anteilen an Kapitalgesellschaften 100% / 50% steuerfrei": {}, - "Laufende Ertr\u00e4ge aus Anteilen an Kapitalgesellschaften 100% / 50% steuerfrei": {}, + "Laufende Ertr\u00e4ge aus Anteilen an Kapitalgesellschaften 100% / 50% steuerfrei": {}, "Sonstige Zinsen und \u00e4hnliche Ertr\u00e4ge 2": {}, "Sonstige Zinsen und \u00e4hnliche Ertr\u00e4ge aus verbundenen Unternehmen": {}, "Sonstige Zinsertr\u00e4ge": {}, @@ -1703,4 +1702,4 @@ "root_type": "Asset" } } -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json new file mode 100644 index 00000000000..b042bcc4204 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json @@ -0,0 +1,3626 @@ +{ + "country_code": "de", + "name": "SKR04 mit Kontonummern", + "tree": { + "Aktiva": { + "root_type": "Asset", + "A - Anlageverm\u00f6gen": { + "account_type": "Fixed Asset", + "is_group": 1, + "I - Immaterielle VG": { + "is_group": 1, + "1 - Selbst geschaffene gewerbliche Schutzrechte und \u00e4hnliche Rechte und Werte": { + "is_group": 1 + }, + "2 - entgeltlich erworbene Konzessionen, gewerbl. Schutzrechte und \u00e4hnl. Rechte und Werte sowie Lizenzen an solchen": { + "is_group": 1, + "Entgeltlich erworbene Konzessionen, gewerbl. Schutzrechte und \u00e4hnl. Rechte und Werte sowie Lizenzen an solchen": { + "account_number": "0100" + }, + "Konzessionen ": { + "account_number": "0110" + }, + "Gewerbliche Schutzrechte ": { + "account_number": "0120" + }, + "\u00c4hnliche Rechte und Werte": { + "account_number": "0130" + }, + "EDV-Software": { + "account_number": "0135" + }, + "Lizenzen an gewerblichen Schutzrechten und \u00e4hnl. Rechten und Werten": { + "account_number": "0140" + }, + "Selbst geschaffene immaterielle VG": { + "account_number": "0143", + "account_type": "Fixed Asset" + }, + "Lizenzen und Franchisevertr\u00e4ge": { + "account_number": "0145" + }, + "Konzessionen und gewerbliche Schutzrechte": { + "account_number": "0146" + }, + "Rezepte, Verfahren, Prototypen": { + "account_number": "0147" + }, + "Immaterielle VG in Entwicklung": { + "account_number": "0148" + }, + "Geleistete Anz. auf immaterielle VG": { + "account_number": "0170" + } + }, + "3 - Gesch\u00e4fts- oder Firmenwert": { + "is_group": 1, + "Gesch\u00e4fts- oder Firmenwert ": { + "account_number": "0150" + }, + "Anz. auf Gesch\u00e4fts- oder Firmenwert": { + "account_number": "0179" + } + }, + "4 - geleistete Anz.": { + "is_group": 1, + "Geleistete Anz. auf Vorr\u00e4te": { + "account_number": "1180" + }, + "Geleistete Anz., 7 % Vorsteuer": { + "account_number": "1181" + }, + "Geleistete Anz., 16 % Vorsteuer": { + "account_number": "1184" + }, + "Geleistete Anz., 15 % Vorsteuer": { + "account_number": "1185" + }, + "Geleistete Anz., 19 % Vorsteuer": { + "account_number": "1186" + } + } + }, + "II - Sachanlagen": { + "1 - Grundst\u00fccke, grundst\u00fccksgleiche Rechte und Bauten einschl. der Bauten auf fremden Grundst\u00fccken": { + "is_group": 1, + "Grundst\u00fccke, grundst\u00fccksgleiche Rechte und Bauten einschl. der Bauten auf fremden Grundst\u00fccken": { + "account_number": "0200", + "account_type": "Fixed Asset" + }, + "Grundst\u00fccksgleiche Rechte ohne Bauten": { + "account_number": "0210" + }, + "Unbebaute Grundst\u00fccke": { + "account_number": "0215" + }, + "Grundst\u00fccksgleiche Rechte (Erbbaurecht, Dauerwohnrecht)": { + "account_number": "0220" + }, + "Grundst\u00fccke mit Substanzverzehr": { + "account_number": "0225" + }, + "Grundst\u00fccksanteil h\u00e4usliches Arbeitszimmer": { + "account_number": "0229" + }, + "Bauten auf eigenen Grundst\u00fccken und grundst\u00fccksgleichen Rechten": { + "account_number": "0230" + }, + "Grundst\u00fcckswerte eigener bebauter Grundst\u00fccke": { + "account_number": "0235" + }, + "Gesch\u00e4ftsbauten": { + "account_number": "0240" + }, + "Fabrikbauten ": { + "account_number": "0250" + }, + "Andere Bauten": { + "account_number": "0260" + }, + "Garagen": { + "account_number": "0270" + }, + "Au\u00dfenanlagen f. Gesch\u00e4fts-, Fabrik- und andere Bauten": { + "account_number": "0280" + }, + "Hof- und Wegebefestigungen": { + "account_number": "0285" + }, + "Einrichtungen f. Gesch\u00e4fts-, Fabrik- und andere Bauten": { + "account_number": "0290" + }, + "Wohnbauten ": { + "account_number": "0300" + }, + "Au\u00dfenanlagen ": { + "account_number": "0310" + }, + "Einrichtungen f. Wohnbauten ": { + "account_number": "0320" + }, + "Geb\u00e4udeanteil h\u00e4usliches Arbeitszimmer": { + "account_number": "0329" + }, + "Bauten auf fremden Grundst\u00fccken": { + "account_number": "0330" + }, + "Einrichtungen f. Gesch\u00e4fts-, Fabrik-, Wohn- und andere Bauten": { + "account_number": "0398" + } + }, + "2 - technische Anlagen und Maschinen": { + "is_group": 1, + "Technische Anlagen und Maschinen": { + "account_number": "0400", + "account_type": "Fixed Asset" + }, + "Technische Anlagen": { + "account_number": "0420" + }, + "Maschinen": { + "account_number": "0440" + }, + "Transportanlagen und \u00c4hnliches ": { + "account_number": "0450" + }, + "Betriebsvorrichtungen": { + "account_number": "0470" + }, + "Wertberichtigung Technische Anlagen und Maschinen": { + "account_number": "0409", + "account_type": "Accumulated Depreciation" + } + }, + "3 - andere Anlagen, Betriebs- und Gesch\u00e4ftsausstattung": { + "is_group": 1, + "Andere Anlagen, Betriebs- und Gesch\u00e4ftsausstattung": { + "account_number": "0500", + "account_type": "Fixed Asset" + }, + "Andere Anlagen": { + "account_number": "0510" + }, + "Pkw": { + "account_number": "0520" + }, + "Lkw": { + "account_number": "0540" + }, + "Sonstige Transportmittel": { + "account_number": "0560" + }, + "Werkzeuge": { + "account_number": "0620" + }, + "Betriebsausstattung": { + "account_number": "0630" + }, + "Gesch\u00e4ftsausstattung": { + "account_number": "0635" + }, + "Ladeneinrichtung": { + "account_number": "0640" + }, + "B\u00fcroeinrichtung": { + "account_number": "0650" + }, + "Ger\u00fcst- und Schalungsmaterial": { + "account_number": "0660" + }, + "Geringwertige Wirtschaftsg\u00fcter": { + "account_number": "0670" + }, + "Wirtschaftsg\u00fcter gr\u00f6\u00dfer 150 bis 1000 Euro (Sammelposten)": { + "account_number": "0675" + }, + "Einbauten in fremde Grundst\u00fccke": { + "account_number": "0680" + }, + "Sonstige Betriebs- und Gesch\u00e4ftsausstattung": { + "account_number": "0690" + } + }, + "4 - geleistete Anz. und Anlagen im Bau": { + "is_group": 1, + "Geleistete Anz. und Anlagen im Bau": { + "account_number": "0700", + "account_type": "Capital Work in Progress" + }, + "Anz. auf Grundst\u00fcckeund grundst\u00fccksgleiche Rechte ohne Bauten ": { + "account_number": "0705" + }, + "Gesch\u00e4fts-, Fabrik- und andere Bauten im Bau auf eigenen Grundst\u00fccken": { + "account_number": "0710" + }, + "Anz. auf Gesch\u00e4fts-, Fabrik- und andere Bauten auf eigenen Grundst. und grundst\u00fccksgleichen Rechten ": { + "account_number": "0720" + }, + "Wohnbauten im Bau": { + "account_number": "0725" + }, + "Anz. auf Wohnbauten auf eigenen Grundst\u00fccken und grundst\u00fccksgleichen Rechten": { + "account_number": "0735" + }, + "Gesch\u00e4fts-, Fabrik- und andere Bauten im Bau auf fremden Grundst\u00fccken": { + "account_number": "0740" + }, + "Anz. auf Gesch\u00e4fts-, Fabrik- und andere Bauten auf fremden Grundst\u00fccken ": { + "account_number": "0750" + }, + "Anz. auf Wohnbauten auf fremden Grundst\u00fccken": { + "account_number": "0765" + }, + "Technische Anlagen und Maschinen im Bau": { + "account_number": "0770" + }, + "Anz. auf technische Anlagen und Maschinen": { + "account_number": "0780" + }, + "Andere Anlagen, Betriebs- und Gesch\u00e4ftsausstattung im Bau": { + "account_number": "0785" + }, + "Andere Anlagen, Betriebs- und Gesch\u00e4ftsausstattung": { + "account_number": "0795" + } + }, + "is_group": 1 + }, + "III - Finanzanlagen": { + "1 - Anteile an verbundenen Unternehmen": { + "is_group": 1, + "Anteile an verbundenen Unternehmen": { + "account_number": "0800" + }, + "Anteile an verbundenen Unternehmen, Personengesellschaften": { + "account_number": "0803" + }, + "Anteile an verbundenen Unternehmen, Kapitalgesellschaften": { + "account_number": "0804" + }, + "Anteile an herrschender oder mehrheitlich beteiligter Gesellschaft, Personengesellschaft": { + "account_number": "0805" + }, + "Anteile an herrschender oder mehrheitlich beteiligter Gesellschaft, Kapitalgesellschaften": { + "account_number": "0808" + }, + "Anteile an herrschender oder mit Mehrheit beteiligter Gesellschaft": { + "account_number": "0809" + } + }, + "2 - Ausleihungen an verb. Unternehmen": { + "is_group": 1, + "Ausleihungen an verb. Unternehmen": { + "account_number": "0880" + }, + "Ausleihungen an Unternehmen, mit denen ein Beteiligungsverh. besteht, Personengesellschaften": { + "account_number": "0883" + }, + "Ausleihungen an Unternehmen, mit denen ein Beteiligungsverh. besteht, Kapitalgesellschaften": { + "account_number": "0885" + } + }, + "3 - Beteiligungen": { + "is_group": 1, + "Beteiligungen": { + "account_number": "0820" + }, + "Typisch stille Beteiligungen": { + "account_number": "0830" + }, + "Atypisch stille Beteiligungen": { + "account_number": "0840" + }, + "Beteiligungen an Kapitalgesellschaften": { + "account_number": "0850" + }, + "Beteiligungen an Personengesellschaften": { + "account_number": "0860" + } + }, + "4 - Ausleihungen an Unternehmen, mit denen ein Beteiligungsverh. besteht": { + "is_group": 1 + }, + "5 - Wertpapiere des Anlageverm\u00f6gens": { + "is_group": 1, + "Wertpapiere des Anlageverm\u00f6gens": { + "account_number": "0900" + }, + "Wertpapiere mit Gewinnbeteiligungsanspr\u00fcchen, die dem Teileink\u00fcnfteverfahren unterliegen": { + "account_number": "0910" + }, + "Festverzinsliche Wertpapiere": { + "account_number": "0920" + }, + "Genossenschaftsanteile zum langfristigen Verbleib": { + "account_number": "0980" + }, + "R\u00fcckdeckungsanspr\u00fcche aus Lebensversicherungen zum langfristigen Verbleib": { + "account_number": "0990" + } + }, + "6 - sonstige Ausleihungen": { + "is_group": 1, + "Sonstige Ausleihungen": { + "account_number": "0930" + }, + "Darlehen": { + "account_number": "0940" + }, + "Ausleihungen an stille Gesellschafter": { + "account_number": "0964" + } + }, + "is_group": 1 + } + }, + "B - Umlaufverm\u00f6gen": { + "I - Vorr\u00e4te": { + "1 - Roh-, Hilfs- und Betriebsstoffe": { + "is_group": 1, + "Roh-, Hilfs- und Betriebsstoffe (Bestand)": { + "account_number": "1000", + "account_type": "Stock" + } + }, + "2 - unfertige Erzeugnisse, unfertige Leistungen": { + "is_group": 1, + "Unfertige Erzeugnisse, unfertige Leistungen (Bestand)": { + "account_number": "1040", + "account_type": "Stock" + }, + "Unfertige Erzeugnisse (Bestand)": { + "account_number": "1050" + }, + "Unfertige Leistungen": { + "account_number": "1080" + }, + "In Ausf\u00fchrung befindliche Bauauftr\u00e4ge": { + "account_number": "1090" + }, + "In Arbeit befindliche Auftr\u00e4ge": { + "account_number": "1095" + } + }, + "3 - fertige Erzeugnisse und Waren": { + "is_group": 1, + "Fertige Erzeugnisse und Waren (Bestand)": { + "account_number": "1100", + "account_type": "Stock" + }, + "Fertige Erzeugnisse (Bestand)": { + "account_number": "1110" + }, + "Waren (Bestand)": { + "account_number": "1140" + }, + "Erhaltene Anz. auf Bestellungen (von Vorr\u00e4ten offen abgesetzt)": { + "account_number": "1190" + } + }, + "is_group": 1 + }, + "II - Forderungen und sonstige VG": { + "account_type": "Receivable", + "1 - Forderungen aus Lieferungen und Leistungen": { + "account_type": "Receivable", + "is_group": 1, + "Bewertungskorrektur zu Forderungen aus Lieferungen und Leistungen": { + "account_number": "9960" + }, + "Forderungen aus Lieferungen und Leistungen": { + "account_number": "1200", + "account_type": "Receivable" + }, + "Forderungen aus Lieferungen und Leistungen ohne Kontokorrent": { + "account_number": "1210" + }, + "Forderungen aus Lieferungen und Leistungen ohne Kontokorrent(b. 1 J.)": { + "account_number": "1221" + }, + "Forderungen aus Lieferungen und Leistungen ohne Kontokorrent (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1225" + }, + "Wechsel aus Lieferungen und Leistungen, bundesbankf\u00e4hig": { + "account_number": "1235" + }, + "Zweifelhafte Forderungen (Gruppe)": { + "is_group": 1, + "Zweifelhafte Forderungen": { + "account_number": "1240" + }, + "Zweifelhafte Forderungen (b. 1 J.)": { + "account_number": "1241" + }, + "Zweifelhafte Forderungen (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1245" + }, + "Einzelwertberichtigungen auf Forderungen mit einer (b. 1 J.)": { + "account_number": "1248" + }, + "Einzelwertberichtigung auf Forderungen mit einer (mehr als 1 J.)": { + "account_number": "1247" + }, + "Pauschalwertberichtigung auf Forderungen mit einer (mehr als 1 J.)": { + "account_number": "1249" + } + }, + "Gegenkonto zu sonstigen VGn bei Buchung \u00fcber Debitorenkonto": { + "account_number": "1258" + }, + "Gegenkonto 1221-1229,1240-1245,1250-1257, 1270-1279, 1290-1297 bei Aufteilung Debitorenkonto": { + "account_number": "1259" + } + }, + "2 - Forderungen gg. verb. Unternehmen": { + "account_type": "Receivable", + "is_group": 1, + "Forderungen gg. verb. Unternehmen": { + "account_number": "1260" + }, + "Forderungen gg. verb. Unternehmen (b. 1 J.)": { + "account_number": "1261" + }, + "Forderungen gg. verb. Unternehmen (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1265" + }, + "Besitzwechsel gg. verb. Unternehmen": { + "account_number": "1266" + }, + "Besitzwechsel gg. verb. Unternehmen (b. 1 J.)": { + "account_number": "1267" + }, + "Besitzwechsel gg. verb. Unternehmen (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1268" + }, + "Besitzwechsel gg. verb. Unternehmen, bundesbankf\u00e4hig": { + "account_number": "1269" + }, + "Forderungen aus Lieferungen und Leistungen gg. verb. Unternehmen (Gruppe)": { + "is_group": 1, + "Forderungen aus Lieferungen und Leistungen gg. verb. Unternehmen": { + "account_number": "1270" + }, + "Forderungen aus Lieferungen und Leistungen gg. verb. Unternehmen (b. 1 J.)": { + "account_number": "1271" + }, + "Forderungen aus Lieferungen und Leistungen gg. verb. Unternehmen (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1275" + }, + "Wertberichtigungen auf Forderungen mit einer (b. 1 J.) gg. verb. Unternehmen": { + "account_number": "1276" + }, + "Wertberichtigungen auf Forderungen mit einer (mehr als 1 J.) gg. verbundene Unternehmen": { + "account_number": "1277" + } + } + }, + "3 - Forderungen gg. Unt., mit denen ein Beteiligungsverh. besteht": { + "account_type": "Receivable", + "is_group": 1, + "Forderungen gg. Unt., mit denen ein Beteiligungsverh. besteht": { + "account_number": "1280" + }, + "Forderungen gg. Unt., mit denen ein Beteiligungsverh. besteht (b. 1 J.)": { + "account_number": "1281" + }, + "Forderungen gg. Unt., mit denen ein Beteiligungsverh. besteht (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1285" + }, + "Besitzwechsel gg. Unt., mit denen ein Beteiligungsverh. besteht": { + "account_number": "1286" + }, + "Besitzwechsel gg. Unt., mit denen ein Beteiligungsverh. besteht (b. 1 J.)": { + "account_number": "1287" + }, + "Besitzwechsel gg. Unt., mit denen ein Beteiligungsverh. besteht (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1288" + }, + "Besitzwechsel gg. Unt., mit denen ein Beteiligungsverh. besteht, bundesbankf\u00e4hig": { + "account_number": "1289" + }, + "Forderungen aus LuL gg. Unt., mit denen ein Beteiligungsverh. besteht": { + "account_number": "1290" + }, + "Forderungen aus LuL gg. Unt., mit denen ein Beteiligungsverh. besteht (b. 1 J.)": { + "account_number": "1291" + }, + "Forderungen aus LuL gg. Unt., mit denen ein Beteiligungsverh. besteht (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1295" + }, + "Wertberichtigungen auf Ford. (b. 1 J.) gg. Unt., mit denen ein Beteiligungsverh. besteht": { + "account_number": "1296" + }, + "Wertberichtigungen auf Ford. (mehr als 1 J.) gg. Unt., mit denen ein Beteiligungsverh. besteht": { + "account_number": "1297" + } + }, + "4 - sonstige VG": { + "account_type": "Receivable", + "is_group": 1, + "Bewertungskorrektur zu sonstigen VGn": { + "account_number": "9965" + }, + "Verrechnungskonto geleistete Anz. bei Buchung \u00fcber Kreditorenkonto": { + "account_number": "3695" + }, + "Sonstige VG": { + "account_number": "1300" + }, + "Sonstige VG (b. 1 J.)": { + "account_number": "1301" + }, + "Sonstige VG (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1305" + }, + "Forderungen gg. typisch stille Gesellschafter": { + "account_number": "1337" + }, + "Forderungen gg. typisch stille Gesellschafter - Restlaufzeit bis1 Jahr": { + "account_number": "1338" + }, + "Forderungen gg. typisch stille Gesellschafter (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1339" + }, + "Forderungen gg. Personal aus Lohn- und Gehaltsabrechnung (Gruppe)": { + "is_group": 1, + "Forderungen gg. Personal aus Lohn- und Gehaltsabrechnung": { + "account_number": "1340" + }, + "Forderungen gg. Personal aus Lohn- und Gehaltsabrechnung (b. 1 J.)": { + "account_number": "1341" + }, + "Forderungen gg. Personal aus Lohn- und Gehaltsabrechnung (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1345" + } + }, + "Kautionen (Gruppe)": { + "is_group": 1, + "Kautionen": { + "account_number": "1350" + }, + "Kautionen (b. 1 J.)": { + "account_number": "1351" + }, + "Kautionen (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1355" + } + }, + "Darlehen (Gruppe)": { + "Darlehen": { + "account_number": "1360" + }, + "Darlehen (b. 1 J.)": { + "account_number": "1361" + }, + "Darlehen (gr\u00f6\u00dfer 1 J.)": { + "account_number": "1365" + } + }, + "Forderungen gg. Krankenkassen aus Aufwendungsausgleichsgesetz": { + "account_number": "1369" + }, + "Durchlaufende Posten": { + "account_number": "1370" + }, + "Fremdgeld": { + "account_number": "1374" + }, + "Agenturwarenabrechnung": { + "account_number": "1375" + }, + "Nachtr\u00e4glich abziehbare Vorsteuer, \u00a7 15a Abs. 2 UStG": { + "account_number": "1376" + }, + "Zur\u00fcckzuzahlende Vorsteuer, \u00a7 15a Abs. 2 UStG": { + "account_number": "1377" + }, + "Anspr\u00fcche aus R\u00fcckdeckungsversicherungen": { + "account_number": "1378" + }, + "Verm\u00f6gensgegenst. zur Saldierung mit Pensionsr\u00fcckst. und \u00e4hnl. Verplicht. zum langfristigen Verbleib": { + "account_number": "1381" + }, + "Verm\u00f6gensgegenst. zur Erf\u00fcllung von mit der Altersvers. vergleichb. langfristigen Verplicht.": { + "account_number": "1382" + }, + "Verm\u00f6gensgegenst. zur Saldierung mit der Altersvers. vergleichb. langfristigen Verplicht.": { + "account_number": "1383" + }, + "GmbH-Anteile zum kurzfr. Verbleib": { + "account_number": "1390" + }, + "Forderungen gg. Arbeitsgemeinschaften": { + "account_number": "1391" + }, + "Genussrechte": { + "account_number": "1393" + }, + "Einzahlungsanspr\u00fcche zu Nebenleistungen oder Zuzahlungen": { + "account_number": "1394" + }, + "Genossenschaftsanteile zum kurzfr. Verbleib": { + "account_number": "1395" + }, + "Nachtr\u00e4glich abziehbare Vorsteuer, \u00a7 15a Abs. 1 UStG, bewegliche Wirtschaftsg\u00fcter": { + "account_number": "1396" + }, + "Zur\u00fcckzuzahlende Vorsteuer, \u00a7 15a Abs. 1 UStG, bewegliche Wirtschaftsg\u00fcter": { + "account_number": "1397" + }, + "Nachtr\u00e4glich abziehbare Vorsteuer gem. \u00a7 15a Abs. 1 UStG, unbewegliche Wirtschaftsg\u00fcter": { + "account_number": "1398" + }, + "Zur\u00fcckzuzahlende Vorsteuer gem. \u00a7 15a Abs. 1 UStG, unbewegliche Wirtschaftsg\u00fcter": { + "account_number": "1399" + }, + "Abziehbare Vorsteuer (Gruppe)": { + "is_group": 1, + "Abziehbare Vorsteuer": { + "account_number": "1400" + }, + "Abziehbare Vorsteuer 7 %": { + "account_number": "1401" + }, + "Abziehbare Vorsteuer aus innergem. Erwerb": { + "account_number": "1402" + }, + "Abziehbare Vorsteuer aus innergem. Erwerb 19%": { + "account_number": "1404" + }, + "Abziehbare Vorsteuer 19 %": { + "account_number": "1406" + }, + "Abziehbare Vorsteuer nach \u00a7 13b UStG 19 %": { + "account_number": "1407" + }, + "Abziehbare Vorsteuer nach \u00a7 13b UStG": { + "account_number": "1408" + }, + "Abziehbare Vorsteuer aus der Auslagerung von Gegenst\u00e4nden aus dem Umsatzsteuerlager": { + "account_number": "1431" + }, + "Abziehbare Vorsteuer aus innergem. Erwerb von Neufahrzeugen von Lieferanten ohne Ust-ID": { + "account_number": "1432" + } + }, + "Aufzuteilende Vorsteuer (Gruppe)": { + "is_group": 1, + "Aufzuteilende Vorsteuer": { + "account_number": "1410" + }, + "Aufzuteilende Vorsteuer 7 %": { + "account_number": "1411" + }, + "Aufzuteilende Vorsteuer aus innergem. Erwerb": { + "account_number": "1412" + }, + "Aufzuteilende Vorsteuer aus innergem. Erwerb 19 %": { + "account_number": "1413" + }, + "Aufzuteilende Vorsteuer 19 %": { + "account_number": "1416" + }, + "Aufzuteilende Vorsteuer nach \u00a7\u00a7 13a/13b UStG": { + "account_number": "1417" + }, + "Aufzuteilende Vorsteuer nach \u00a7\u00a7 13a/13b UStG 19 %": { + "account_number": "1419" + } + }, + "Umsatzsteuerforderungen (Gruppe)": { + "is_group": 1, + "Umsatzsteuerforderungen": { + "account_number": "1420" + }, + "Umsatzsteuerforderungen laufendes Jahr": { + "account_number": "1421" + }, + "Umsatzsteuerforderungen Vorjahr": { + "account_number": "1422" + }, + "Umsatzsteuerforderungen fr\u00fchere Jahre": { + "account_number": "1425" + }, + "Forderungen aus entrichteten Verbrauchsteuern": { + "account_number": "1427" + } + }, + "Bezahlte Einfuhrumsatzsteuer": { + "account_number": "1433" + }, + "Vorsteuer im Folgejahr abziehbar": { + "account_number": "1434" + }, + "Forderungen aus Gewerbesteuer\u00fcberzahlungen": { + "account_number": "1435" + }, + "Vorsteuer aus Erwerb als letzter Abnehmer innerh. eines Dreiecksgesch.s": { + "account_number": "1436" + }, + "Steuererstattungsanspr\u00fcche gg. anderen L\u00e4ndern": { + "account_number": "1440" + }, + "Forderungen an das Finanzamt aus abgef\u00fchrtem Bauabzugsbetrag": { + "account_number": "1456" + }, + "Forderungen gg. Bundesagentur f. Arbeit": { + "account_number": "1457" + }, + "Geldtransit": { + "account_number": "1460" + }, + "Vorsteuer nach allgemeinen Durchschnittss\u00e4tzen UStVA Kz. 63": { + "account_number": "1484" + }, + "Verrechnungskonto Ist-Versteuerung": { + "account_number": "1490" + }, + "Verrechnungskonto erhaltene Anz. bei Buchung \u00fcber Debitorenkonto": { + "account_number": "1495" + }, + "\u00dcberleitungskonto Kostenstellen": { + "account_number": "1498" + } + }, + "is_group": 1 + }, + "III - Wertpapiere": { + "is_group": 1, + "2 - sonstige Wertpapiere": { + "is_group": 1, + "Sonstige Wertpapiere": { + "account_number": "1510" + } + }, + "Finanzwechsel": { + "account_number": "1520" + }, + "Andere Wertpapiere mit unwesentlichen Wertschwankungen im Sinne Textziffer 18 DRS 2": { + "account_number": "1525" + }, + "Wertpapieranlagen i. R. d. kurzfr. Finanzdisposition": { + "account_number": "1530" + }, + "Schecks": { + "account_number": "1550" + }, + "Anteile an verbundenen Unternehmen (Umlaufverm\u00f6gen)": { + "account_number": "1500" + } + }, + "IV - Kassenbestand, Bundesbankguthaben, Guthaben bei Kreditinstituten und Schecks": { + "is_group": 1, + "Bewertungskorrektur zu Guthaben bei Kreditinstituten": { + "account_number": "9962" + }, + "Kasse (Gruppe)": { + "is_group": 1, + "account_type": "Cash", + "Kasse": { + "account_number": "1600", + "account_type": "Cash" + }, + "Nebenkasse 1": { + "account_number": "1610", + "account_type": "Cash" + }, + "Nebenkasse 2": { + "account_number": "1620", + "account_type": "Cash" + } + }, + "Postbank (Gruppe)": { + "is_group": 1, + "Postbank": { + "account_number": "1700" + }, + "Postbank 1 (Gruppe)": { + "is_group": 1, + "Postbank 1": { + "account_number": "1710" + } + }, + "Postbank 2 (Gruppe)": { + "is_group": 1, + "Postbank 2": { + "account_number": "1720" + } + }, + "Postbank 3 (Gruppe)": { + "is_group": 1, + "Postbank 3": { + "account_number": "1730" + } + } + }, + "LZB-Guthaben": { + "account_number": "1780" + }, + "Bundesbankguthaben": { + "account_number": "1790" + }, + "Bank (Gruppe)": { + "is_group": 1, + "account_type": "Bank", + "Bank": { + "account_number": "1800", + "account_type": "Bank" + }, + "Bank 1": { + "account_number": "1810", + "account_type": "Bank" + }, + "Bank 2": { + "account_number": "1820", + "account_type": "Bank" + }, + "Bank 3": { + "account_number": "1830" + }, + "Bank 4": { + "account_number": "1840" + }, + "Bank 5": { + "account_number": "1850" + }, + "Finanzmittelanlagen i. R. d. kurzfr. Finanzdisposition (nicht im Finanzmittelfonds enthalten)": { + "account_number": "1890" + }, + "Verb. gg. Kreditinstituten (nicht im Finanzmittelfonds enthalten)": { + "account_number": "1895" + } + } + }, + "is_group": 1 + }, + "C - Rechnungsabgrenzungsposten": { + "is_group": 1, + "Aktive Rechnungsabgrenzung": { + "account_number": "1900" + }, + "Als Aufwand ber\u00fccksichtigte Z\u00f6lle und Verbrauchsteuern auf Vorr\u00e4te": { + "account_number": "1920" + }, + "Als Aufwand ber\u00fccksichtigte Umsatzsteuer auf Anz.": { + "account_number": "1930" + }, + "Damnum/Disagio": { + "account_number": "1940" + } + }, + "D - Aktive latente Steuern": { + "is_group": 1, + "Aktive latente Steuern": { + "account_type": "Tax", + "account_number": "1950" + } + }, + "E - Aktiver Unterschiedsbetrag aus der Verm\u00f6gensverrechnung": { + "is_group": 1 + }, + "is_group": 1 + }, + "Passiva": { + "root_type": "Liability", + "A - Eigenkapital": { + "account_type": "Equity", + "is_group": 1, + "I - Gezeichnetes Kapital": { + "account_type": "Equity", + "is_group": 1 + }, + "II - Kapitalr\u00fccklage": { + "account_type": "Equity", + "is_group": 1 + }, + "III - Gewinnr\u00fccklagen": { + "account_type": "Equity", + "1 - gesetzliche R\u00fccklage": { + "account_type": "Equity", + "is_group": 1 + }, + "2 - R\u00fccklage f. Anteile an einem herrschenden oder mehrheitlich beteiligten Unternehmen": { + "account_type": "Equity", + "is_group": 1 + }, + "3 - satzungsm\u00e4\u00dfige R\u00fccklagen": { + "account_type": "Equity", + "is_group": 1 + }, + "4 - andere Gewinnr\u00fccklagen": { + "account_type": "Equity", + "is_group": 1, + "Gewinnr\u00fccklagen aus den \u00dcbergangsvorschriften BilMoG": { + "is_group": 1, + "Gewinnr\u00fccklagen (BilMoG)": { + "account_number": "2963" + }, + "Gewinnr\u00fccklagen aus Zuschreibung Sachanlageverm\u00f6gen (BilMoG)": { + "account_number": "2964" + }, + "Gewinnr\u00fccklagen aus Zuschreibung Finanzanlageverm\u00f6gen (BilMoG)": { + "account_number": "2965" + }, + "Gewinnr\u00fccklagen aus Aufl\u00f6sung der Sonderposten mit R\u00fccklageanteil (BilMoG)": { + "account_number": "2966" + } + }, + "Latente Steuern (Gewinnr\u00fccklage Haben) aus erfolgsneutralen Verrechnungen": { + "account_number": "2967" + }, + "Latente Steuern (Gewinnr\u00fccklage Soll) aus erfolgsneutralen Verrechnungen": { + "account_number": "2968" + }, + "Rechnungsabgrenzungsposten (Gewinnr\u00fccklage Soll) aus erfolgsneutralen Verrechnungen": { + "account_number": "2969" + } + }, + "is_group": 1 + }, + "IV - Gewinnvortrag/Verlustvortrag": { + "account_type": "Equity", + "is_group": 1 + }, + "V - Jahres\u00fcberschu\u00df/Jahresfehlbetrag": { + "account_type": "Equity", + "is_group": 1 + }, + "Einlagen stiller Gesellschafter": { + "account_number": "9295" + } + }, + "B - R\u00fcckstellungen": { + "is_group": 1, + "1 - R\u00fcckstellungen f. Pensionen und \u00e4hnliche Verplicht.": { + "is_group": 1, + "R\u00fcckstellungen f. Pensionen und \u00e4hnliche Verplicht.": { + "account_number": "3000" + }, + "R\u00fcckstellungen f. Pensionen und \u00e4hnliche Verplicht. (Saldierung mit langfristigen VG)": { + "account_number": "3009" + }, + "R\u00fcckstellungen f. Direktzusagen": { + "account_number": "3010" + }, + "R\u00fcckstellungen f. ZuschussVerplicht. f. Pensionskassen und Lebensversicherungen": { + "account_number": "3011" + } + }, + "2 - Steuerr\u00fcckstellungen": { + "is_group": 1, + "Steuerr\u00fcckstellungen": { + "account_number": "3020" + }, + "Gewerbesteuerr\u00fcckstellung": { + "account_number": "3030" + }, + "Gewerbesteuerr\u00fcckstellung, \u00a7 4 Abs. 5b EStG": { + "account_number": "3035" + }, + "R\u00fcckstellung f. latente Steuern": { + "account_number": "3060" + }, + "Sonstige R\u00fcckstellungen": { + "account_number": "3070" + }, + "R\u00fcckstellungen f. Personalkosten": { + "account_number": "3074" + }, + "R\u00fcckstellungen f. unterlassene Aufwendungen f. Instandhaltung, Nachholung in den ersten drei Monaten": { + "account_number": "3075" + }, + "R\u00fcckstellungen f. mit der Altersvers. vergleichb. langfr. Verplicht. zum langfr. Verbleib": { + "account_number": "3076" + }, + "R\u00fcckst. f. mit der Altersvers. vergleichb. langfr. Verplicht. (Saldierung mit langfristigen VG)": { + "account_number": "3077" + } + }, + "3 - sonstige R\u00fcckstellungen": { + "is_group": 1, + "Sonderposten mit R\u00fccklageanteil, steuerfreie R\u00fccklagen (Gruppe)": { + "is_group": 1, + "Sonderposten mit R\u00fccklageanteil, steuerfreie R\u00fccklagen": { + "account_number": "2980" + }, + "Sonderposten mit R\u00fccklageanteil nach \u00a7 6b EStG": { + "account_number": "2981" + }, + "Sonderposten mit R\u00fccklageanteil nach EStR R 6.6": { + "account_number": "2982" + }, + "R\u00fccklage f. Zusch\u00fcsse": { + "account_number": "2988" + }, + "Sonderposten mit R\u00fccklageanteil nach \u00a7 52 Abs.16 EStG": { + "account_number": "2989" + }, + "Sonderposten mit R\u00fccklageanteil, Sonderabschreibungen": { + "account_number": "2990" + }, + "Sonderposten mit R\u00fccklageanteil nach \u00a7 7g Abs. 2 EStG n. F.": { + "account_number": "2993" + }, + "Ausgleichsposten bei Entnahmen \u00a7 4g EStG": { + "account_number": "2995" + }, + "Sonderposten mit R\u00fccklageanteil nach \u00a7 7g Abs. 1 EStG a. F. / \u00a7 7g Abs. 5 EStG n. F.": { + "account_number": "2997" + }, + "Sonderposten mit R\u00fccklageanteil nach \u00a7 7g Abs. 3 und 7 EStG a. F.": { + "account_number": "2998" + }, + "Sonderposten f. Zusch\u00fcsse und Zulagen": { + "account_number": "2999" + }, + "R\u00fcckstellungen f. Abraum- und Abfallbeseitigung": { + "account_number": "3085" + }, + "R\u00fcckstellungen f. Gew\u00e4hrleistungen": { + "account_number": "3090" + }, + "R\u00fcckstellungen f. drohende Verluste aus schwebenden Gesch\u00e4ften": { + "account_number": "3092" + }, + "R\u00fcckstellungen f. Abschluss- und Pr\u00fcfungskosten": { + "account_number": "3095" + }, + "R\u00fcckstellungen zur Erf\u00fcllung der Aufbewahrungspflichten": { + "account_number": "3096" + }, + "Aufwandsr\u00fcckstellungen gem\u00e4\u00df \u00a7 249 Abs. 2 HGB a. F.": { + "account_number": "3098" + }, + "R\u00fcckstellungen f. Umweltschutz": { + "account_number": "3099" + } + } + } + }, + "C - Verb.": { + "account_type": "Payable", + "1 - Anleihen": { + "is_group": 1, + "account_type": "Payable", + "davon konvertibel": { + "account_type": "Payable", + "is_group": 1, + "Anleihen, konvertibel": { + "account_number": "3120" + }, + "Anleihen, konvertibel (b. 1 J.)": { + "account_number": "3121" + }, + "Anleihen, konvertibel (1-5 J.)": { + "account_number": "3125" + }, + "Anleihen, konvertibel (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3130" + } + }, + "Anleihen, nicht konvertibel": { + "account_number": "3100" + }, + "Anleihen, nicht konvertibel (b. 1 J.)": { + "account_number": "3101" + }, + "Anleihen, nicht konvertibel (1-5 J.)": { + "account_number": "3105" + }, + "Anleihen, nicht konvertibel (gr\u00f6\u00dfer 5 J.) (Gruppe)": { + "is_group": 1, + "Anleihen, nicht konvertibel (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3110" + } + } + }, + "2 - Verb. gg. Kreditinstituten": { + "account_type": "Payable", + "is_group": 1, + "Bewertungskorrektur zu Verb. gg. Kreditinstituten": { + "account_number": "9963" + }, + "Verb. gg. Kreditinstituten (Gruppe)": { + "is_group": 1, + "Verb. gg. Kreditinstituten": { + "account_number": "3150" + }, + "Verb. gg. Kreditinstituten (b. 1 J.)": { + "account_number": "3151" + }, + "Verb. gg. Kreditinstituten (1-5 J.)": { + "account_number": "3160" + }, + "Verb. gg. Kreditinstituten (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3170" + } + }, + "Verb. gg. Kreditinstituten aus Teilzahlungsvertr\u00e4gen (Gruppe)": { + "is_group": 1, + "Verb. gg. Kreditinstituten aus Teilzahlungsvertr\u00e4gen": { + "account_number": "3180" + }, + "Verb. gg. Kreditinstituten aus Teilzahlungsvertr\u00e4gen (b. 1 J.)": { + "account_number": "3181" + }, + "Verb. gg. Kreditinstituten aus Teilzahlungsvertr\u00e4gen (1-5 J.)": { + "account_number": "3190" + }, + "Verb. gg. Kreditinstituten aus Teilzahlungsvertr\u00e4gen (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3200" + } + } + }, + "3 - erhaltene Anz. auf Bestellungen": { + "account_type": "Payable", + "is_group": 1, + "Erhaltene, versteuerte Anz. 7 % USt (Verb.)": { + "account_number": "3260", + "account_type": "Receivable" + }, + "Erhaltene, versteuerte Anz. 16 % USt (Verb.)": { + "account_number": "3270" + }, + "Erhaltene, versteuerte Anz. 15 % USt (Verb.)": { + "account_number": "3271" + }, + "Erhaltene, versteuerte Anz. 19 % USt (Verb.)": { + "account_number": "3272", + "account_type": "Receivable" + }, + "Erhaltene Anz. (Gruppe)": { + "is_group": 1, + "Erhaltene Anz. (b. 1 J.)": { + "account_number": "3280", + "account_type": "Receivable" + }, + "Erhaltene Anz. (1-5 J.)": { + "account_number": "3284", + "account_type": "Receivable" + }, + "Erhaltene Anz. (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3285", + "account_type": "Receivable" + } + }, + "Erhaltene Anz. auf Bestellungen (Verb.)": { + "account_number": "3250", + "account_type": "Receivable" + } + }, + "4 - Verb. aus Lieferungen und Leistungen": { + "account_type": "Payable", + "is_group": 1, + "Bewertungskorrektur zu Verb. aus Lieferungen und Leistungen": { + "account_number": "9964" + }, + "Verb. aus Lieferungen und Leistungen": { + "account_number": "3300", + "account_type": "Payable" + }, + "Verb. aus Lieferungen und Leistungen ohne Kontokorrent": { + "account_number": "3310" + }, + "Verb. aus Lieferungen und Leistungen ohne Kontokorrent (b. 1 J.)": { + "account_number": "3335" + }, + "Verb. aus Lieferungen und Leistungen ohne Kontokorrent (1-5 J.)": { + "account_number": "3337" + }, + "Verb. aus Lieferungen und Leistungen ohne Kontokorrent (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3338" + } + }, + "5 - Verb. aus der Annahme gezogener Wechsel und der Ausstellung eigener Wechsel": { + "account_type": "Payable", + "is_group": 1, + "Verb. aus der Annahme gezogener Wechsel und aus der Ausstellung eigener Wechsel": { + "account_number": "3350" + }, + "Verb. aus der Annahme gezogener Wechsel und aus der Ausstellung eigener Wechsel (b. 1 J.)": { + "account_number": "3351" + }, + "Verb. aus der Annahme gezogener Wechsel und aus der Ausstellung eigner Wechsel (1-5 J.)": { + "account_number": "3380" + }, + "Verb. aus der Annahme gezogener Wechsel und der Ausstellung eigener Wechsel (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3390" + } + }, + "6 - Verb. gg. verbundenen Unternehmen": { + "account_type": "Payable", + "is_group": 1, + "Verb. gg. verbundenen Unternehmen": { + "account_number": "3400" + }, + "Verb. gg. verbundenen Unternehmen (b. 1 J.)": { + "account_number": "3401" + }, + "Verb. gg. verbundenen Unternehmen (1-5 J.)": { + "account_number": "3405" + }, + "Verb. gg. verbundenen Unternehmen (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3410" + }, + "Verb. aus LuL gg. verbundenen Unternehmen": { + "account_number": "3420" + }, + "Verb. aus LuL gg. verbundenen Unternehmen (b. 1 J.)": { + "account_number": "3421" + }, + "Verb. aus LuL gg. verbundenen Unternehmen (1-5 J.)": { + "account_number": "3425" + }, + "Verb. aus LuL gg. verbundenen Unternehmen (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3430" + } + }, + "7 - Verb. gg. Unternehmen, mit denen ein Beteiligungsverh. besteht": { + "account_type": "Payable", + "is_group": 1, + "Verb. gg. Unternehmen, mit denen ein Beteiligungsverh. besteht": { + "account_number": "3450" + }, + "Verb. gg. Unternehmen, mit denen ein Beteiligungsverh. besteht (b. 1 J.)": { + "account_number": "3451" + }, + "Verb. gg. Unternehmen, mit denen ein Beteiligungsverh. besteht (1-5 J.)": { + "account_number": "3455" + }, + "Verb. gg. Unternehmen, mit denen ein Beteiligungsverh. besteht (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3460" + }, + "Verb. aus LuL gg. Unternehmen, mit denen ein Beteiligungsverh. besteht": { + "account_number": "3470" + }, + "Verb. aus LuL gg. Unternehmen, mit denen ein Beteiligungsverh. besteht (b. 1 J.)": { + "account_number": "3471" + }, + "Verb. aus LuL gg. Unternehmen, mit denen ein Beteiligungsverh. besteht (1-5 J.)": { + "account_number": "3475" + }, + "Verb. aus LuL gg. Unternehmen, mit denen ein Beteiligungsverh. besteht (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3480" + } + }, + "8 - sonstige Verb.": { + "account_type": "Payable", + "is_group": 1, + "davon aus Steuern": { + "account_type": "Payable", + "is_group": 1, + "Verb. aus Steuern und Abgaben": { + "account_number": "3700", + "account_type": "Payable" + }, + "Verb. aus Steuern und Abgaben (b. 1 J.)": { + "account_number": "3701" + }, + "Verb. aus Steuern und Abgaben (1-5 J.)": { + "account_number": "3710" + }, + "Verb. aus Steuern und Abgaben (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3715" + }, + "Verb. aus Lohn- und Kirchensteuer": { + "account_number": "3730" + }, + "Verb. aus Einbehaltungen (KapESt und Solz auf KapESt) f. offene Aussch\u00fcttungen": { + "account_number": "3760" + }, + "Verb. f. Verbrauchsteuern": { + "account_number": "3761" + } + }, + "Gewinnverf\u00fcgungskonto stille Gesellschafter": { + "account_number": "3620" + }, + "Sonstige Verrechnungskonten (Interimskonten)": { + "account_number": "3630" + }, + "Kreditkartenabrechnung": { + "account_number": "3610" + }, + "Verb. gg. Arbeitsgemeinschaften": { + "account_number": "3611" + }, + "Bewertungskorrektur zu sonstigen Verb.": { + "account_number": "9961" + }, + "Verb. gg. stillen Gesellschaftern": { + "account_number": "3655" + }, + "Verb. gg. stillen Gesellschaftern (b. 1 J.)": { + "account_number": "3656" + }, + "Verb. gg. stillen Gesellschaftern (1-5 J.)": { + "account_number": "3657" + }, + "Verb. gg. stillen Gesellschaftern (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3658" + }, + "davon i. R. d. sozialen Sicherheit": { + "account_type": "Payable", + "is_group": 1, + "Verb. i. R. d. sozialen Sicherheit": { + "account_number": "3740" + }, + "Verb. i. R. d. sozialen Sicherheit (b. 1 J.)": { + "account_number": "3741" + }, + "Verb. i. R. d. sozialen Sicherheit (1-5 J.)": { + "account_number": "3750" + }, + "Verb. i. R. d. sozialen Sicherheit (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3755" + }, + "Voraussichtliche Beitragsschuld gg. den Sozialversicherungstr\u00e4gern": { + "account_number": "3759" + } + }, + "Verb. aus Lohn und Gehalt (Gruppe)": { + "is_group": 1, + "Verb. aus Lohn und Gehalt": { + "account_number": "3720" + }, + "Verb. f. Einbehaltungen von Arbeitnehmern": { + "account_number": "3725" + }, + "Verb. an das Finanzamt aus abzuf\u00fchrendem Bauabzugsbetrag": { + "account_number": "3726" + } + }, + "Verb. aus Verm\u00f6gensbildung": { + "account_number": "3770" + }, + "Verb. aus Verm\u00f6gensbildung (b. 1 J.)": { + "account_number": "3771" + }, + "Verb. aus Verm\u00f6gensbildung (1-5 J.)": { + "account_number": "3780" + }, + "Verb. aus Verm\u00f6gensbildung (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3785" + }, + "Ausgegebene Geschenkgutscheine": { + "account_number": "3786" + }, + "Sonstige Verb.": { + "account_number": "3500", + "account_type": "Payable" + }, + "Sonstige Verb. (b. 1 J.)": { + "account_number": "3501" + }, + "Sonstige Verb. (1-5 J.)": { + "account_number": "3504" + }, + "Sonstige Verb. (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3507" + }, + "Darlehen typisch stiller Gesellschafter (Gruppe)": { + "is_group": 1, + "Darlehen typisch stiller Gesellschafter": { + "account_number": "3520" + }, + "Darlehen typisch stiller Gesellschafter (b. 1 J.)": { + "account_number": "3521" + }, + "Darlehen typisch stiller Gesellschafter (1-5 J.)": { + "account_number": "3524" + }, + "Darlehen typisch stiller Gesellschafter (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3527" + } + }, + "Darlehen atypisch stiller Gesellschafter (Gruppe)": { + "is_group": 1, + "Darlehen atypisch stiller Gesellschafter": { + "account_number": "3530" + }, + "Darlehen atypisch stiller Gesellschafter (b. 1 J.)": { + "account_number": "3531" + }, + "Darlehen atypisch stiller Gesellschafter (1-5 J.)": { + "account_number": "3534" + }, + "Darlehen atypisch stiller Gesellschafter (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3537" + } + }, + "Partiarische Darlehen (Gruppe)": { + "is_group": 1, + "Partiarische Darlehen": { + "account_number": "3540" + }, + "Partiarische Darlehen (b. 1 J.)": { + "account_number": "3541" + }, + "Partiarische Darlehen (1-5 J.)": { + "account_number": "3544" + }, + "Partiarische Darlehen (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3547" + } + }, + "Erhaltene Kautionen (Gruppe)": { + "is_group": 1, + "Erhaltene Kautionen": { + "account_number": "3550" + }, + "Erhaltene Kautionen (b. 1 J.)": { + "account_number": "3551" + }, + "Erhaltene Kautionen (1-5 J.)": { + "account_number": "3554" + }, + "Erhaltene Kautionen (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3557" + } + }, + "Darlehen (1-5 J.)": { + "account_number": "3564" + }, + "Darlehen (gr\u00f6\u00dfer 5 J.)": { + "account_number": "3567" + }, + "Lohn- und Gehaltsverrechnungskonto": { + "account_number": "3790" + }, + "Umsatzsteuer (Gruppe)": { + "account_type": "Tax", + "is_group": 1, + "Umsatzsteuer": { + "account_number": "3800", + "account_type": "Tax" + }, + "Umsatzsteuer 7 %": { + "account_number": "3801", + "account_type": "Tax" + }, + "Umsatzsteuer aus innergem. Erwerb": { + "account_number": "3802" + }, + "Umsatzsteuer aus innergem. Erwerb 19 %": { + "account_number": "3804" + }, + "Umsatzsteuer 19 %": { + "account_number": "3806", + "account_type": "Tax" + }, + "Umsatzsteuer aus im Inland steuerpfl. EU-Lieferungen": { + "account_number": "3807" + }, + "Umsatzsteuer aus im Inland steuerpfl. EU-Lieferungen 19 %": { + "account_number": "3808" + }, + "Umsatzsteuer aus innergem. Erwerb ohne Vorsteuerabzug": { + "account_number": "3809" + }, + "Umsatzsteuer nicht f\u00e4llig (Gruppe)": { + "is_group": 1, + "Umsatzsteuer nicht f\u00e4llig": { + "account_number": "3810" + }, + "Umsatzsteuer nicht f\u00e4llig 7 %": { + "account_number": "3811" + }, + "Umsatzsteuer nicht f\u00e4llig aus im Inland steuerpfl. EU-Lieferungen": { + "account_number": "3812" + }, + "Umsatzsteuer nicht f\u00e4llig aus im Inland steuerpfl. EU-Lieferungen 19 %": { + "account_number": "3814" + }, + "Umsatzsteuer nicht f\u00e4llig 19 %": { + "account_number": "3816" + }, + "Umsatzsteuer aus im anderen EU-Land steuerpfl. Lieferungen": { + "account_number": "3817" + }, + "Umsatzsteuer aus im anderen EU-Land steuerpfl. sonstigen Leistungen/Werklieferungen": { + "account_number": "3818" + }, + "Umsatzsteuer aus Erwerb als letzter Abnehmer innerh. eines Dreiecksgesch.s": { + "account_number": "3819" + } + }, + "Umsatzsteuer-Vorauszahlungen": { + "account_number": "3820", + "account_type": "Tax" + }, + "Umsatzsteuer-Vorauszahlung 1/11": { + "account_number": "3830" + }, + "Nachsteuer, UStVA Kz. 65": { + "account_number": "3832" + }, + "Umsatzsteuer aus innergem. Erwerb von Neufahrzeugen von Lieferanten ohne Ust-ID": { + "account_number": "3834" + }, + "Umsatzsteuer nach \u00a7 13b UStG": { + "account_number": "3835" + }, + "Umsatzsteuer nach \u00a7 13b UStG 19 %": { + "account_number": "3837" + }, + "Umsatzsteuer aus der Auslagerung von Gegenst\u00e4nden aus einem Umsatzsteuerlager": { + "account_number": "3839" + }, + "Einfuhrumsatzsteuer aufgeschoben bis": { + "account_number": "3850" + }, + "In Rechnung unrichtig oder unberechtigtausgewiesene Steuerbetr\u00e4ge, UStVA Kz. 69": { + "account_number": "3852" + }, + "Steuerzahlungen an andere L\u00e4nder": { + "account_number": "3854" + } + } + }, + "is_group": 1 + }, + "E - Passive latente Steuern": { + "is_group": 1, + "Passive latente Steuern": { + "account_number": "3065" + } + }, + "D - Rechnungsabgrenzungsposten": { + "is_group": 1, + "Passive Rechnungsabgrenzung": { + "account_number": "3900" + } + }, + "is_group": 1 + }, + "1 - Umsatzerl\u00f6se": { + "root_type": "Income", + "is_group": 1, + "Steuerfreie Ums\u00e4tze \u00a7 4 Nr. 8 ff UStG (Gruppe)": { + "is_group": 1, + "Steuerfreie Ums\u00e4tze \u00a7 4 Nr. 8 ff UStG": { + "account_number": "4100" + }, + "Steuerfreie Ums\u00e4tze nach \u00a7 4 Nr. 12 UStG (Vermietung und Verpachtung)": { + "account_number": "4105" + }, + "Sonstige steuerfreie Ums\u00e4tze Inland": { + "account_number": "4110" + }, + "Steuerfreie Ums\u00e4tze \u00a7 4 Nr. 1a UStG (Gruppe)": { + "is_group": 1, + "Steuerfreie Ums\u00e4tze \u00a7 4 Nr. 1a UStG": { + "account_number": "4120" + }, + "Steuerfreie Innergemeinschaftliche Lieferungen \u00a7 4 Nr. 1b UStG": { + "account_number": "4125" + } + }, + "Lieferungen des ersten Abnehmers bei innergem. Dreiecksgesch.en \u00a7 25b Abs. 2 UStG (Gruppe)": { + "is_group": 1, + "Lieferungen des ersten Abnehmers bei innergem. Dreiecksgesch.en \u00a7 25b Abs. 2 UStG": { + "account_number": "4130" + }, + "Steuerfreie innergem. Lieferungen von Neufahrzeugen an Abnehmer ohne Ust-ID": { + "account_number": "4135" + }, + "Umsatzerl\u00f6se nach \u00a7\u00a7 25 und 25a UStG 19% USt": { + "account_number": "4136" + }, + "Umsatzerl\u00f6se nach \u00a7\u00a7 25 und 25a UStG ohne USt": { + "account_number": "4138" + }, + "Umsatzerl\u00f6se aus Reiseleistungen \u00a7 25 Abs. 2 UStG, steuerfrei": { + "account_number": "4139" + } + }, + "Steuerfreie Ums\u00e4tze Offshore usw.": { + "account_number": "4140" + }, + "Sonstige steuerfreie Ums\u00e4tze (z. B. \u00a7 4 Nr. 2-7 UStG)": { + "account_number": "4150" + }, + "Steuerfreie Ums\u00e4tze ohne Vorsteuerabzug zum Gesamtumsatz geh\u00f6rend": { + "account_number": "4160" + }, + "Erl\u00f6se, die mit den Durchschnittss\u00e4tzen des \u00a7 24 UStG versteuert werden": { + "account_number": "4180" + }, + "Erl\u00f6se aus Kleinunternehmer i. S. d. \u00a7 19 Abs. 1 UStG": { + "account_number": "4185", + "account_type": "Income Account" + }, + "Erl\u00f6se aus Geldspielautomaten 19 % USt": { + "account_number": "4186" + } + }, + "Erl\u00f6se": { + "account_number": "4200", + "account_type": "Income Account" + }, + "Erl\u00f6se 7 % USt": { + "account_number": "4300", + "account_type": "Income Account" + }, + "Erl\u00f6se aus im Inland steuerpfl. EU-Lieferungen 7 % USt": { + "account_number": "4310" + }, + "Erl\u00f6se aus im Inland steuerpfl. EU-Lieferungen 19 % USt": { + "account_number": "4315" + }, + "Erl\u00f6se aus im anderen EU-Land steuerpfl. Lieferungen": { + "account_number": "4320" + }, + "Erl\u00f6se aus im Inland steuerpfl. EU-Lieferungen 16 % USt": { + "account_number": "4330" + }, + "Erl\u00f6se aus Lieferungen von Mobilfunkger./Schaltkr., f. die der Leistungsempf. die Ust. schuldet": { + "account_number": "4335" + }, + "Erl\u00f6se aus im anderen EU-Land steuerpfl. sonst. Leistungen, f. die der Leistungsempf. die Ust. schuldet": { + "account_number": "4336" + }, + "Erl\u00f6se aus Leistungen, f. die der Leistungsempf. die Ust. nach \u00a7 13b UStG schuldet": { + "account_number": "4337" + }, + "Erl\u00f6se aus im Drittland steuerbaren Leistungen, im Inland nicht steuerbare Ums\u00e4tze": { + "account_number": "4338" + }, + "Erl\u00f6se aus im anderen EU-Land steuerbaren Leistungen, im Inland nicht steuerbare Ums\u00e4tze": { + "account_number": "4339" + }, + "Erl\u00f6se 16 % USt (Gruppe)": { + "is_group": 1, + "Erl\u00f6se 16 % USt": { + "account_number": "4340" + } + }, + "Erl\u00f6se 19 % USt (Gruppe)": { + "is_group": 1, + "Erl\u00f6se 19 % USt": { + "account_number": "4400", + "account_type": "Income Account" + } + }, + "Erl\u00f6sschm\u00e4lerungen (Gruppe)": { + "is_group": 1, + "Erl\u00f6sschm\u00e4lerungen": { + "account_number": "4700" + }, + "Erl\u00f6sschm\u00e4lerungen aus steuerfreien Ums\u00e4tzen \u00a7 4 Nr. 1a UStG": { + "account_number": "4705" + }, + "Erl\u00f6sschm\u00e4lerungen 7 % USt": { + "account_number": "4710" + }, + "Erl\u00f6sschm\u00e4lerungen 19 % USt": { + "account_number": "4720" + }, + "Erl\u00f6sschm\u00e4lerungen 16 % USt": { + "account_number": "4723" + }, + "Erl\u00f6sschm\u00e4lerungen aus steuerfreien innergem. Lieferungen": { + "account_number": "4724" + }, + "Erl\u00f6sschm\u00e4lerungen aus im Inland steuerpfl. EU-Lieferungen 7 % USt": { + "account_number": "4725" + }, + "Erl\u00f6sschm\u00e4lerungen aus im Inland steuerpfl. EU-Lieferungen 19 % USt": { + "account_number": "4726" + }, + "Erl\u00f6sschm\u00e4lerungen aus im anderen EU-Land steuerpfl. Lieferungen": { + "account_number": "4727" + }, + "Erl\u00f6sschm\u00e4lerungen aus im Inland steuerpfl. EU-Lieferungen 16 % USt": { + "account_number": "4729" + }, + "Gew\u00e4hrte Skonti (Gruppe)": { + "is_group": 1, + "Gew. Skonti": { + "account_number": "4730" + }, + "Gew. Skonti 7 % USt": { + "account_number": "4731" + }, + "Gew. Skonti 19 % USt": { + "account_number": "4736" + }, + "Gew. Skonti aus Lieferungen von Mobilfunkger./Schaltkr., f. die der Leistungsempf. die Ust. schuldet": { + "account_number": "4738" + }, + "Gew. Skonti aus Leistungen, f. die der Leistungsempf. die Umsatzsteuer nach \u00a7 13b UStG schuldet": { + "account_number": "4741" + }, + "Gew. Skonti aus Erl\u00f6sen aus im anderen EU-Land steuerpfl. Leistungen, f. die der Leistungsempf. die Ust. schuldet": { + "account_number": "4742" + }, + "Gew. Skonti aus steuerfreien innergem. Lieferungen \u00a7 4 Nr. 1b UStG": { + "account_number": "4743" + }, + "Gew. Skonti aus im Inland steuerpfl. EU-Lieferungen": { + "account_number": "4745" + }, + "Gew. Skonti aus im Inland steuerpfl. EU-Lieferungen 7% USt": { + "account_number": "4746" + }, + "Gew. Skonti aus im Inland steuerpfl. EU-Lieferungen 19% USt": { + "account_number": "4748" + } + }, + "Gew\u00e4hrte Boni 7 % USt": { + "account_number": "4750" + }, + "Gew\u00e4hrte Boni 19 % USt": { + "account_number": "4760" + }, + "Gew\u00e4hrte Boni": { + "account_number": "4769" + }, + "Gew\u00e4hrte Rabatte": { + "account_number": "4770" + }, + "Gew\u00e4hrte Rabatte 7 % USt": { + "account_number": "4780" + }, + "Gew\u00e4hrte Rabatte 19 % USt": { + "account_number": "4790" + } + }, + "Grundst\u00fccksertr\u00e4ge (Gruppe)": { + "is_group": 1, + "Grundst\u00fccksertr\u00e4ge": { + "account_number": "4860" + }, + "Erl\u00f6se aus Vermietung und Verpachtung, umsatzsteuerfrei \u00a7 4 Nr. 12 UStG": { + "account_number": "4861" + }, + "Erl\u00f6se aus Vermietung und Verpachtung 19% USt": { + "account_number": "4862" + } + }, + "Sonstige Ertr\u00e4ge aus Provisionen, Lizenzen und Patenten (Gruppe)": { + "is_group": 1, + "Sonstige Ertr\u00e4ge aus Provisionen, Lizenzen und Patenten": { + "account_number": "4570" + }, + "Sonstige Ertr\u00e4ge aus Provisionen, Lizenzen und Patenten, steuerfrei \u00a7 4 Nr. 8ff UStG": { + "account_number": "4574" + }, + "Sonstige Ertr\u00e4ge aus Provisionen, Lizenzen und Patenten, steuerfrei \u00a7 4 Nr. 5 UStG": { + "account_number": "4575" + }, + "Sonstige Ertr\u00e4ge aus Provisionen, Lizenzen und Patenten 7% USt": { + "account_number": "4576" + }, + "Sonstige Ertr\u00e4ge aus Provisionen, Lizenzen und Patenten 19% USt": { + "account_number": "4579" + } + }, + "Provisionsums\u00e4tze (Gruppe)": { + "is_group": 1, + "Provisionsums\u00e4tze": { + "account_number": "4560" + }, + "Provisionsums\u00e4tze, steuerfrei \u00a7 4Nr. 8ff UStG": { + "account_number": "4564" + }, + "Provisionsums\u00e4tze, steuerfrei \u00a7 4 Nr. 5 UStG": { + "account_number": "4565" + }, + "Provisionsums\u00e4tze 7% USt": { + "account_number": "4566" + }, + "Provisionsums\u00e4tze 19 % Ust": { + "account_number": "4569" + } + }, + "Erl\u00f6se Abfallverwertung": { + "account_number": "4510" + }, + "Erl\u00f6se Leergut": { + "account_number": "4520" + } + }, + "2 - Herstellungskosten der zur Erzielung der Umsatzerl\u00f6se erbrachten Leistungen": { + "root_type": "Expense", + "is_group": 1, + "Herstellungskosten (Gruppe)": { + "Herstellungskosten": { + "account_number": "6990", + "account_type": "Cost of Goods Sold" + }, + "Herstellungskosten: Schwund": { + "account_type": "Stock Adjustment" + } + }, + "Aufwendungen f. Roh-, Hilfs- und Betriebsstoffe und f. bezogene Waren": { + "account_number": "5000", + "account_type": "Expense Account" + }, + "Einkauf Roh-, Hilfs- und Betriebsstoffe (Gruppe)": { + "is_group": 1, + "Einkauf Roh-, Hilfs- und Betriebsstoffe": { + "account_number": "5100", + "account_type": "Expense Account" + }, + "Einkauf Roh-, Hilfs- und Betriebsstoffe 7% Vorsteuer": { + "account_number": "5110" + }, + "Einkauf Roh-, Hilfs- und Betriebsstoffe 19% Vorsteuer": { + "account_number": "5130" + }, + "Einkauf Roh-, Hilfs- und Betriebsstoffe, innergem. Erwerb 7% Vorst. u. 7% Ust.": { + "account_number": "5160" + }, + "Einkauf Roh-, Hilfs- und Betriebsstoffe, innergem. Erwerb 19% Vorst. u. 19% Ust.": { + "account_number": "5162" + }, + "Einkauf Roh-, Hilfs- und Betriebsstoffe, innergem. Erwerb ohne Vorsteuer und 7% Umsatzsteuer": { + "account_number": "5166" + }, + "Einkauf Roh-, Hilfs- und Betriebsstoffe, innergem. Erwerb ohne Vorsteuer und 19% Umsatzsteuer": { + "account_number": "5167" + }, + "Einkauf Roh-, Hilfs- und Betriebsstoffe 5,5% Vorsteuer": { + "account_number": "5170" + }, + "Einkauf Roh-, Hilfs- und Betriebsstoffe 10,7% Vorsteuer": { + "account_number": "5171" + }, + "Einkauf Roh-, Hilfs- und Betriebsstoffe aus einem USt-Lager \u00a7 13a UStG 7% Vorst. und 7% Ust.": { + "account_number": "5175" + }, + "Einkauf Roh-, Hilfs- und Betriebsstoffe aus einem USt-Lager \u00a7 13a UStG 19% Vorst. und 19% Ust.": { + "account_number": "5176" + }, + "Erwerb Roh-, Hilfs- und Betriebsstoffe als letzter Abnehmer innerh. Dreiecksgesch. 19% Vorst. und 19% Ust.": { + "account_number": "5189" + }, + "Energiestoffe (Fertigung) (Gruppe)": { + "is_group": 1, + "Energiestoffe (Fertigung)": { + "account_number": "5190" + }, + "Energiestoffe (Fertigung)7% Vorsteuer": { + "account_number": "5191" + }, + "Energiestoffe (Fertigung)19% Vorsteuer": { + "account_number": "5192" + } + } + }, + "Wareneingang (Gruppe)": { + "is_group": 1, + "Wareneingang": { + "account_number": "5200" + }, + "Wareneingang 7 % Vorsteuer": { + "account_number": "5300" + }, + "Wareneingang 19 % Vorsteuer": { + "account_number": "5400" + }, + "Wareneingang 5,5 % Vorsteuer": { + "account_number": "5505" + }, + "Wareneingang 10,7 % Vorsteuer": { + "account_number": "5540" + }, + "Steuerfreier innergem. Erwerb": { + "account_number": "5550" + }, + "Wareneingang im Drittland steuerbar": { + "account_number": "5551" + }, + "Erwerb 1. Abnehmer innerh. eines Dreieckgesch\u00e4ftes": { + "account_number": "5552" + }, + "Erwerb Waren als letzter Abnehmer innerh. Dreiecksgesch. 19% Vorst. u. 19% Ust.": { + "account_number": "5553" + }, + "Wareneingang im anderen EU-Land steuerbar": { + "account_number": "5558" + }, + "Steuerfreie Einfuhren": { + "account_number": "5559" + }, + "Waren aus einem Umsatzsteuerlager, \u00a7 13a UStG 7% Vorst. u. 7% Ust.": { + "account_number": "5560" + }, + "Waren aus einem Umsatzsteuerlager, \u00a7 13a UStG 19% Vorst. u. 19% Ust.": { + "account_number": "5565" + } + }, + "innergem. Erwerb 7% Vorst. u. 7% Ust.": { + "account_number": "5420" + }, + "innergem. Erwerb 19 % Vorsteuer 19 % Umsatzsteuer": { + "account_number": "5425" + }, + "innergem. Erwerb ohne Vorst. und 7% Ust.": { + "account_number": "5430" + }, + "innergem. Erwerb ohne Vorsteuer und 19 % Umsatzsteuer": { + "account_number": "5435" + }, + "innergem. Erwerb von Neufahrzeugen von Lieferanten ohne Ust-ID 19 % Vorst. und 19 % Ust.": { + "account_number": "5440" + }, + "Nicht abziehbare Vorsteuer (Gruppe)": { + "is_group": 1, + "Nicht abziehbare Vorsteuer": { + "account_number": "5600" + }, + "Nicht abziehbare Vorsteuer 7 % (Gruppe)": { + "is_group": 1, + "Nicht abziehbare Vorsteuer 7 %": { + "account_number": "5610" + } + }, + "Nicht abziehbare Vorsteuer 19 % (Gruppe)": { + "is_group": 1, + "Nicht abziehbare Vorsteuer 19 %": { + "account_number": "5660" + } + } + }, + "Nachl\u00e4sse (Gruppe)": { + "is_group": 1, + "Nachl\u00e4sse": { + "account_number": "5700" + }, + "Nachl\u00e4sse aus Einkauf Roh-, Hilfs- und Betriebsstoffe": { + "account_number": "5701" + }, + "Nachl\u00e4sse 7 % Vorsteuer": { + "account_number": "5710" + }, + "Nachl\u00e4sse aus Einkauf Roh-, Hilfs- und Betriebsstoffe 7% Vorsteuer": { + "account_number": "5714" + }, + "Nachl\u00e4sse aus Einkauf Roh-, Hilfs- und Betriebsstoffe 19% Vorsteuer": { + "account_number": "5715" + }, + "Nachl\u00e4sse aus Einkauf Roh-, Hilfs- und Betriebsstoffe, innergem. Erwerb 7% Vorst. u. 7% Ust.": { + "account_number": "5717" + }, + "Nachl\u00e4sse aus Einkauf Roh-, Hilfs- und Betriebsstoffe, innergem. Erwerb 19% Vorst. u. 19% Ust.": { + "account_number": "5718" + }, + "Nachl\u00e4sse 19 % Vorsteuer": { + "account_number": "5720" + }, + "Nachl\u00e4sse 16 % Vorsteuer": { + "account_number": "5722" + }, + "Nachl\u00e4sse 15 % Vorsteuer": { + "account_number": "5723" + }, + "Nachl\u00e4sse aus innergem. Erwerb 7% Vorst. u. 7% Ust.": { + "account_number": "5724" + }, + "Nachl\u00e4sse aus innergem. Erwerb 19% Vorst. u. 19% Ust.": { + "account_number": "5725" + }, + "Nachl\u00e4sse aus innergem. Erwerb 16 % Vorsteuer und 16 % Umsatzsteuer": { + "account_number": "5726" + }, + "Nachl\u00e4sse aus innergem. Erwerb 15 % Vorsteuer und 15 % Umsatzsteuer": { + "account_number": "5727" + }, + "Erhaltene Skonti (Gruppe)": { + "is_group": 1, + "Erh. Skonti": { + "account_number": "5730" + }, + "Erh. Skonti 7 % Vorsteuer": { + "account_number": "5731" + }, + "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe": { + "account_number": "5733" + }, + "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe 7% Vorsteuer": { + "account_number": "5734" + }, + "Erh. Skonti 19 % Vorsteuer": { + "account_number": "5736" + }, + "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe 19% Vorsteuer": { + "account_number": "5738" + }, + "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe aus steuerpfl. innergem. Erwerb 19% Vorst. u. 19% Ust.": { + "account_number": "5741" + }, + "Erh. Skonti aus Einkauf Roh-, Hilfs- und Betriebsstoffe aus steuerpfl. innergem. Erwerb 7% Vorst. u. 7% Ust.": { + "account_number": "5743" + }, + "Erh. Skonti aus steuerpflichtigem innergem. Erwerb": { + "account_number": "5745" + }, + "Erh. Skonti aus steuerpflichtigem innergem. Erwerb 7% Vorst. u. 7% Ust.": { + "account_number": "5746" + }, + "Erh. Skonti aus steuerpflichtigem innergem. Erwerb 19% Vorst. u. 19% Ust.": { + "account_number": "5748" + }, + "Erh. Skonti aus Erwerb Roh-,Hilfs-,Betriebsstoff letzter Abn.innerh.Dreiecksg. 19% Vorst. und 19% Ust.": { + "account_number": "5792" + }, + "Erh. Skonti aus Erwerb Waren als letzter Abnehmer innerh. Dreiecksgesch. 19% Vorst. u. 19% Ust.": { + "account_number": "5793" + } + }, + "Erhaltene Boni (Gruppe)": { + "is_group": 1, + "Erhaltene Boni 7 % Vorsteuer": { + "account_number": "5750" + }, + "Erhaltene Boni aus Einkauf Roh-, Hilfs- und Betriebsstoffe": { + "account_number": "5753" + }, + "Erhaltene Boni aus Einkauf Roh-, Hilfs- und Betriebsstoffe 7% Vorsteuer": { + "account_number": "5754" + }, + "Erhaltene Boni aus Einkauf Roh-, Hilfs- und Betriebsstoffe 19% Vorsteuer": { + "account_number": "5755" + }, + "Erhaltene Boni 19 % Vorsteuer": { + "account_number": "5760" + }, + "Erhaltene Boni": { + "account_number": "5769" + } + }, + "Erhaltene Rabatte (Gruppe)": { + "is_group": 1, + "Erhaltene Rabatte": { + "account_number": "5770" + }, + "Erhaltene Rabatte 7 % Vorsteuer": { + "account_number": "5780" + }, + "Erhaltene Rabatte aus Einkauf Roh-, Hilfs- und Betriebsstoffe": { + "account_number": "5783" + }, + "Erhaltene Rabatte aus Einkauf Roh-, Hilfs- und Betriebsstoffe 7% Vorsteuer": { + "account_number": "5784" + }, + "Erhaltene Rabatte aus Einkauf Roh-, Hilfs- und Betriebsstoffe 19% Vorsteuer": { + "account_number": "5785" + }, + "Erhaltene Rabatte 19 % Vorsteuer": { + "account_number": "5790" + } + } + }, + "Bezugsnebenkosten (Gruppe)": { + "is_group": 1, + "Bezugsnebenkosten": { + "account_number": "5800" + }, + "Leergut": { + "account_number": "5820" + }, + "Z\u00f6lle und Einfuhrabgaben": { + "account_number": "5840" + }, + "Verrechnete Stoffkosten (Gegenkonto 5000-99) oder (4000-99)": { + "account_number": "5860" + } + }, + "Fremdleistungen (Gruppe)": { + "is_group": 1, + "Fremdleistungen": { + "account_number": "5900", + "account_type": "Expense Account" + }, + "Fremdleistungen 19% Vorsteuer": { + "account_number": "5906" + }, + "Fremdleistungen ohne Vorsteuer": { + "account_number": "5909" + }, + "Bauleistungen eines im Inland ans\u00e4ssigen Unternehmers 7% Vorst. u. 7% Ust.": { + "account_number": "5910" + }, + "Sonstige Leistungen eines im anderen EU-Land ans\u00e4ssigen Unternehmers 7% Vorst. u. 7% Ust.": { + "account_number": "5913" + }, + "Leistungen eines im Ausland ans\u00e4ssigen Unternehmers 7% Vorst. u. 7% Ust.": { + "account_number": "5915" + }, + "Bauleistungen eines im Inland ans\u00e4ssigen Unternehmers 19% Vorst. u. 19% Ust.": { + "account_number": "5920" + }, + "Sonstige Leistungen eines im anderen EU-Land ans\u00e4ssigen Unternehmers 19% Vorst. u. 19% Ust.": { + "account_number": "5923" + }, + "Leistungen eines im Ausland ans\u00e4ssigen Unternehmers 19% Vorst. u. 19% Ust.": { + "account_number": "5925" + }, + "Bauleistungen eines im Inland ans\u00e4ssigen Unternehmers ohne Vorst. und 7% Ust.": { + "account_number": "5930" + }, + "Sonstige Leistungen eines im anderen EU-Land ans\u00e4ssigen Unternehmers ohne Vorst. und 7% Ust.": { + "account_number": "5933" + }, + "Leistungen eines im Ausland ans\u00e4ssigen Unternehmers ohne Vorst. und 7% Ust.": { + "account_number": "5935" + }, + "Bauleistungen eines im Inland ans\u00e4ssigen Unternehmers ohne Vorsteuer und 19 % Umsatzsteuer": { + "account_number": "5940" + }, + "Sonstige Leistungen eines im anderen EU-Land ans\u00e4ssigen Unternehmers ohne Vorsteuer und 19 % Umsatzsteuer": { + "account_number": "5943" + }, + "Leistungen eines im Ausland ans\u00e4ssigen Unternehmers ohne Vorsteuer und 19 % Umsatzsteuer": { + "account_number": "5945" + }, + "Erhaltene Skonti aus Leistungen, f. die als Leistungsempf. die Steuer geschuldet wird (Gruppe)": { + "is_group": 1, + "Erh. Skonti aus Leistungen, f. die als Leistungsempf. die Steuer nach \u00a7 13b UStG geschuldet wird": { + "account_number": "5950" + }, + "Erh. Skonti aus Leistungen,f. die als Leistungsempf. die Steuer geschuldet wird 19 % Vorst. und 19 % Ust.": { + "account_number": "5951" + }, + "Erh. Skonti aus Leistungen, f. die als Leistungsempf. die Steuer geschuldet wird ohne Vorst. aber mit Uts.": { + "account_number": "5953" + }, + "Erh. Skonti aus Leistungen, f. die als Leistungsempf. die Steuer geschuldet wird ohne Vorst., mit 19 % Ust.": { + "account_number": "5954" + } + }, + "Leistungen nach \u00a7 13b UStG mit Vorsteuerabzug": { + "account_number": "5960" + }, + "Leistungen nach \u00a7 13b UStG ohne Vorsteuerabzug": { + "account_number": "5965" + } + }, + "L\u00f6hne und Geh\u00e4lter (Gruppe)": { + "is_group": 1, + "L\u00f6hne und Geh\u00e4lter": { + "account_number": "6000", + "account_type": "Expense Account" + }, + "L\u00f6hne": { + "account_number": "6010" + }, + "Geh\u00e4lter": { + "account_number": "6020" + }, + "Tantiemen": { + "account_number": "6026" + }, + "Aushilfsl\u00f6hne": { + "account_number": "6030" + }, + "L\u00f6hne f. Minijobs": { + "account_number": "6035" + }, + "Pauschale Steuern und Abgaben f. Sachzuwendungen und Dienstleistungen an Arbeitnehmer": { + "account_number": "6039" + }, + "Pauschale Steuer f. Aushilfen": { + "account_number": "6040" + }, + "Bedienungsgelder": { + "account_number": "6045" + }, + "Ehegattengehalt": { + "account_number": "6050" + }, + "Freiwillige soziale Aufwendungen lohnsteuerpflichtig": { + "account_number": "6060" + }, + "Pauschale Steuer auf sonstige Bez\u00fcge (z. B. Fahrtkostenzusch\u00fcsse)": { + "account_number": "6069" + }, + "Krankengeldzusch\u00fcsse": { + "account_number": "6070" + }, + "Sachzuwendungen und Dienstleistungen an Arbeitnehmer": { + "account_number": "6072" + }, + "Zusch\u00fcsse der Agenturen f. Arbeit (Haben)": { + "account_number": "6075" + }, + "Verm\u00f6genswirksame Leistungen": { + "account_number": "6080" + }, + "Fahrtkostenerstattung - Wohnung/Arbeitsst\u00e4tte": { + "account_number": "6090" + } + }, + "Soziale Abgaben und Aufwendungen f. Altersvers. und f. Unterst\u00fctzung (Gruppe)": { + "is_group": 1, + "Soziale Abgaben und Aufwendungen f. Altersvers. und f. Unterst\u00fctzung": { + "account_number": "6100", + "account_type": "Expense Account" + }, + "Gesetzliche soziale Aufwendungen": { + "account_number": "6110", + "account_type": "Expense Account" + }, + "Beitr\u00e4ge zur Berufsgenossenschaft": { + "account_number": "6120", + "account_type": "Expense Account" + }, + "Freiwillige soziale Aufwendungen lohnsteuerfrei": { + "account_number": "6130" + }, + "Aufwendungen f. Altersvers.": { + "account_number": "6150" + }, + "Aufwendungen f. Unterst\u00fctzung": { + "account_number": "6160" + }, + "Sonstige soziale Abgaben": { + "account_number": "6170" + } + }, + "Abschreibungen auf Sachanlagen (Gruppe)": { + "is_group": 1, + "Abschreibungen auf Sachanlagen (ohne AfA auf Kfz und Geb\u00e4ude)": { + "account_number": "6220", + "account_type": "Depreciation" + }, + "Abschreibungen auf Geb\u00e4ude": { + "account_number": "6221", + "account_type": "Depreciation" + }, + "Abschreibungen auf Kfz": { + "account_number": "6222", + "account_type": "Depreciation" + }, + "Abschreibungen auf Geb\u00e4udeanteil des h\u00e4uslichen Arbeitszimmers": { + "account_number": "6223" + } + }, + "Au\u00dferplanm\u00e4\u00dfige Abschreibungen auf Sachanlagen (Gruppe)": { + "is_group": 1, + "Au\u00dferplanm\u00e4\u00dfige Abschreibungen auf Sachanlagen": { + "account_number": "6230" + }, + "Absetzung f. au\u00dfergew\u00f6hnliche technische und wirtschaftliche Abnutzung der Geb\u00e4ude": { + "account_number": "6231" + }, + "Absetzung f. au\u00dfergew\u00f6hnliche technische und wirtschaftliche Abnutzung des Kfz": { + "account_number": "6232" + }, + "Absetzung f. au\u00dfergew\u00f6hnliche technische und wirtschaftliche Abnutzung sonstiger Wirtschaftsg\u00fcter": { + "account_number": "6233" + } + }, + "Abschreibungen auf Sachanlagen auf Grund steuerlicher Sondervorschriften (Gruppe)": { + "is_group": 1, + "Abschreibungen auf Sachanlagen auf Grund steuerlicher Sondervorschriften": { + "account_number": "6240" + }, + "Sonderabschreibungen nach \u00a7 7g Abs. 1 und 2 EStG a. F./\u00a7 7g Abs. 5 EStG n. F.(ohne Kfz)": { + "account_number": "6241" + }, + "Sonderabschreibungen nach \u00a7 7g Abs. 1 und 2 EStG a. F./\u00a7 7g Abs. 5 EStG n. F.(f. Kfz)": { + "account_number": "6242" + }, + "K\u00fcrzung der Anschaffungs- oder Herstellungskosten gem\u00e4\u00df \u00a7 7g Abs. 2 EStG n.F. (ohne Kfz)": { + "account_number": "6243" + }, + "K\u00fcrzung der Anschaffungs- oder Herstellungskosten gem\u00e4\u00df \u00a7 7g Abs. 2 EStG n.F. (f. Kfz)": { + "account_number": "6244" + } + }, + "Kaufleasing": { + "account_number": "6250" + }, + "Sofortabschreibung geringwertiger Wirtschaftsg\u00fcter": { + "account_number": "6260", + "account_type": "Depreciation" + }, + "Abschreibungen auf aktivierte, geringwertige Wirtschaftsg\u00fcter": { + "account_number": "6262" + }, + "Abschreibungen auf den Sammelposten Wirtschaftsg\u00fcter": { + "account_number": "6264" + }, + "Au\u00dferplanm\u00e4\u00dfige Abschreibungen auf aktivierte, geringwertige Wirtschaftsg\u00fcter": { + "account_number": "6266" + }, + "Abschreibungen auf Aufwendungen f. die Ingangsetzung und Erweiterung des Gesch\u00e4ftsbetriebs": { + "account_number": "6268" + }, + "Abschreibungen auf immaterielle VG (Gruppe)": { + "is_group": 1, + "Abschreibungen auf immaterielle VG": { + "account_number": "6200", + "account_type": "Depreciation" + }, + "Abschreibungen auf selbst geschaffene immaterielle VG": { + "account_number": "6201" + }, + "Abschreibungen auf den Gesch\u00e4fts- oder Firmenwert": { + "account_number": "6205" + }, + "Au\u00dferplanm\u00e4\u00dfige Abschreibungen auf den Gesch\u00e4fts- oder Firmenwert": { + "account_number": "6209" + }, + "Au\u00dferplanm\u00e4\u00dfige Abschreibungen auf immaterielle VG": { + "account_number": "6210" + }, + "Au\u00dferplanm\u00e4\u00dfige Abschreibungen auf selbst geschaffene immaterielle VG": { + "account_number": "6211" + }, + "Abschreibungen auf Forderungen gg. Kapitalges., an denen eine Beteiligung besteht (soweit un\u00fcblich hoch)": { + "account_number": "6290" + } + }, + "Abschreibungen auf sonstige VG des Umlaufverm. (soweit un\u00fcbliche H\u00f6he) (Gruppe)": { + "is_group": 1, + "Abschreibungen auf sonstige VG des Umlaufverm. (soweit un\u00fcbliche H\u00f6he)": { + "account_number": "6270" + }, + "Abschreibungen auf Umlaufverm\u00f6gen, steuerrechtlich bedingt (soweit un\u00fcbliche H\u00f6he)": { + "account_number": "6272" + }, + "Abschreibungen auf Roh-, Hilfs- und Betriebsstoffe/Waren (soweit un\u00fcblich hoch)": { + "account_number": "6278" + }, + "Abschreibungen auf fertige und unfertige Erzeugnisse (soweit un\u00fcblich hoch)": { + "account_number": "6279" + }, + "Forderungsverluste, un\u00fcblich hoch (Gruppe)": { + "is_group": 1, + "Forderungsverluste, un\u00fcblich hoch": { + "account_number": "6280" + }, + "Forderungsverluste 7% USt (soweit un\u00fcblich hoch)": { + "account_number": "6281" + }, + "Forderungsverluste 16% USt (soweit un\u00fcblich hoch)": { + "account_number": "6285" + }, + "Forderungsverluste 19% USt (soweit un\u00fcblich hoch)": { + "account_number": "6286" + }, + "Forderungsverluste 15% USt (soweit un\u00fcblich hoch)": { + "account_number": "6287" + } + } + } + }, + "4 - Vertriebskosten": { + "root_type": "Expense", + "is_group": 1, + "Personalaufwand (Vertrieb)": { + "is_group": 1 + } + }, + "5 - allgemeine Verwaltungskosten": { + "root_type": "Expense", + "is_group": 1, + "Verwaltungskosten": { + "account_number": "6992", + "account_type": "Expenses Included In Valuation" + }, + "Personalaufwand (Verwaltung)": { + "is_group": 1 + } + }, + "6 - sonstige betriebliche Ertr\u00e4ge": { + "root_type": "Income", + "is_group": 1, + "Andere aktivierte Eigenleistungen": { + "account_number": "4820" + }, + "Aktivierte Eigenleistungen zur Erstellung von selbst geschaffenen immateriellen VGn": { + "account_number": "4825" + }, + "Sonstige betriebliche Ertr\u00e4ge": { + "account_number": "4830" + }, + "Sonstige betriebliche Ertr\u00e4ge von verbundenen Unternehmen": { + "account_number": "4832" + }, + "Andere Nebenerl\u00f6se": { + "account_number": "4833" + }, + "Sonstige Ertr\u00e4ge betrieblich und regelm\u00e4\u00dfig 16 % USt": { + "account_number": "4834" + }, + "Sonstige Ertr\u00e4ge betrieblich und regelm\u00e4\u00dfig": { + "account_number": "4835" + }, + "Sonstige Ertr\u00e4ge betrieblich und regelm\u00e4\u00dfig 19 % USt": { + "account_number": "4836" + }, + "Sonstige Ertr\u00e4ge betriebsfremd und regelm\u00e4\u00dfig": { + "account_number": "4837" + }, + "Erstattete Vorsteuer anderer L\u00e4nder": { + "account_number": "4838" + }, + "Sonstige Ertr\u00e4ge unregelm\u00e4\u00dfig": { + "account_number": "4839" + }, + "Ertr\u00e4ge aus Abgang von Gegenst\u00e4nden des Anlageverm\u00f6gens": { + "account_number": "4900" + }, + "Ertr\u00e4ge aus der Ver\u00e4u\u00dferung von Anteilen an Kap.Ges. (Finanzanlageverm., inl\u00e4nd. Kap.Ges.)": { + "account_number": "4901" + }, + "Ertr\u00e4ge aus Abgang von Gegenst\u00e4nden des Umlaufverm. (au\u00dfer Vorr\u00e4te)": { + "account_number": "4905" + }, + "Ertr\u00e4ge aus Abgang von Gegenst\u00e4nden des Umlaufverm. (au\u00dfer Vorr\u00e4te, inl\u00e4nd. Kap.Ges.)": { + "account_number": "4906" + }, + "Ertr\u00e4ge aus der W\u00e4hrungsumrechnung": { + "account_number": "4840" + }, + "Sonstige Erl\u00f6se betrieblich und regelm\u00e4\u00dfig, steuerfrei \u00a7 4 Nr. 8 ff UStG": { + "account_number": "4841" + }, + "Sonstige Erl\u00f6se betrieblich und regelm\u00e4\u00dfig, steuerfrei z. B. \u00a7 4 Nr. 2-7 UStG": { + "account_number": "4842" + }, + "Ertr\u00e4ge aus Bewertung Finanzmittelfonds": { + "account_number": "4843" + }, + "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen steuerfrei \u00a7 4 Nr. 1a UStG (bei Buchgewinn)": { + "account_number": "4844" + }, + "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen 19 % USt (bei Buchgewinn)": { + "account_number": "4845" + }, + "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen steuerfrei \u00a7 4 Nr. 1b UStG (bei Buchgewinn)": { + "account_number": "4848" + }, + "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen (bei Buchgewinn)": { + "account_number": "4849" + }, + "Erl\u00f6se aus Verk\u00e4ufen immaterieller VG (bei Buchgewinn) (Gruppe)": { + "is_group": 1, + "Erl\u00f6se aus Verk\u00e4ufen immaterieller VG (bei Buchgewinn)": { + "account_number": "4850" + }, + "Erl\u00f6se aus Verk\u00e4ufen Finanzanlagen (bei Buchgewinn)": { + "account_number": "4851" + }, + "Erl\u00f6se aus Verk\u00e4ufen Finanzanlagen (inl\u00e4ndische Kap.Ges., bei Buchgewinn)": { + "account_number": "4852" + }, + "Anlagenabg\u00e4nge Sachanlagen (Restbuchwert bei Buchvergewinn)": { + "account_number": "4855" + }, + "Anlagenabg\u00e4nge immaterielle VG (Restbuchwert bei Buchgewinn)": { + "account_number": "4856" + }, + "Anlagenabg\u00e4nge Finanzanlagen (Restbuchwert bei Buchgewinn)": { + "account_number": "4857" + }, + "Anlagenabg\u00e4nge Finanzanlagen (inl\u00e4ndische Kap.Ges., Restbuchwert bei Buchgewinn)": { + "account_number": "4858" + } + }, + "Ertr\u00e4ge aus Zuschreibungen des Sachanlageverm\u00f6gens": { + "account_number": "4910", + "account_type": "Round Off" + }, + "Ertr\u00e4ge aus Zuschreibungen des immateriellen Anlageverm\u00f6gens": { + "account_number": "4911" + }, + "Ertr\u00e4ge aus Zuschreibungen des Finanzanlageverm\u00f6gens": { + "account_number": "4912" + }, + "Ertr\u00e4ge aus Zuschreibungen des Finanzanlageverm\u00f6gens (inl\u00e4ndische Kap.Ges.)": { + "account_number": "4913" + }, + "Ertr\u00e4ge aus Zuschreibungen \u00a7 3 Nr. 40 EStG/\u00a7 8b Abs. 2 KStG (inl\u00e4ndische Kap.Ges.)": { + "account_number": "4914" + }, + "Ertr\u00e4ge aus Zuschreibungen des Umlaufverm. au\u00dfer Vorr\u00e4te": { + "account_number": "4915" + }, + "Ertr\u00e4ge aus Zuschreibungen des Umlaufverm. (inl\u00e4ndische Kap.Ges.)": { + "account_number": "4916" + }, + "Ertr\u00e4ge aus Herabsetzung der Pauschalwertberichtigung auf Forderungen": { + "account_number": "4920" + }, + "Ertr\u00e4ge aus Herabsetzung der Einzelwertberichtigung auf Forderungen": { + "account_number": "4923" + }, + "Ertr\u00e4ge aus abgeschriebenen Forderungen": { + "account_number": "4925" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung einer steuerlichen R\u00fccklage nach \u00a7 6b Abs. 3 EStG": { + "account_number": "4927" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung einer steuerlichen R\u00fccklage nach \u00a7 6b Abs. 10 EStG": { + "account_number": "4928" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung der R\u00fccklage f. Ersatzbeschaffung R 6.6 EStR": { + "account_number": "4929" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung von R\u00fcckstellungen": { + "account_number": "4930" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung einer steuerlichen R\u00fccklage (Existenzgr\u00fcnderr\u00fccklage)": { + "account_number": "4934" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung einer steuerlichen R\u00fccklage": { + "account_number": "4935" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung von steuerlichen R\u00fccklagen (Ansparabschreibungen)": { + "account_number": "4936" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung steuerrechtlicher Sonderabschreibungen": { + "account_number": "4937" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung einer steuerlichen R\u00fccklage nach \u00a7 4g EStG": { + "account_number": "4938" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung von steuerlichen R\u00fccklagen nach \u00a7 52 Abs. 16 EStG": { + "account_number": "4939" + }, + "Verrechnete sonstige Sachbez\u00fcge (Gruppe)": { + "is_group": 1, + "Verrechnete sonstige Sachbez\u00fcge (keine Waren)": { + "account_number": "4940" + }, + "Sachbez\u00fcge 7 % USt (Waren)": { + "account_number": "4941" + }, + "Sachbez\u00fcge 19 % USt (Waren)": { + "account_number": "4945" + }, + "Verrechnete sonstige Sachbez\u00fcge": { + "account_number": "4946" + }, + "Verrechnete sonstige Sachbez\u00fcge aus Kfz-Gestellung 19% USt": { + "account_number": "4947" + }, + "Verrechnete sonstige Sachbez\u00fcge 19% USt": { + "account_number": "4948" + }, + "Verrechnete sonstige Sachbez\u00fcge ohne Umsatzsteuer": { + "account_number": "4949" + } + }, + "Periodenfremde Ertr\u00e4ge (soweit nicht au\u00dferordentlich)": { + "account_number": "4960" + }, + "Versicherungsentsch\u00e4digungen und Schadenersatzleistungen": { + "account_number": "4970" + }, + "Erstattungen Aufwendungsausgleichsgesetz": { + "account_number": "4972" + }, + "Investitionszusch\u00fcsse (steuerpflichtig)": { + "account_number": "4975" + }, + "Investitionszulagen (steuerfrei)": { + "account_number": "4980" + }, + "Steuerfreie Ertr\u00e4ge aus der Aufl\u00f6sung von steuerlichen R\u00fccklagen": { + "account_number": "4981" + }, + "Sonstige steuerfreie Betriebseinnahmen": { + "account_number": "4982" + }, + "Ertr\u00e4ge aus der Aktivierung unentgeltlich erworbener VG": { + "account_number": "4987" + }, + "Kostenerstattungen, R\u00fcckverg\u00fctungen und Gutschriften f. fr\u00fchere Jahre": { + "account_number": "4989" + }, + "Ertr\u00e4ge aus Verwaltungskostenumlagen": { + "account_number": "4992" + }, + "Unentgeltliche Wertabgaben": { + "account_number": "4600" + }, + "Entnahme von Gegenst\u00e4nden ohne USt": { + "account_number": "4605" + }, + "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens 7 % USt (Gruppe)": { + "is_group": 1, + "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens 7 % USt": { + "account_number": "4630" + }, + "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens ohne USt": { + "account_number": "4637" + }, + "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternnehmens ohne USt (Telefon-Nutzung)": { + "account_number": "4638" + }, + "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens ohne USt (Kfz-Nutzung)": { + "account_number": "4639" + } + }, + "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens 19 % USt (Gruppe)": { + "is_group": 1, + "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens 19 % USt": { + "account_number": "4640" + }, + "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens 19 % USt (Kfz-Nutzung)": { + "account_number": "4645" + }, + "Verwendung von Gegenst\u00e4nden f. Zwecke au\u00dferhalb des Unternehmens 19 % USt (Telefon-Nutzung)": { + "account_number": "4646" + } + }, + "Unentgeltliche Erbringung einer sonstigen Leistung 7 % USt": { + "account_number": "4650" + }, + "Unentgeltliche Erbringung einer sonstigen Leistung ohne USt": { + "account_number": "4659" + }, + "Unentgeltliche Erbringung einer sonstigen Leistung 19 % USt": { + "account_number": "4660" + }, + "Unentgeltliche Zuwendung von Waren 7 % USt": { + "account_number": "4670" + }, + "Unentgeltliche Zuwendung von Waren ohne USt": { + "account_number": "4679" + }, + "Unentgeltliche Zuwendung von Waren 19 % USt": { + "account_number": "4680" + }, + "Unentgeltliche Zuwendung von Gegenst\u00e4nden 19 % USt": { + "account_number": "4686" + }, + "Unentgeltliche Zuwendung von Gegenst\u00e4nden ohne USt": { + "account_number": "4689" + }, + "Nicht steuerbare Ums\u00e4tze (Innenums\u00e4tze) (Gruppe)": { + "is_group": 1, + "Nicht steuerbare Ums\u00e4tze (Innenums\u00e4tze)": { + "account_number": "4690" + }, + "Umsatzsteuerverg\u00fctungen, z.B. nach \u00a7 24 UStG": { + "account_number": "4695" + } + }, + "Au\u00dferordentliche Ertr\u00e4ge (Gruppe)": { + "is_group": 1, + "Au\u00dferordentliche Ertr\u00e4ge": { + "account_number": "7400" + }, + "Au\u00dferordentliche Ertr\u00e4ge finanzwirksam": { + "account_number": "7401" + }, + "Au\u00dferordentliche Ertr\u00e4ge nicht finanzwirksam (Gruppe)": { + "is_group": 1, + "Au\u00dferordentliche Ertr\u00e4ge nicht finanzwirksam": { + "account_number": "7450" + }, + "Ertr\u00e4ge durch Verschmelzung und Umwandlung": { + "account_number": "7451" + }, + "Ertr\u00e4ge durch den Verkauf von bedeutenden Beteiligungen": { + "account_number": "7452" + }, + "Ert\u00e4ge durch den Verkauf von bedeutenden Grundst\u00fccken": { + "account_number": "7453" + }, + "Gewinn aus der Ver\u00e4u\u00dferung oder der Aufgabe von Gesch\u00e4ftsaktivit\u00e4ten nach Steuern": { + "account_number": "7454" + } + }, + "Au\u00dferordentliche Ertr\u00e4ge aus der Anwendung von \u00dcbergangsvorschriften (Gruppe)": { + "is_group": 1, + "Au\u00dferordentliche Ertr\u00e4ge aus der Anwendung von \u00dcbergangsvorschriften": { + "account_number": "7460" + }, + "Au\u00dferordentliche Ertr\u00e4ge: Zuschreibung f. Sachanlageverm\u00f6gen": { + "account_number": "7461" + }, + "Au\u00dferordentliche Ertr\u00e4ge: Zuschreibung f. Finanzanlageverm\u00f6gen": { + "account_number": "7462" + }, + "Au\u00dferordentliche Ertr\u00e4ge: Wertpapiere im Umlaufverm\u00f6gen": { + "account_number": "7463" + }, + "Au\u00dferordentliche Ertr\u00e4ge: latente Steuern": { + "account_number": "7464" + } + } + } + }, + "7 - sonstige betriebliche Aufwendungen": { + "root_type": "Expense", + "is_group": 1, + "Sonstige betriebliche Aufwendungen": { + "account_number": "6300" + }, + "Interimskonto f. Aufw. in einem anderen Land (Vorst.verg. m\u00f6glich)": { + "account_number": "6302" + }, + "Fremdleistungen/Fremdarbeiten": { + "account_number": "6303" + }, + "Sonstige Aufwendungen betrieblich und regelm\u00e4\u00dfig": { + "account_number": "6304" + }, + "Raumkosten": { + "account_number": "6305" + }, + "Miete (unbewegliche Wirtschaftsg\u00fcter)": { + "account_number": "6310" + }, + "Miete/Aufwendungen f. doppelte Haushaltsf\u00fchrung": { + "account_number": "6312" + }, + "Pacht (unbewegliche Wirtschaftsg\u00fcter)": { + "account_number": "6315" + }, + "Leasing (unbewegliche Wirtschaftsg\u00fcter)": { + "account_number": "6316" + }, + "Aufwendungen f. gemietete oder gepachtete unbewegliche Wirtschaftsg., die GewSt hinzuzurechnen sind": { + "account_number": "6317" + }, + "Miet- und Pachtnebenkosten (GewSt nicht zu ber\u00fccksichtigen)": { + "account_number": "6318" + }, + "Heizung": { + "account_number": "6320" + }, + "Gas, Strom, Wasser": { + "account_number": "6325" + }, + "Reinigung": { + "account_number": "6330" + }, + "Instandhaltung betrieblicher R\u00e4ume": { + "account_number": "6335" + }, + "Abgaben f. betrieblich genutzten Grundbesitz": { + "account_number": "6340" + }, + "Sonstige Raumkosten": { + "account_number": "6345" + }, + "Aufwendungen f. ein h\u00e4usliches Arbeitszimmer (abziehbarer Anteil)": { + "account_number": "6348" + }, + "Aufwendungen f. ein h\u00e4usliches Arbeitszimmer (nicht abziehbarer Anteil)": { + "account_number": "6349" + }, + "Grundst\u00fccksaufwendungen betrieblich": { + "account_number": "6350" + }, + "Grundst\u00fccksaufwendungen neutral": { + "account_number": "6352" + }, + "Zuwendungen, Spenden (Gruppe)": { + "is_group": 1, + "Zuwendungen, Spenden, steuerlich nicht abziehbar": { + "account_number": "6390" + }, + "Zuwendungen, Spenden f. wissenschaftliche und kulturelle Zwecke": { + "account_number": "6391" + }, + "Zuwendungen, Spenden f. mildt\u00e4tige Zwecke": { + "account_number": "6392" + }, + "Zuwendungen, Spenden f. kirchliche, religi\u00f6se und gemeinn\u00fctzige Zwecke": { + "account_number": "6393" + }, + "Zuwendungen, Spenden an politische Parteien": { + "account_number": "6394" + }, + "Zuwendungen, Spenden an Stiftungen f. gemeinn\u00fctzige Zwecke i. S. d. \u00a7 52 Abs. 2 Nr. 1-3 AO": { + "account_number": "6395" + }, + "Zuwendungen, Spenden an Stiftungen f. gemeinn\u00fctzige Zwecke i. S. d. \u00a7 52 Abs. 2 Nr. 4 AO": { + "account_number": "6396" + }, + "Zuwendungen, Spenden an Stiftungen f. kirchliche, religi\u00f6se und gemeinn\u00fctzige Zwecke": { + "account_number": "6397" + }, + "Zuwendungen, Spenden an Stiftungen f.wissenschaftliche, mildt\u00e4tige und kulturelle Zwecke": { + "account_number": "6398" + } + }, + "Versicherungen (Gruppe)": { + "is_group": 1, + "Versicherungen": { + "account_number": "6400" + }, + "Versicherungen f. Geb\u00e4ude, die zum Betriebsverm\u00f6gen geh\u00f6ren": { + "account_number": "6405" + }, + "Netto-Pr\u00e4mie f. R\u00fcckdeckung k\u00fcnftiger Versorgungsleistungen": { + "account_number": "6410" + }, + "Beitr\u00e4ge": { + "account_number": "6420" + }, + "Sonstige Abgaben": { + "account_number": "6430" + }, + "Steuerlich abzugsf\u00e4hige Versp\u00e4tungszuschl\u00e4ge und Zwangsgelder": { + "account_number": "6436" + }, + "Steuerlich nicht abzugsf\u00e4hige Versp\u00e4tungszuschl\u00e4ge und Zwangsgelder": { + "account_number": "6437" + }, + "Ausgleichsabgabe i. S. d. Schwerbehindertengesetzes": { + "account_number": "6440" + }, + "Reparaturen und Instandhaltung von Bauten": { + "account_number": "6450" + }, + "Reparaturen und Instandhaltung von technischenAnlagen und Maschinen": { + "account_number": "6460" + }, + "Reparaturen und Instandhaltung von anderen Anlagen und Betriebs- und Gesch\u00e4ftsausstattung": { + "account_number": "6470" + }, + "Zuf\u00fchrung zu Aufwandsr\u00fcckstellungen": { + "account_number": "6475" + }, + "Reparaturen und Instandhaltung von anderen Anlagen": { + "account_number": "6485" + }, + "Sonstige Reparaturen und Instandhaltungen": { + "account_number": "6490" + }, + "Wartungskosten f. Hard- und Software": { + "account_number": "6495" + }, + "Mietleasing (bewegliche Wirtschaftsg\u00fcter)": { + "account_number": "6498" + } + }, + "Fahrzeugkosten (Gruppe)": { + "is_group": 1, + "Fahrzeugkosten": { + "account_number": "6500" + }, + "Kfz-Versicherungen (Gruppe)": { + "is_group": 1, + "Kfz-Versicherungen": { + "account_number": "6520" + } + }, + "Laufende Kfz-Betriebskosten (Gruppe)": { + "is_group": 1, + "Laufende Kfz-Betriebskosten": { + "account_number": "6530" + } + }, + "Kfz-Reparaturen (Gruppe)": { + "is_group": 1, + "Kfz-Reparaturen": { + "account_number": "6540" + } + }, + "Garagenmiete (Gruppe)": { + "is_group": 1, + "Garagenmiete": { + "account_number": "6550" + } + }, + "Mietleasing Kfz (Gruppe)": { + "is_group": 1, + "Mietleasing Kfz": { + "account_number": "6560" + } + }, + "Sonstige Kfz-Kosten (Gruppe)": { + "is_group": 1, + "Sonstige Kfz-Kosten": { + "account_number": "6570" + } + }, + "Mautgeb\u00fchren (Gruppe)": { + "is_group": 1, + "Mautgeb\u00fchren": { + "account_number": "6580" + } + }, + "Kfz-Kosten f. betrieblich genutzte zum Privatverm\u00f6gen geh\u00f6rende Kraftfahrzeuge": { + "account_number": "6590" + }, + "Fremdfahrzeugkosten": { + "account_number": "6595" + } + }, + "Werbekosten (Gruppe)": { + "is_group": 1, + "Werbekosten": { + "account_number": "6600" + }, + "Streuartikel": { + "account_number": "6605" + }, + "Geschenke abzugsf\u00e4hig ohne \u00a7 37b EStG": { + "account_number": "6610" + }, + "Geschenke abzugsf\u00e4hig mit \u00a7 37b EStG": { + "account_number": "6611" + }, + "Pauschale Steuern f. Geschenke und Zugaben abzugsf\u00e4hig": { + "account_number": "6612" + }, + "Geschenke nicht abzugsf\u00e4hig ohne \u00a7 37b EStG": { + "account_number": "6620" + }, + "Geschenke nicht abzugsf\u00e4hig mit \u00a7 37b EStG": { + "account_number": "6621" + }, + "Pauschale Steuern f. Geschenke und Zuwendungen nicht abzugsf\u00e4hig": { + "account_number": "6622" + }, + "Geschenke ausschlie\u00dflich betrieblich genutzt": { + "account_number": "6625" + }, + "Zugaben mit \u00a7 37b EStG": { + "account_number": "6629" + }, + "Repr\u00e4sentationskosten": { + "account_number": "6630" + }, + "Bewirtungskosten": { + "account_number": "6640" + }, + "Sonstige eingeschr\u00e4nkt abziehbare Betriebsausgaben (abziehbarer Anteil)": { + "account_number": "6641" + }, + "Sonstige eingeschr\u00e4nkt abziehbare Betriebsausgaben (nicht abziehbarer Anteil)": { + "account_number": "6642" + }, + "Aufmerksamkeiten": { + "account_number": "6643" + }, + "Nicht abzugsf\u00e4hige Bewirtungskosten": { + "account_number": "6644" + }, + "Nicht abzugsf\u00e4hige Betriebsausgaben aus Werbe- und Repr\u00e4sentationskosten": { + "account_number": "6645" + }, + "Reisekosten Arbeitnehmer": { + "account_number": "6650" + }, + "Reisekosten Arbeitnehmer \u00dcbernachtungsaufwand": { + "account_number": "6660" + }, + "Reisekosten Arbeitnehmer Fahrtkosten": { + "account_number": "6663" + }, + "Reisekosten Arbeitnehmer Verpflegungsmehraufwand": { + "account_number": "6664" + }, + "Kilometergelderstattung Arbeitnehmer": { + "account_number": "6668" + }, + "Reisekosten Unternehmer (Gruppe)": { + "is_group": 1, + "Reisekosten Unternehmer": { + "account_number": "6670" + }, + "Reisekosten Unternehmer (nicht abziehbarer Anteil)": { + "account_number": "6672" + }, + "Reisekosten Unternehmer Fahrtkosten": { + "account_number": "6673" + }, + "Reisekosten Unternehmer Verpflegungsmehraufwand": { + "account_number": "6674" + }, + "Reisekosten Unternehmer \u00dcbernachtungsaufwand": { + "account_number": "6680" + } + }, + "Fahrten zwischen Wohnung und Betriebsst\u00e4tte und Familienheimfahrten (abziehbarer Anteil)": { + "account_number": "6688" + }, + "Fahrten zwischen Wohnung und Betriebsst\u00e4tte und Familienheimfahrten (nicht abziehbarer Anteil)": { + "account_number": "6689" + }, + "Fahrten zwischen Wohnung und Betriebsst\u00e4tte und Familienheimfahrten (Haben)": { + "account_number": "6690" + }, + "Verpflegungsmehraufwendungen i. R. d. doppelten Haushaltsf\u00fchrung (abziehbarer Anteil)": { + "account_number": "6691" + } + }, + "Kosten Warenabgabe (Gruppe)": { + "is_group": 1, + "Kosten Warenabgabe": { + "account_number": "6700" + }, + "Verpackungsmaterial": { + "account_number": "6710" + }, + "Ausgangsfrachten": { + "account_number": "6740" + }, + "Transportversicherungen": { + "account_number": "6760" + }, + "Verkaufsprovisionen": { + "account_number": "6770" + }, + "Fremdarbeiten (Vertrieb)": { + "account_number": "6780" + }, + "Aufwand f. Gew\u00e4hrleistungen": { + "account_number": "6790" + } + }, + "Porto": { + "account_number": "6800" + }, + "Telefon": { + "account_number": "6805" + }, + "Telefax und Internetkosten": { + "account_number": "6810" + }, + "B\u00fcrobedarf": { + "account_number": "6815" + }, + "Zeitschriften, B\u00fccher": { + "account_number": "6820" + }, + "Fortbildungskosten": { + "account_number": "6821" + }, + "Freiwillige Sozialleistungen": { + "account_number": "6822" + }, + "Rechts- und Beratungskosten": { + "account_number": "6825" + }, + "Abschluss- und Pr\u00fcfungskosten": { + "account_number": "6827" + }, + "Buchf\u00fchrungskosten": { + "account_number": "6830" + }, + "Mieten f. Einrichtungen (bewegliche Wirtschaftsg\u00fcter)": { + "account_number": "6835" + }, + "Pacht (bewegliche Wirtschaftsg\u00fcter)": { + "account_number": "6836" + }, + "Aufwendungen f. die zeitlich befristete \u00dcberlassung von Rechten (Lizenzen, Konzessionen)": { + "account_number": "6837" + }, + "Aufwendungen f. gemietete oder gepachtete bewegliche Wirtschaftsg., die gewerbest. hinzuzurechnen sind": { + "account_number": "6838" + }, + "Werkzeuge und Kleinger\u00e4te": { + "account_number": "6845" + }, + "Betriebsbedarf": { + "account_number": "6850" + }, + "Nebenkosten des Geldverkehrs": { + "account_number": "6855" + }, + "Aufwendungen aus Anteilen an inl\u00e4ndischen Kap.Ges.": { + "account_number": "6856" + }, + "Ver\u00e4u\u00dferungskosten \u00a7 3 Nr. 40 EStG/\u00a7 8b Abs. 2 KStG (inl. Kap.Ges.)": { + "account_number": "6857" + }, + "Aufwendungen f. Abraum- und Abfallbeseitigung": { + "account_number": "6859" + }, + "Nicht abziehbare Vorsteuer 19 %": { + "account_number": "6871" + }, + "Aufwendungen aus der W\u00e4hrungsumrechnung": { + "account_number": "6880" + }, + "Aufwendungen aus Bewertung Finanzmittelfonds": { + "account_number": "6883" + }, + "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen steuerfrei \u00a7 4 Nr. 1a UStG (bei Buchverlust)": { + "account_number": "6884" + }, + "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen 19 % USt (bei Buchverlust)": { + "account_number": "6885" + }, + "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen steuerfrei \u00a7 4 Nr. 1b UStG (bei Buchverlust)": { + "account_number": "6888" + }, + "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen (bei Buchverlust)": { + "account_number": "6889" + }, + "Erl\u00f6se aus Verk\u00e4ufen immaterieller VG (bei Buchverlust)": { + "account_number": "6890" + }, + "Erl\u00f6se aus Verk\u00e4ufen Finanzanlagen (bei Buchverlust)": { + "account_number": "6891" + }, + "Erl\u00f6se aus Verk\u00e4ufen Finanzanlagen (inl. Kap.Ges., bei Buchverlust)": { + "account_number": "6892" + }, + "Anlagenabg\u00e4nge Sachanlagen (Restbuchwert bei Buchverlust)": { + "account_number": "6895" + }, + "Anlagenabg\u00e4nge immaterielle VG (Restbuchwert bei Buchverlust)": { + "account_number": "6896" + }, + "Anlagenabg\u00e4nge Finanzanlagen (Restbuchwert bei Buchverlust)": { + "account_number": "6897" + }, + "Anlagenabg\u00e4nge Finanzanlagen (inl. Kap.Ges., Restbuchwert bei Buchverlust)": { + "account_number": "6898" + }, + "Verluste aus dem Abgang von Gegenst\u00e4nden des Anlageverm\u00f6gens": { + "account_number": "6900" + }, + "Verluste aus der Ver\u00e4u\u00dferung von Anteilen an Kap.Ges. (Finanzanlageverm\u00f6gen, inl. Kap.Ges.)": { + "account_number": "6903" + }, + "Verluste aus dem Abgang von Ggenst\u00e4nden des Umlaufverm. (au\u00dfer Vorr\u00e4te)": { + "account_number": "6905" + }, + "Verluste aus dem Abgang von Gegenst\u00e4nden des Umlaufverm. (au\u00dfer Vorr\u00e4te, inl. Kap.Ges.)": { + "account_number": "6906" + }, + "Abschreibungen auf Umlaufverm\u00f6gen au\u00dfer Vorr\u00e4te und Wertpapiere (\u00fcbliche H\u00f6he)": { + "account_number": "6910", + "account_type": "Round Off" + }, + "Abschreibungen auf Umlaufverm\u00f6gen, steuerrechtlich bedingt (\u00fcbliche H\u00f6he)": { + "account_number": "6912" + }, + "Einstellung in die Pauschalwertberichtigung auf Forderungen": { + "account_number": "6920" + }, + "Einstellungen in die steuerliche R\u00fccklage nach \u00a7 6b Abs. 3 EStG": { + "account_number": "6922" + }, + "Einstellung in die Einzelwertberichtigung auf Forderungen": { + "account_number": "6923" + }, + "Einstellungen in die steuerliche R\u00fccklage nach \u00a7 6b Abs. 10 EStG": { + "account_number": "6924" + }, + "Einstellungen in steuerliche R\u00fccklagen": { + "account_number": "6927" + }, + "Einstellungen in die R\u00fccklage f. Ersatzbeschaffung nach R 6.6 EStR": { + "account_number": "6928" + }, + "Einstellungen in die steuerliche R\u00fccklage nach \u00a7 4g EStG": { + "account_number": "6929" + }, + "Forderungsverluste (\u00fcbliche H\u00f6he) (Gruppe)": { + "is_group": 1, + "Forderungsverluste (\u00fcbliche H\u00f6he)": { + "account_number": "6930" + }, + "Forderungsverluste 7 % USt (\u00fcbliche H\u00f6he)": { + "account_number": "6931" + }, + "Forderungsverluste aus steuerfreien EU-Lieferungen (\u00fcbliche H\u00f6he)": { + "account_number": "6932" + }, + "Forderungsverluste aus im Inland steuerpfl. EU-Lieferungen 7 % USt (\u00fcbliche H\u00f6he)": { + "account_number": "6933" + }, + "Forderungsverluste aus im Inland steuerpfl. EU-Lieferungen 16 % USt (\u00fcbliche H\u00f6he)": { + "account_number": "6934" + }, + "Forderungsverluste 16% USt (\u00fcbliche H\u00f6he)": { + "account_number": "6935" + }, + "Forderungsverluste 19 % USt (\u00fcbliche H\u00f6he)": { + "account_number": "6936" + }, + "Forderungsverluste 15% USt (\u00fcbliche H\u00f6he)": { + "account_number": "6937" + }, + "Forderungsverluste aus im Inland steuerpfl. EU-Lieferungen 19 % USt (\u00fcbliche H\u00f6he)": { + "account_number": "6938" + }, + "Forderungsverluste aus im Inland steuerpfl. EU-Lieferungen 15% USt (\u00fcbliche H\u00f6he)": { + "account_number": "6939" + } + }, + "Periodenfremde Aufwendungen (soweit nicht au\u00dferordentlich)": { + "account_number": "6960" + }, + "Sonstige Aufwendungen betriebsfremd und regelm\u00e4\u00dfig": { + "account_number": "6967" + }, + "Sonstige Aufwendungen unregelm\u00e4\u00dfig": { + "account_number": "6969" + }, + "Au\u00dferordentliche Aufwendungen (Gruppe)": { + "is_group": 1, + "Au\u00dferordentliche Aufwendungen": { + "account_number": "7500" + }, + "Au\u00dferordentliche Aufwendungen finanzwirksam": { + "account_number": "7501" + }, + "Au\u00dferordentliche Aufwendungen nicht finanzwirksam": { + "account_number": "7550" + }, + "Verluste durch Verschmelzung und Umwandlung": { + "account_number": "7551" + }, + "Verluste durch au\u00dfergew\u00f6hnliche Schadensf\u00e4lle": { + "account_number": "7552" + }, + "Aufwendungen f. Restrukturierungs- und Sanierungsma\u00dfnahmen": { + "account_number": "7553" + }, + "Verluste aus Gesch\u00e4ftsaufgabe oder -ver\u00e4u\u00dferung nach Steuern": { + "account_number": "7554" + }, + "Au\u00dferordentliche Aufwendungen aus der Anwendung von \u00dcbergangsvorschriften (Gruppe)": { + "is_group": 1, + "Au\u00dferordentliche Aufwendungen aus der Anwendung von \u00dcbergangsvorschriften": { + "account_number": "7560" + }, + "Au\u00dferordentliche Aufwendungen aus der Anwendung von \u00dcbergangsvorschriften (Pensionsr\u00fcckst.)": { + "account_number": "7561" + }, + "Au\u00dferordentliche Aufwendungen aus der Anwendung von \u00dcbergangsvorschriften (Bilanzierungshilfen)": { + "account_number": "7562" + }, + "Au\u00dferordentliche Aufwendungen aus der Anwendung von \u00dcbergangsvorschriften (Latente Steuern)": { + "account_number": "7563" + } + } + } + }, + "8 - Ertr\u00e4ge aus Beteiligungen": { + "root_type": "Income", + "is_group": 1, + "Ertr\u00e4ge aus Beteiligungen": { + "account_number": "7000", + "account_type": "Income Account" + }, + "Ertr\u00e4ge aus Beteiligungen an Personengesellschaften (verb. Unternehmen), \u00a7 9 GewStG": { + "account_number": "7004" + }, + "Ertr\u00e4ge aus Anteilen an Kap.Ges. (inl\u00e4ndische Beteiligung)": { + "account_number": "7005" + }, + "Ertr\u00e4ge aus Anteilen an Kap.Ges. (inl\u00e4ndische verb. Unternehmen)": { + "account_number": "7006" + }, + "Sonstige GewSt-freie Gewinne aus Anteilen an einer Kap.Ges. (K\u00fcrzung gem. \u00a7 9 Nr. 2a GewStG)": { + "account_number": "7007" + }, + "Gewinnanteile aus Mitunternehmerschaften \u00a7 9 GewStG": { + "account_number": "7008" + }, + "Ertr\u00e4ge aus Beteiligungen an verbundenen Unternehmen": { + "account_number": "7009" + }, + "Zins- und Dividendenertr\u00e4ge": { + "account_number": "7020" + }, + "Erhaltene Ausgleichszahlungen (als au\u00dfenstehender Aktion\u00e4r)": { + "account_number": "7030" + } + }, + "9 - Ertr\u00e4ge aus anderen Wertpapieren und Ausleihungen des Finanzanlageverm\u00f6gens": { + "root_type": "Income", + "is_group": 1, + "Ertr\u00e4ge aus anderen Wertpapieren und Ausleihungen des Finanzanlageverm\u00f6gens": { + "account_number": "7010", + "account_type": "Income Account" + }, + "Ertr\u00e4ge aus Ausleihungen des Finanzanlageverm\u00f6gens": { + "account_number": "7011" + }, + "Ertr\u00e4ge aus Ausleihungen des Finanzanlageverm\u00f6gens an verbundenen Unternehmen": { + "account_number": "7012" + }, + "Ertr\u00e4ge aus Anteilen an Personengesellschaften (Finanzanlageverm\u00f6gen)": { + "account_number": "7013" + }, + "Ertr\u00e4ge aus Anteilen an Kap.Ges. (Finanzanlageverm\u00f6gen, inl\u00e4ndische Kap.Ges.)": { + "account_number": "7014" + }, + "Ertr\u00e4ge aus Anteilen an Personengesellschaften (verb. Unternehmen)": { + "account_number": "7016" + }, + "Ertr\u00e4ge aus anderen Wertpapieren des Finanzanlageverm. an Kap.Ges. (verb. Unternehmen)": { + "account_number": "7017" + }, + "Ertr\u00e4ge aus anderen Wertpapieren des Finanzanlageverm. an Pers.Ges. (verb. Unternehmen)": { + "account_number": "7018" + }, + "Ertr\u00e4ge aus anderen Wertpapieren und Ausleihungen des Finanzanlageverm. aus verbundenen Unternehmen": { + "account_number": "7019" + } + }, + "10 - sonstige Zinsen und \u00e4hnliche Ertr\u00e4ge": { + "root_type": "Income", + "is_group": 1, + "davon aus verbundenen Unternehmen": { + "is_group": 1, + "Diskontertr\u00e4ge aus verbundenen Unternehmen": { + "account_number": "7139" + }, + "Sonstige Zinsen und \u00e4hnliche Ertr\u00e4ge aus verbundenen Unternehmen": { + "account_number": "7109" + }, + "Sonstige Zinsertr\u00e4ge aus verbundenen Unternehmen": { + "account_number": "7119", + "account_type": "Income Account" + }, + "Zins\u00e4hnliche Ertr\u00e4ge aus verbundenen Unternehmen": { + "account_number": "7129" + } + }, + "Sonstige Zinsen und \u00e4hnliche Ertr\u00e4ge": { + "account_number": "7100", + "account_type": "Income Account" + }, + "Ertr\u00e4ge aus Anteilen an Kap.Ges. (Umlaufverm\u00f6gen, inl\u00e4ndische Kap.Ges.)": { + "account_number": "7103" + }, + "Zinsertr\u00e4ge \u00a7 233a AO steuerpflichtig": { + "account_number": "7105" + }, + "Zinsertr\u00e4ge \u00a7 233a AO, \u00a7 4 Abs. 5b EStG, steuerfrei": { + "account_number": "7107" + }, + "Sonstige Zinsertr\u00e4ge": { + "account_number": "7110" + }, + "Ertr\u00e4ge aus anderen Wertpapieren und Ausleihungen des Umlaufverm.": { + "account_number": "7115" + }, + "Zins\u00e4hnliche Ertr\u00e4ge": { + "account_number": "7120" + }, + "Diskontertr\u00e4ge": { + "account_number": "7130" + }, + "Zinsertr\u00e4ge aus der Abzinsung von Verb.": { + "account_number": "7141" + }, + "Zinsertr\u00e4ge aus der Abzinsung von R\u00fcckstellungen": { + "account_number": "7142" + }, + "Zinsertr\u00e4ge aus der Abzinsung von Pensionsr\u00fcckst. und \u00e4hnl./vergleichb. Verplicht.": { + "account_number": "7143" + }, + "Zinsertr\u00e4ge aus der Abzinsung von Pensionsr\u00fcckst. und \u00e4hnl. Verplicht. zur Verrechnung": { + "account_number": "7144" + }, + "Erhaltene Gewinne auf Grund einer Gewinngemeinschaft": { + "account_number": "7192" + }, + "Erhaltene Gewinne auf Grund einer Gewinn- oder Teilgewinnabf\u00fchrungsvertrags": { + "account_number": "7194" + } + }, + "11 - Abschreibungen auf Finanzanlagen und auf Wertpapiere des Umlaufverm.": { + "root_type": "Expense", + "is_group": 1, + "Abschreibungen auf Finanzanlagen (dauerhaft)": { + "account_number": "7200", + "account_type": "Depreciation" + }, + "Abschreibungen auf Finanzanlagen (nicht dauerhaft)": { + "account_number": "7201" + }, + "Abschreibungen auf Finanzanlagen \u00a7 3 Nr. 40 EStG / \u00a7 8b Abs. 3 KStG (inl. Kap.Ges., dauerh.)": { + "account_number": "7204" + }, + "Abschreibungen auf Finanzanlagen - verb. Unternehmen": { + "account_number": "7207" + }, + "Aufwendungen auf Grund von Verlustanteilen an Mitunternehmerschaften \u00a7 8 GewStG": { + "account_number": "7208" + }, + "Abschreibungen auf Wertpapiere des Umlaufverm. (Gruppe)": { + "is_group": 1, + "Abschreibungen auf Wertpapiere des Umlaufverm.": { + "account_number": "7210" + }, + "Abschreibungen auf Wertpapiere des Umlaufverm. \u00a73Nr.40EStG/\u00a78bAbs.3KStG (inl. Kap.Ges.)": { + "account_number": "7214" + }, + "Abschreibungen auf Wertpapiere des Umlaufverm. - verb. Unternehmen": { + "account_number": "7217" + } + }, + "Abschreibungen auf Finanzanlagen auf Grund \u00a7 6b EStG-R\u00fccklage": { + "account_number": "7250" + }, + "Abschreibungen auf Finanzanlagen auf Grund \u00a7 3Nr.40EStG/\u00a78bAbs.3KStG (inl. Kap.Ges.)": { + "account_number": "7255" + } + }, + "12- Zinsen und \u00e4hnliche Aufwendungen": { + "root_type": "Expense", + "is_group": 1, + "davon an verb. Unternehmen": { + "is_group": 1, + "Zinsen und \u00e4hnliche Aufwendungen an verb. Unternehmen (inl. Kap.Ges.)": { + "account_number": "7351" + }, + "Zinsen und \u00e4hnliche Aufwendungen an verb. Unternehmen": { + "account_number": "7309" + }, + "Zinsaufwendungen f. kurzfistige Verb. an verb. Unternehmen": { + "account_number": "7319" + }, + "Zinsaufwendungen f. langfristigeVerb. an verb. Unternehmen": { + "account_number": "7329" + }, + "Diskontaufwendungen an verb. Unternehmen": { + "account_number": "7349" + } + }, + "Zinsen und \u00e4hnliche Aufwendungen": { + "account_number": "7300" + }, + "Steuerlich nicht abzugsf\u00e4hige andere Nebenleistungen zu Steuern \u00a7 4 Abs. 5b EStG": { + "account_number": "7302" + }, + "Steuerlich abzugsf\u00e4hige, andere Nebenleistungen zu Steuern": { + "account_number": "7303" + }, + "Steuerlich nicht abzugsf\u00e4hige, andere Nebenleistungen zu Steuern": { + "account_number": "7304" + }, + "Zinsaufwendungen \u00a7 233a AO betriebliche Steuern": { + "account_number": "7305" + }, + "Zinsaufwendungen \u00a7\u00a7 233a bis 237 AO Personensteuern": { + "account_number": "7306" + }, + "Zinsaufwendungen \u00a7 233a AO, \u00a7 4 Abs. 5b EStG": { + "account_number": "7308" + }, + "Zinsaufwendungen f. kurzfristige Verb.": { + "account_number": "7310" + }, + "Nicht abzugsf\u00e4hige Schuldzinsen gem\u00e4\u00df \u00a7 4 Abs. 4a EStG (Hinzurechnungsbetrag)": { + "account_number": "7313" + }, + "Zinsen auf Kontokorrentkonten": { + "account_number": "7318" + }, + "Zinsaufwendungen f. langfristige Verb.": { + "account_number": "7320" + }, + "Abschreibungen auf Disagio/Damnum zur Finanzierung": { + "account_number": "7323" + }, + "Abschreibungen auf Disagio/Damnum zur Finanzierung des Anlageverm\u00f6gens": { + "account_number": "7324" + }, + "Zinsaufwendungen f. Geb\u00e4ude, die zum Betriebsverm\u00f6gen geh\u00f6ren": { + "account_number": "7325" + }, + "Zinsen zur Finanzierung des Anlageverm\u00f6gens": { + "account_number": "7326" + }, + "Renten und dauernde Lasten": { + "account_number": "7327" + }, + "Zins\u00e4hnliche Aufwendungen": { + "account_number": "7330" + }, + "Diskontaufwendungen": { + "account_number": "7340" + }, + "Zinsen und \u00e4hnl. Aufwendungen \u00a7\u00a73Nr.40,3cEStG/\u00a78bAbs.1KStG (inl. Kap.Ges.)": { + "account_number": "7350" + }, + "Kreditprovisionen und Verwaltungskostenbeitr\u00e4ge": { + "account_number": "7355" + }, + "Zinsanteil der Zuf\u00fchrungen zu Pensionsr\u00fcckst.": { + "account_number": "7360" + }, + "Zinsaufwendungen aus der Abzinsung von Verb.": { + "account_number": "7361" + }, + "Zinsaufwendungen aus der Abzinsung von R\u00fcckstellungen": { + "account_number": "7362" + }, + "Zinsaufwendungen aus der Abzinsung von Pensionsr\u00fcckst. und \u00e4hnl. Verplicht.": { + "account_number": "7363" + }, + "Zinsaufwendungen aus der Abzinsung von Pensionsr\u00fcckst. und \u00e4hnl. Verplicht. zur Verrechnung": { + "account_number": "7364" + }, + "Aufwendungen aus Verlust\u00fcbernahme": { + "account_number": "7390" + } + }, + "13 - Steuern vom Einkommen und vom Ertrag": { + "root_type": "Expense", + "is_group": 1, + "K\u00f6rperschaftsteuer": { + "account_number": "7600", + "account_type": "Tax" + }, + "Gewerbesteuer": { + "account_number": "7610", + "account_type": "Tax" + }, + "Kapitalertragsteuer 25 %": { + "account_number": "7630" + }, + "Anrechenbarer Solidarit\u00e4tszuschlag auf Kapitalertragsteuer 25 %": { + "account_number": "7633" + }, + "Anzurechnende ausl\u00e4ndische Quellensteuer": { + "account_number": "7639" + }, + "Gewerbesteuernachzahlungen Vorjahre": { + "account_number": "7640" + }, + "Gewerbesteuernachzahlungen und Gewerbesteuererstattungen f. Vorjahre, \u00a7 4 Abs. 5b EStG": { + "account_number": "7641" + }, + "Gewerbesteuererstattungen Vorjahre": { + "account_number": "7642" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung von Gewerbesteuerr\u00fcckstellungen, \u00a7 4 Abs. 5b EStG": { + "account_number": "7643" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung von Gewerbesteuerr\u00fcckstellungen": { + "account_number": "7644" + }, + "Aufwendungen aus der Zuf\u00fchrung und Aufl\u00f6sung von latenten Steuern": { + "account_number": "7645" + }, + "Ertr\u00e4ge aus der Zuf\u00fchrung und Aufl\u00f6sung von latenten Steuern": { + "account_number": "7649" + } + }, + "15 - sonstige Steuern": { + "root_type": "Expense", + "is_group": 1, + "Verbrauchsteuer": { + "account_number": "7675" + }, + "\u00d6kosteuer": { + "account_number": "7678" + }, + "Grundsteuer": { + "account_number": "7680" + }, + "Kfz-Steuer": { + "account_number": "7685" + }, + "Steuernachzahlungen Vorjahre f. sonstige Steuern": { + "account_number": "7690" + }, + "Steuererstattungen Vorjahre f. sonstige Steuern": { + "account_number": "7692" + }, + "Ertr\u00e4ge aus der Aufl\u00f6sung von R\u00fcckstellungen f. sonstige Steuern": { + "account_number": "7694" + } + }, + "Debitoren": { + "root_type": "Asset", + "is_group": 1 + }, + "Kreditoren": { + "root_type": "Liability", + "is_group": 1, + "Wareneingangs-­Verrechnungskonto" : { + "account_number": "70001", + "account_type": "Stock Received But Not Billed" + } + } + } +} diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/id_chart_of_accounts.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/id_chart_of_accounts.json index 37f57ec1ad9..d1a0defba94 100644 --- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/id_chart_of_accounts.json +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/id_chart_of_accounts.json @@ -38,24 +38,24 @@ "Kas": { "Kas Mata Uang Lain": { "Kas USD": { - "account_number": "1112.0010", + "account_number": "1112.001", "account_type": "Cash" }, "account_number": "1112.000" }, "Kas Rupiah": { "Kas Besar": { - "account_number": "1111.0020", + "account_number": "1111.002", "account_type": "Cash" }, "Kas Kecil": { - "account_number": "1111.0010", + "account_number": "1111.001", "account_type": "Cash" }, "account_number": "1111.000", "account_type": "Cash" }, - "account_number": "1110.0000" + "account_number": "1110.000" }, "Pendapatan Yang Akan di Terima": { "Pendapatan Yang di Terima": { @@ -98,7 +98,7 @@ }, "account_number": "1130.000" }, - "account_number": "1100.0000" + "account_number": "1100.000" }, "Aktiva Tetap": { "Aktiva": { @@ -121,20 +121,20 @@ "Investasi": { "Investasi": { "Deposito": { - "account_number": "1231.003", + "account_number": "1231.300", "is_group": 1 }, - "Investai Saham": { + "Investasi Saham": { "Investasi Saham": { - "account_number": "1231.0011" + "account_number": "1231.101" }, - "account_number": "1231.001" + "account_number": "1231.100" }, "Investasi Perumahan": { "Investasi Perumahan": { - "account_number": "1231.0021" + "account_number": "1231.201" }, - "account_number": "1231.002" + "account_number": "1231.200" }, "account_number": "1231.000" }, @@ -142,7 +142,7 @@ }, "account_number": "1200.000" }, - "account_number": "1000.0000", + "account_number": "1000.000", "root_type": "Asset" }, "Beban": { @@ -684,4 +684,4 @@ "root_type": "Income" } } -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json index 1fc226575f3..5ace0dc6fe6 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json @@ -1,717 +1,769 @@ { - "allow_copy": 0, - "allow_events_in_timeline": 0, - "allow_guest_to_view": 0, - "allow_import": 0, - "allow_rename": 0, - "beta": 0, - "creation": "2013-06-24 15:49:57", - "custom": 0, - "description": "Settings for Accounts", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Other", - "editable_grid": 1, - "engine": "InnoDB", + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 0, + "beta": 0, + "creation": "2013-06-24 15:49:57", + "custom": 0, + "description": "Settings for Accounts", + "docstatus": 0, + "doctype": "DocType", + "document_type": "Other", + "editable_grid": 1, + "engine": "InnoDB", "fields": [ { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "1", - "description": "If enabled, the system will post accounting entries for inventory automatically.", - "fieldname": "auto_accounting_for_stock", - "fieldtype": "Check", - "hidden": 1, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Make Accounting Entry For Every Stock Movement", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "1", + "description": "If enabled, the system will post accounting entries for inventory automatically.", + "fetch_if_empty": 0, + "fieldname": "auto_accounting_for_stock", + "fieldtype": "Check", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Make Accounting Entry For Every Stock Movement", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "description": "Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.", - "fieldname": "acc_frozen_upto", - "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Accounts Frozen Upto", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "description": "Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.", + "fetch_if_empty": 0, + "fieldname": "acc_frozen_upto", + "fieldtype": "Date", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Accounts Frozen Upto", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "description": "Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts", - "fieldname": "frozen_accounts_modifier", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Role Allowed to Set Frozen Accounts & Edit Frozen Entries", - "length": 0, - "no_copy": 0, - "options": "Role", - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "description": "Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts", + "fetch_if_empty": 0, + "fieldname": "frozen_accounts_modifier", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Role Allowed to Set Frozen Accounts & Edit Frozen Entries", + "length": 0, + "no_copy": 0, + "options": "Role", + "permlevel": 0, + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "column_break_4", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fetch_if_empty": 0, + "fieldname": "column_break_4", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "description": "Role that is allowed to submit transactions that exceed credit limits set.", - "fieldname": "credit_controller", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Credit Controller", - "length": 0, - "no_copy": 0, - "options": "Role", - "permlevel": 0, - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "description": "Role that is allowed to submit transactions that exceed credit limits set.", + "fetch_if_empty": 0, + "fieldname": "credit_controller", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Credit Controller", + "length": 0, + "no_copy": 0, + "options": "Role", + "permlevel": 0, + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "check_supplier_invoice_uniqueness", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Check Supplier Invoice Number Uniqueness", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fetch_if_empty": 0, + "fieldname": "check_supplier_invoice_uniqueness", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Check Supplier Invoice Number Uniqueness", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "make_payment_via_journal_entry", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Make Payment via Journal Entry", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fetch_if_empty": 0, + "fieldname": "make_payment_via_journal_entry", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Make Payment via Journal Entry", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "1", - "fieldname": "unlink_payment_on_cancellation_of_invoice", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Unlink Payment on Cancellation of Invoice", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "1", + "fetch_if_empty": 0, + "fieldname": "unlink_payment_on_cancellation_of_invoice", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Unlink Payment on Cancellation of Invoice", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "1", - "fieldname": "book_asset_depreciation_entry_automatically", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Book Asset Depreciation Entry Automatically", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "1", + "fetch_if_empty": 0, + "fieldname": "book_asset_depreciation_entry_automatically", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Book Asset Depreciation Entry Automatically", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "allow_cost_center_in_entry_of_bs_account", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Allow Cost Center In Entry of Balance Sheet Account", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fetch_if_empty": 0, + "fieldname": "allow_cost_center_in_entry_of_bs_account", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Allow Cost Center In Entry of Balance Sheet Account", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "print_settings", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Print Settings", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fetch_if_empty": 0, + "fieldname": "automatically_fetch_payment_terms", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Automatically Fetch Payment Terms", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "show_inclusive_tax_in_print", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Show Inclusive Tax In Print", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fetch_if_empty": 0, + "fieldname": "print_settings", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Print Settings", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "column_break_12", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fetch_if_empty": 0, + "fieldname": "show_inclusive_tax_in_print", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Show Inclusive Tax In Print", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "show_payment_schedule_in_print", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Show Payment Schedule in Print", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fetch_if_empty": 0, + "fieldname": "column_break_12", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "currency_exchange_section", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Currency Exchange Settings", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fetch_if_empty": 0, + "fieldname": "show_payment_schedule_in_print", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Show Payment Schedule in Print", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "1", - "fieldname": "allow_stale", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Allow Stale Exchange Rates", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fetch_if_empty": 0, + "fieldname": "currency_exchange_section", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Currency Exchange Settings", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "1", - "depends_on": "eval:doc.allow_stale==0", - "fieldname": "stale_days", - "fieldtype": "Int", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Stale Days", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "1", + "fetch_if_empty": 0, + "fieldname": "allow_stale", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Allow Stale Exchange Rates", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "report_settings_sb", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Report Settings", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "1", + "depends_on": "eval:doc.allow_stale==0", + "fetch_if_empty": 0, + "fieldname": "stale_days", + "fieldtype": "Int", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Stale Days", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "0", - "description": "Only select if you have setup Cash Flow Mapper documents", - "fieldname": "use_custom_cash_flow", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Use Custom Cash Flow Format", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fetch_if_empty": 0, + "fieldname": "report_settings_sb", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Report Settings", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "0", + "description": "Only select if you have setup Cash Flow Mapper documents", + "fetch_if_empty": 0, + "fieldname": "use_custom_cash_flow", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Use Custom Cash Flow Format", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, "unique": 0 } - ], - "has_web_view": 0, - "hide_heading": 0, - "hide_toolbar": 0, - "icon": "icon-cog", - "idx": 1, - "image_view": 0, - "in_create": 0, - "is_submittable": 0, - "issingle": 1, - "istable": 0, - "max_attachments": 0, - "modified": "2019-01-07 16:52:03.869199", - "modified_by": "Administrator", - "module": "Accounts", - "name": "Accounts Settings", - "owner": "Administrator", + ], + "has_web_view": 0, + "hide_heading": 0, + "hide_toolbar": 0, + "icon": "icon-cog", + "idx": 1, + "image_view": 0, + "in_create": 0, + "is_submittable": 0, + "issingle": 1, + "istable": 0, + "max_attachments": 0, + "modified": "2019-04-17 05:58:23.012494", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Accounts Settings", + "owner": "Administrator", "permissions": [ { - "amend": 0, - "cancel": 0, - "create": 1, - "delete": 0, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 0, - "role": "Accounts Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 0, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 0, + "role": "Accounts Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 0, "write": 1 - }, + }, { - "amend": 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": "Sales User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 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": "Sales User", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 - }, + }, { - "amend": 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": "Purchase User", - "set_user_permissions": 0, - "share": 0, - "submit": 0, + "amend": 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": "Purchase User", + "set_user_permissions": 0, + "share": 0, + "submit": 0, "write": 0 } - ], - "quick_entry": 1, - "read_only": 0, - "read_only_onload": 0, - "show_name_in_global_search": 0, - "sort_order": "ASC", - "track_changes": 1, - "track_seen": 0, + ], + "quick_entry": 1, + "read_only": 0, + "read_only_onload": 0, + "show_name_in_global_search": 0, + "sort_order": "ASC", + "track_changes": 1, + "track_seen": 0, "track_views": 0 } \ No newline at end of file diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py index d8b5f00f6ee..0050ffc9df2 100644 --- a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py +++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py @@ -6,6 +6,7 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document from frappe.utils import flt +from six.moves import reduce class BankTransaction(Document): def after_insert(self): diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py b/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py index d5d8c0e0465..ccee269bced 100644 --- a/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py +++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction_upload.py @@ -7,6 +7,7 @@ import frappe import json from frappe.utils import getdate from frappe.utils.dateutils import parse_date +from six import iteritems @frappe.whitelist() def upload_bank_statement(): @@ -17,11 +18,11 @@ def upload_bank_statement(): from frappe.utils.file_manager import get_uploaded_content fname, fcontent = get_uploaded_content() - if frappe.safe_encode(fname).lower().endswith("csv"): + if frappe.safe_encode(fname).lower().endswith("csv".encode('utf-8')): from frappe.utils.csvutils import read_csv_content rows = read_csv_content(fcontent, False) - elif frappe.safe_encode(fname).lower().endswith("xlsx"): + elif frappe.safe_encode(fname).lower().endswith("xlsx".encode('utf-8')): from frappe.utils.xlsxutils import read_xlsx_file_from_attached_file rows = read_xlsx_file_from_attached_file(fcontent=fcontent) @@ -40,19 +41,23 @@ def create_bank_entries(columns, data, bank_account): if all(item is None for item in d) is True: continue fields = {} - for key, value in header_map.iteritems(): + for key, value in iteritems(header_map): fields.update({key: d[int(value)-1]}) - bank_transaction = frappe.get_doc({ - "doctype": "Bank Transaction" - }) - bank_transaction.update(fields) - bank_transaction.date = getdate(parse_date(bank_transaction.date)) - bank_transaction.bank_account = bank_account - bank_transaction.insert() - bank_transaction.submit() - count = count + 1 + try: + bank_transaction = frappe.get_doc({ + "doctype": "Bank Transaction" + }) + bank_transaction.update(fields) + bank_transaction.date = getdate(parse_date(bank_transaction.date)) + bank_transaction.bank_account = bank_account + bank_transaction.insert() + bank_transaction.submit() + count = count + 1 + except Exception as e: + frappe.throw(e) + frappe.log_error(frappe.get_traceback()) return count diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json index d798fd5fdc6..885f2c8926c 100755 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json @@ -3511,6 +3511,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "clearance_date", "fieldtype": "Date", "hidden": 1, @@ -3543,6 +3544,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "col_br_payments", "fieldtype": "Column Break", "hidden": 0, @@ -3880,7 +3882,7 @@ "bold": 0, "collapsible": 0, "columns": 0, - "default": "1", + "default": "", "fetch_if_empty": 0, "fieldname": "allocate_advances_automatically", "fieldtype": "Check", @@ -4901,7 +4903,7 @@ "istable": 0, "max_attachments": 0, "menu_index": 0, - "modified": "2019-04-11 16:08:22.288425", + "modified": "2019-04-22 12:45:49.728359", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice", @@ -5016,4 +5018,4 @@ "track_changes": 1, "track_seen": 0, "track_views": 0 -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index 0399cf95839..1ac69b3a180 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -356,6 +356,7 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte set_pos_data: function() { if(this.frm.doc.is_pos) { + this.frm.set_value("allocate_advances_automatically", this.frm.doc.is_pos ? 0 : 1); if(!this.frm.doc.company) { this.frm.set_value("is_pos", 0); frappe.msgprint(__("Please specify Company to proceed")); diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index 7f7e6f981a9..12ae9aae7b0 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -3630,7 +3630,7 @@ "bold": 0, "collapsible": 0, "columns": 0, - "default": "1", + "default": "", "fetch_if_empty": 0, "fieldname": "allocate_advances_automatically", "fieldtype": "Check", @@ -5816,7 +5816,7 @@ "istable": 0, "max_attachments": 0, "menu_index": 0, - "modified": "2019-04-10 16:10:34.266458", + "modified": "2019-04-22 12:45:41.109345", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice", diff --git a/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js b/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js index 5cb4bba6a55..c64e28fc218 100644 --- a/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js +++ b/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js @@ -32,7 +32,6 @@ erpnext.accounts.bankReconciliation = class BankReconciliation { fieldname: 'company', options: "Company", onchange: function() { - console.log(this.value) if (this.value) { me.company = this.value; } else { diff --git a/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.py b/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.py index e39cf9ea950..e2d6b58766b 100644 --- a/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.py +++ b/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.py @@ -33,10 +33,12 @@ def reconcile(bank_transaction, payment_doctype, payment_name): return 'reconciled' def add_payment_to_transaction(transaction, payment_entry, gl_entry): + gl_amount, transaction_amount = (gl_entry.credit, transaction.debit) if gl_entry.credit > 0 else (gl_entry.debit, transaction.credit) + allocated_amount = gl_amount if gl_amount <= transaction_amount else transaction_amount transaction.append("payment_entries", { "payment_document": payment_entry.doctype, "payment_entry": payment_entry.name, - "allocated_amount": gl_entry.credit if gl_entry.credit > 0 else gl_entry.debit + "allocated_amount": allocated_amount }) transaction.save() @@ -83,7 +85,7 @@ def get_linked_payments(bank_transaction): amount_matching = check_matching_amount(bank_account[0].account, bank_account[0].company, transaction) # Get some data from payment entries linked to a corresponding bank transaction - description_matching = get_matching_descriptions_data(bank_account[0].account, transaction) + description_matching = get_matching_descriptions_data(bank_account[0].company, transaction) if amount_matching: return check_amount_vs_description(amount_matching, description_matching) @@ -207,7 +209,7 @@ def check_matching_amount(bank_account, company, transaction): return payments -def get_matching_descriptions_data(bank_account, transaction): +def get_matching_descriptions_data(company, transaction): if not transaction.description : return [] @@ -243,17 +245,23 @@ def get_matching_descriptions_data(bank_account, transaction): data = [] + company_currency = get_company_currency(company) for key, value in iteritems(links): if key == "Payment Entry": - data.extend(frappe.get_all("Payment Entry", filters=[["name", "in", value]], fields=["'Payment Entry' as doctype", "posting_date", "party", "reference_no", "reference_date", "paid_amount"])) + data.extend(frappe.get_all("Payment Entry", filters=[["name", "in", value]], fields=["'Payment Entry' as doctype", "posting_date", "party", "reference_no", "reference_date", "paid_amount", "paid_to_account_currency as currency"])) if key == "Journal Entry": - data.extend(frappe.get_all("Journal Entry", filters=[["name", "in", value]], fields=["'Journal Entry' as doctype", "posting_date", "paid_to_recd_from as party", "cheque_no as reference_no", "cheque_date as reference_date"])) + journal_entries = frappe.get_all("Journal Entry", filters=[["name", "in", value]], fields=["name", "'Journal Entry' as doctype", "posting_date", "paid_to_recd_from as party", "cheque_no as reference_no", "cheque_date as reference_date", "total_credit as paid_amount"]) + for journal_entry in journal_entries: + journal_entry_accounts = frappe.get_all("Journal Entry Account", filters={"parenttype": journal_entry["doctype"], "parent": journal_entry["name"]}, fields=["account_currency"]) + journal_entry["currency"] = journal_entry_accounts[0]["account_currency"] if journal_entry_accounts else company_currency + data.extend(journal_entries) if key == "Sales Invoice": - data.extend(frappe.get_all("Sales Invoice", filters=[["name", "in", value]], fields=["'Sales Invoice' as doctype", "posting_date", "customer_name as party"])) + data.extend(frappe.get_all("Sales Invoice", filters=[["name", "in", value]], fields=["'Sales Invoice' as doctype", "posting_date", "customer_name as party", "paid_amount", "currency"])) if key == "Purchase Invoice": - data.append(frappe.get_all("Purchase Invoice", filters=[["name", "in", value]], fields=["'Purchase Invoice' as doctype", "posting_date", "supplier_name as party"])) - if key == "Purchase Invoice": - data.append(frappe.get_all("Expense Claim", filters=[["name", "in", value]], fields=["'Expense Claim' as doctype", "posting_date", "employee_name as party"])) + data.extend(frappe.get_all("Purchase Invoice", filters=[["name", "in", value]], fields=["'Purchase Invoice' as doctype", "posting_date", "supplier_name as party", "paid_amount", "currency"])) + if key == "Expense Claim": + expense_claims = frappe.get_all("Expense Claim", filters=[["name", "in", value]], fields=["'Expense Claim' as doctype", "posting_date", "employee_name as party", "total_amount_reimbursed as paid_amount"]) + data.extend([dict(x,**{"currency": company_currency}) for x in expense_claims]) return data @@ -268,8 +276,8 @@ def check_amount_vs_description(amount_matching, description_matching): result.append(am_match) continue - if hasattr(am_match, "reference_no") and hasattr(des_match, "reference_no"): - if difflib.SequenceMatcher(lambda x: x == " ", am_match["reference_no"], des_match["reference_no"]) > 70: + if "reference_no" in am_match and "reference_no" in des_match: + if difflib.SequenceMatcher(lambda x: x == " ", am_match["reference_no"], des_match["reference_no"]).ratio() > 70: if am_match not in result: result.append(am_match) if result: diff --git a/erpnext/accounts/print_format/credit_note/credit_note.json b/erpnext/accounts/print_format/credit_note/credit_note.json index 863d4aa6073..c5a11cf3958 100644 --- a/erpnext/accounts/print_format/credit_note/credit_note.json +++ b/erpnext/accounts/print_format/credit_note/credit_note.json @@ -1,19 +1,23 @@ { - "creation": "2014-08-28 11:11:39.796473", - "custom_format": 0, - "disabled": 0, - "doc_type": "Journal Entry", - "docstatus": 0, - "doctype": "Print Format", - "html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n\n
\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Credit Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Credit To\"), doc.pay_to_recd_from),\n (_(\"Date\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Amount\"), \"\" + doc.get_formatted(\"total_amount\") + \"
\" + (doc.total_amount_in_words or \"\") + \"
\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n\n
\n
\n
{{ value }}
\n
\n\n {%- endfor -%}\n\n
\n
\n

\n {{ _(\"For\") }} {{ doc.company }},
\n
\n
\n
\n {{ _(\"Authorized Signatory\") }}\n

\n
\n\n\n", - "idx": 2, - "modified": "2015-07-22 17:42:01.560817", - "modified_by": "Administrator", - "name": "Credit Note", - "owner": "Administrator", - "parent": "Journal Entry", - "parentfield": "__print_formats", - "parenttype": "DocType", - "print_format_type": "Server", + "align_labels_right": 0, + "creation": "2014-08-28 11:11:39.796473", + "custom_format": 0, + "disabled": 0, + "doc_type": "Journal Entry", + "docstatus": 0, + "doctype": "Print Format", + "format_data": "[{\"fieldname\": \"print_heading_template\", \"fieldtype\": \"Custom HTML\", \"options\": \"
\\t\\t\\t\\t

Journal Entry
{{ doc.name }}\\t\\t\\t\\t

\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldname\": \"voucher_type\", \"print_hide\": 0, \"label\": \"Entry Type\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldname\": \"posting_date\", \"print_hide\": 0, \"label\": \"Posting Date\"}, {\"fieldname\": \"finance_book\", \"print_hide\": 0, \"label\": \"Finance Book\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldname\": \"accounts\", \"print_hide\": 0, \"label\": \"Accounting Entries\", \"visible_columns\": [{\"fieldname\": \"account\", \"print_width\": \"250px\", \"print_hide\": 0}, {\"fieldname\": \"bank_account_no\", \"print_width\": \"\", \"print_hide\": 0}, {\"fieldname\": \"party_type\", \"print_width\": \"\", \"print_hide\": 0}, {\"fieldname\": \"party\", \"print_width\": \"\", \"print_hide\": 0}, {\"fieldname\": \"debit_in_account_currency\", \"print_width\": \"\", \"print_hide\": 0}, {\"fieldname\": \"credit_in_account_currency\", \"print_width\": \"\", \"print_hide\": 0}, {\"fieldname\": \"reference_type\", \"print_width\": \"\", \"print_hide\": 0}, {\"fieldname\": \"reference_name\", \"print_width\": \"\", \"print_hide\": 0}, {\"fieldname\": \"reference_due_date\", \"print_width\": \"\", \"print_hide\": 0}, {\"fieldname\": \"project\", \"print_width\": \"\", \"print_hide\": 0}]}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldname\": \"cheque_no\", \"print_hide\": 0, \"label\": \"Reference Number\"}, {\"fieldname\": \"cheque_date\", \"print_hide\": 0, \"label\": \"Reference Date\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldname\": \"get_balance\", \"print_hide\": 0, \"label\": \"Make Difference Entry\"}, {\"fieldname\": \"total_amount\", \"print_hide\": 0, \"label\": \"Total Amount\"}, {\"fieldtype\": \"Section Break\", \"label\": \"Reference\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldname\": \"clearance_date\", \"print_hide\": 0, \"label\": \"Clearance Date\"}, {\"fieldname\": \"remark\", \"print_hide\": 0, \"label\": \"Remark\"}, {\"fieldname\": \"inter_company_journal_entry_reference\", \"print_hide\": 0, \"label\": \"Inter Company Journal Entry Reference\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldname\": \"due_date\", \"print_hide\": 0, \"label\": \"Due Date\"}, {\"fieldtype\": \"Section Break\", \"label\": \"Printing Settings\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldname\": \"pay_to_recd_from\", \"print_hide\": 0, \"label\": \"Pay To / Recd From\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldname\": \"letter_head\", \"print_hide\": 0, \"label\": \"Letter Head\"}, {\"fieldtype\": \"Section Break\", \"label\": \"More Information\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldname\": \"mode_of_payment\", \"print_hide\": 0, \"label\": \"Mode of Payment\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldname\": \"stock_entry\", \"print_hide\": 0, \"label\": \"Stock Entry\"}]", + "html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n\n
\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Credit Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Credit To\"), doc.pay_to_recd_from),\n (_(\"Date\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Amount\"), \"\" + doc.get_formatted(\"total_amount\") + \"
\" + (doc.total_amount_in_words or \"\") + \"
\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n\n
\n
\n
{{ value }}
\n
\n\n {%- endfor -%}\n\n
\n
\n

\n {{ _(\"For\") }} {{ doc.company }},
\n
\n
\n
\n {{ _(\"Authorized Signatory\") }}\n

\n
\n\n\n", + "idx": 2, + "line_breaks": 0, + "modified": "2019-04-18 12:10:14.732269", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Credit Note", + "owner": "Administrator", + "parentfield": "__print_formats", + "print_format_builder": 0, + "print_format_type": "Server", + "show_section_headings": 0, "standard": "Yes" } \ No newline at end of file diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html index 5ce80d1baf3..1bff93cb77e 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html @@ -107,8 +107,8 @@ {% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %} - {%= __("Date") %} - {%= __("Age (Days)") %} + {%= __("Date") %} + {%= __("Age (Days)") %} {% if(report.report_name === "Accounts Receivable" && filters.show_sales_person_in_print) { %} {%= __("Reference") %} @@ -206,7 +206,7 @@ {% if(!filters.show_pdc_in_print) { %} {% } %} - {% if(report.report_name === "Accounts Receivable") { %} + {% if(report.report_name === "Accounts Receivable" && filters.show_sales_person_in_print) { %} {% } %} diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py index d49a33bd016..b7154550297 100755 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py @@ -487,13 +487,8 @@ class ReceivablePayableReport(object): conditions.append("company=%s") values.append(self.filters.company) - company_finance_book = erpnext.get_default_finance_book(self.filters.company) - - if not self.filters.finance_book or (self.filters.finance_book == company_finance_book): + if self.filters.finance_book: conditions.append("ifnull(finance_book,'') in (%s, '')") - values.append(company_finance_book) - elif self.filters.finance_book: - conditions.append("ifnull(finance_book,'') = %s") values.append(self.filters.finance_book) if self.filters.get(party_type_field): diff --git a/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py b/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py index 36131319101..16bef565252 100644 --- a/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +++ b/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py @@ -31,11 +31,8 @@ def get_data(filters): filters_data.append(["against_voucher", "in", assets]) - company_finance_book = erpnext.get_default_finance_book(filters.get("company")) - if (not filters.get('finance_book') or (filters.get('finance_book') == company_finance_book)): + if filters.get("finance_book"): filters_data.append(["finance_book", "in", ['', filters.get('finance_book')]]) - elif filters.get("finance_book"): - filters_data.append(["finance_book", "=", filters.get('finance_book')]) gl_entries = frappe.get_all('GL Entry', filters= filters_data, diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py index b9aebd83f93..1bb8580f644 100644 --- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py +++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py @@ -101,7 +101,7 @@ def get_income_expense_data(companies, fiscal_year, filters): net_profit_loss = get_net_profit_loss(income, expense, companies, filters.company, company_currency, True) return income, expense, net_profit_loss - + def get_cash_flow_data(fiscal_year, companies, filters): cash_flow_accounts = get_cash_flow_accounts() @@ -123,7 +123,7 @@ def get_cash_flow_data(fiscal_year, companies, filters): # add first net income in operations section if net_profit_loss: net_profit_loss.update({ - "indent": 1, + "indent": 1, "parent_account": cash_flow_accounts[0]['section_header'] }) data.append(net_profit_loss) @@ -327,7 +327,7 @@ def set_gl_entries_by_account(from_date, to_date, root_lft, root_rgt, filters, g accounts_by_name, ignore_closing_entries=False): """Returns a dict like { "account": [gl entries], ... }""" - company_lft, company_rgt = frappe.get_cached_value('Company', + company_lft, company_rgt = frappe.get_cached_value('Company', filters.get('company'), ["lft", "rgt"]) additional_conditions = get_additional_conditions(from_date, ignore_closing_entries, filters) @@ -354,7 +354,8 @@ def set_gl_entries_by_account(from_date, to_date, root_lft, root_rgt, filters, g "to_date": to_date, "lft": root_lft, "rgt": root_rgt, - "company": d.name + "company": d.name, + "finance_book": filters.get("finance_book") }, as_dict=True) @@ -384,14 +385,8 @@ def get_additional_conditions(from_date, ignore_closing_entries, filters): if from_date: additional_conditions.append("gl.posting_date >= %(from_date)s") - company_finance_book = erpnext.get_default_finance_book(filters.get("company")) - - if not filters.get('finance_book') or (filters.get('finance_book') == company_finance_book): - additional_conditions.append("ifnull(finance_book, '') in ('%s', '')" % - frappe.db.escape(company_finance_book)) - elif filters.get("finance_book"): - additional_conditions.append("ifnull(finance_book, '') = '%s' " % - frappe.db.escape(filters.get("finance_book"))) + if filters.get("finance_book"): + additional_conditions.append("ifnull(finance_book, '') in (%(finance_book)s, '')") return " and {}".format(" and ".join(additional_conditions)) if additional_conditions else "" diff --git a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py index 23b963b759e..7872dbe7b16 100644 --- a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py +++ b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py @@ -184,12 +184,8 @@ class PartyLedgerSummaryReport(object): if self.filters.company: conditions.append("gle.company=%(company)s") - self.filters.company_finance_book = erpnext.get_default_finance_book(self.filters.company) - - if not self.filters.finance_book or (self.filters.finance_book == self.filters.company_finance_book): - conditions.append("ifnull(finance_book,'') in (%(company_finance_book)s, '')") - elif self.filters.finance_book: - conditions.append("ifnull(finance_book,'') = %(finance_book)s") + if self.filters.finance_book: + conditions.append("ifnull(finance_book,'') in (%(finance_book)s, '')") if self.filters.get("party"): conditions.append("party=%(party)s") diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py index e9aecfb394e..52056ef2193 100644 --- a/erpnext/accounts/report/financial_statements.py +++ b/erpnext/accounts/report/financial_statements.py @@ -392,14 +392,8 @@ def get_additional_conditions(from_date, ignore_closing_entries, filters): filters.cost_center = get_cost_centers_with_children(filters.cost_center) additional_conditions.append("cost_center in %(cost_center)s") - company_finance_book = erpnext.get_default_finance_book(filters.get("company")) - - if not filters.get('finance_book') or (filters.get('finance_book') == company_finance_book): - additional_conditions.append("ifnull(finance_book, '') in ('%s', '')" % - frappe.db.escape(company_finance_book)) - elif filters.get("finance_book"): - additional_conditions.append("ifnull(finance_book, '') = '%s' " % - frappe.db.escape(filters.get("finance_book"))) + if filters.get("finance_book"): + additional_conditions.append("ifnull(finance_book, '') in (%(finance_book)s, '')") return " and {}".format(" and ".join(additional_conditions)) if additional_conditions else "" diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py index ecb18f78b18..44ca8d3549a 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.py +++ b/erpnext/accounts/report/general_ledger/general_ledger.py @@ -186,12 +186,8 @@ def get_conditions(filters): if filters.get("project"): conditions.append("project in %(project)s") - company_finance_book = erpnext.get_default_finance_book(filters.get("company")) - if not filters.get("finance_book") or (filters.get("finance_book") == company_finance_book): - filters['finance_book'] = company_finance_book + if filters.get("finance_book"): conditions.append("ifnull(finance_book, '') in (%(finance_book)s, '')") - elif filters.get("finance_book"): - conditions.append("ifnull(finance_book, '') = %(finance_book)s") from frappe.desk.reportview import build_match_conditions match_conditions = build_match_conditions("GL Entry") diff --git a/erpnext/accounts/report/gross_profit/gross_profit.js b/erpnext/accounts/report/gross_profit/gross_profit.js index 1f7d24db1e4..ba17a94e8d3 100644 --- a/erpnext/accounts/report/gross_profit/gross_profit.js +++ b/erpnext/accounts/report/gross_profit/gross_profit.js @@ -23,6 +23,12 @@ frappe.query_reports["Gross Profit"] = { "fieldtype": "Date", "default": frappe.defaults.get_user_default("year_end_date") }, + { + "fieldname":"sales_invoice", + "label": __("Sales Invoice"), + "fieldtype": "Link", + "options": "Sales Invoice" + }, { "fieldname":"group_by", "label": __("Group By"), diff --git a/erpnext/accounts/report/gross_profit/gross_profit.py b/erpnext/accounts/report/gross_profit/gross_profit.py index e5aaafaff49..ee5a4d28e37 100644 --- a/erpnext/accounts/report/gross_profit/gross_profit.py +++ b/erpnext/accounts/report/gross_profit/gross_profit.py @@ -302,6 +302,12 @@ class GrossProfitGenerator(object): sales_person_cols = "" sales_team_table = "" + if self.filters.get("sales_invoice"): + conditions += " and `tabSales Invoice`.name = %(sales_invoice)s" + + if self.filters.get("item_code"): + conditions += " and `tabSales Invoice Item`.item_code = %(item_code)s" + self.si_list = frappe.db.sql(""" select `tabSales Invoice Item`.parenttype, `tabSales Invoice Item`.parent, diff --git a/erpnext/accounts/report/share_ledger/share_ledger.json b/erpnext/accounts/report/share_ledger/share_ledger.json index d374bb7747c..fe158a6f003 100644 --- a/erpnext/accounts/report/share_ledger/share_ledger.json +++ b/erpnext/accounts/report/share_ledger/share_ledger.json @@ -1,23 +1,27 @@ { "add_total_row": 0, - "apply_user_permissions": 1, "creation": "2017-12-27 16:15:52.615453", + "disable_prepared_report": 0, "disabled": 0, "docstatus": 0, "doctype": "Report", "idx": 0, "is_standard": "Yes", - "modified": "2017-12-27 16:46:54.422356", + "modified": "2019-04-19 10:50:36.061588", "modified_by": "Administrator", "module": "Accounts", "name": "Share Ledger", "owner": "Administrator", + "prepared_report": 0, "ref_doctype": "Share Transfer", "report_name": "Share Ledger", "report_type": "Script Report", "roles": [ { "role": "Administrator" + }, + { + "role": "System Manager" } ] } \ No newline at end of file diff --git a/erpnext/accounts/report/utils.py b/erpnext/accounts/report/utils.py index 8a397447383..0b17c8f964a 100644 --- a/erpnext/accounts/report/utils.py +++ b/erpnext/accounts/report/utils.py @@ -112,13 +112,15 @@ def convert_to_presentation_currency(gl_entries, currency_info): if entry.get('debit'): entry['debit'] = converted_value - else: + + if entry.get('credit'): entry['credit'] = converted_value elif account_currency == presentation_currency: if entry.get('debit'): entry['debit'] = debit_in_account_currency - else: + + if entry.get('credit'): entry['credit'] = credit_in_account_currency converted_gl_list.append(entry) @@ -133,3 +135,22 @@ def get_appropriate_company(filters): company = get_default_company() return company + +@frappe.whitelist() +def get_invoiced_item_gross_margin(sales_invoice=None, item_code=None, company=None): + from erpnext.accounts.report.gross_profit.gross_profit import GrossProfitGenerator + + sales_invoice = sales_invoice or frappe.form_dict.get('sales_invoice') + item_code = item_code or frappe.form_dict.get('item_code') + company = company or frappe.get_cached_value("Sales Invoice", sales_invoice, 'company') + + filters = { + 'sales_invoice': sales_invoice, + 'item_code': item_code, + 'company': company, + 'group_by': 'Invoice' + } + + gross_profit_data = GrossProfitGenerator(filters) + + return gross_profit_data.grouped_data diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index e259c04acec..56480144e85 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -395,7 +395,7 @@ def make_purchase_invoice(source_name, target_doc=None): or item.get("buying_cost_center") or item_group.get("buying_cost_center")) - doc = get_mapped_doc("Purchase Order", source_name, { + fields = { "Purchase Order": { "doctype": "Purchase Invoice", "field_map": { @@ -419,7 +419,15 @@ def make_purchase_invoice(source_name, target_doc=None): "doctype": "Purchase Taxes and Charges", "add_if_empty": True } - }, target_doc, postprocess) + } + + if frappe.get_single("Accounts Settings").automatically_fetch_payment_terms == 1: + fields["Payment Schedule"] = { + "doctype": "Payment Schedule", + "add_if_empty": True + } + + doc = get_mapped_doc("Purchase Order", source_name, fields, target_doc, postprocess) return doc diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py index f1507364dfb..c7401faeb2d 100644 --- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py @@ -6,7 +6,7 @@ import unittest import frappe import frappe.defaults from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry -from frappe.utils import flt, add_days, nowdate +from frappe.utils import flt, add_days, nowdate, getdate from erpnext.stock.doctype.item.test_item import make_item from erpnext.buying.doctype.purchase_order.purchase_order import (make_purchase_receipt, make_purchase_invoice, make_rm_stock_entry as make_subcontract_transfer_entry) from erpnext.stock.doctype.material_request.test_material_request import make_material_request @@ -133,9 +133,9 @@ class TestPurchaseOrder(unittest.TestCase): po.submit() self.assertEqual(po.payment_schedule[0].payment_amount, 2500.0) - self.assertEqual(po.payment_schedule[0].due_date, po.transaction_date) + self.assertEqual(getdate(po.payment_schedule[0].due_date), getdate(po.transaction_date)) self.assertEqual(po.payment_schedule[1].payment_amount, 2500.0) - self.assertEqual(po.payment_schedule[1].due_date, add_days(po.transaction_date, 30)) + self.assertEqual(getdate(po.payment_schedule[1].due_date), add_days(getdate(po.transaction_date), 30)) pi = make_purchase_invoice(po.name) pi.save() @@ -143,9 +143,9 @@ class TestPurchaseOrder(unittest.TestCase): self.assertEqual(len(pi.get("items", [])), 1) self.assertEqual(pi.payment_schedule[0].payment_amount, 2500.0) - self.assertEqual(pi.payment_schedule[0].due_date, po.transaction_date) + self.assertEqual(getdate(pi.payment_schedule[0].due_date), getdate(po.transaction_date)) self.assertEqual(pi.payment_schedule[1].payment_amount, 2500.0) - self.assertEqual(pi.payment_schedule[1].due_date, add_days(po.transaction_date, 30)) + self.assertEqual(getdate(pi.payment_schedule[1].due_date), add_days(getdate(po.transaction_date), 30)) def test_subcontracting(self): po = create_purchase_order(item_code="_Test FG Item", is_subcontracted="Yes") @@ -294,6 +294,10 @@ class TestPurchaseOrder(unittest.TestCase): make_stock_entry(target="_Test Warehouse - _TC", qty=10, basic_rate=100) make_stock_entry(target="_Test Warehouse - _TC", item_code="_Test Item Home Desktop 100", qty=20, basic_rate=100) + make_stock_entry(target="_Test Warehouse 1 - _TC", item_code="_Test Item", + qty=30, basic_rate=100) + make_stock_entry(target="_Test Warehouse 1 - _TC", item_code="_Test Item Home Desktop 100", + qty=30, basic_rate=100) bin1 = frappe.db.get_value("Bin", filters={"warehouse": "_Test Warehouse - _TC", "item_code": "_Test Item"}, diff --git a/erpnext/buying/report/requested_items_to_be_ordered/requested_items_to_be_ordered.json b/erpnext/buying/report/requested_items_to_be_ordered/requested_items_to_be_ordered.json index f351f3b5735..55786ae4ccc 100644 --- a/erpnext/buying/report/requested_items_to_be_ordered/requested_items_to_be_ordered.json +++ b/erpnext/buying/report/requested_items_to_be_ordered/requested_items_to_be_ordered.json @@ -1,18 +1,19 @@ { "add_total_row": 1, - "apply_user_permissions": 1, "creation": "2013-05-13 16:10:02", + "disable_prepared_report": 0, "disabled": 0, "docstatus": 0, "doctype": "Report", "idx": 3, "is_standard": "Yes", - "modified": "2017-02-24 20:10:53.005589", + "modified": "2019-04-19 14:54:49.123836", "modified_by": "Administrator", "module": "Buying", "name": "Requested Items To Be Ordered", "owner": "Administrator", - "query": "select \n mr.name as \"Material Request:Link/Material Request:120\",\n\tmr.transaction_date as \"Date:Date:100\",\n\tmr_item.item_code as \"Item Code:Link/Item:120\",\n\tsum(ifnull(mr_item.qty, 0)) as \"Qty:Float:100\",\n\tsum(ifnull(mr_item.ordered_qty, 0)) as \"Ordered Qty:Float:100\", \n\t(sum(mr_item.qty) - sum(ifnull(mr_item.ordered_qty, 0))) as \"Qty to Order:Float:100\",\n\tmr_item.item_name as \"Item Name::150\",\n\tmr_item.description as \"Description::200\",\n\tmr.company as \"Company:Link/Company:\"\nfrom\n\t`tabMaterial Request` mr, `tabMaterial Request Item` mr_item\nwhere\n\tmr_item.parent = mr.name\n\tand mr.material_request_type = \"Purchase\"\n\tand mr.docstatus = 1\n\tand mr.status != \"Stopped\"\ngroup by mr.name, mr_item.item_code\nhaving\n\tsum(ifnull(mr_item.ordered_qty, 0)) < sum(ifnull(mr_item.qty, 0))\norder by mr.transaction_date asc", + "prepared_report": 0, + "query": "select \n mr.name as \"Material Request:Link/Material Request:120\",\n\tmr.transaction_date as \"Date:Date:100\",\n\tmr_item.item_code as \"Item Code:Link/Item:120\",\n\tsum(ifnull(mr_item.stock_qty, 0)) as \"Qty:Float:100\",\n\tifnull(mr_item.stock_uom, '') as \"UOM:Link/UOM:100\",\n\tsum(ifnull(mr_item.ordered_qty, 0)) as \"Ordered Qty:Float:100\", \n\t(sum(mr_item.stock_qty) - sum(ifnull(mr_item.ordered_qty, 0))) as \"Qty to Order:Float:100\",\n\tmr_item.item_name as \"Item Name::150\",\n\tmr_item.description as \"Description::200\",\n\tmr.company as \"Company:Link/Company:\"\nfrom\n\t`tabMaterial Request` mr, `tabMaterial Request Item` mr_item\nwhere\n\tmr_item.parent = mr.name\n\tand mr.material_request_type = \"Purchase\"\n\tand mr.docstatus = 1\n\tand mr.status != \"Stopped\"\ngroup by mr.name, mr_item.item_code\nhaving\n\tsum(ifnull(mr_item.ordered_qty, 0)) < sum(ifnull(mr_item.stock_qty, 0))\norder by mr.transaction_date asc", "ref_doctype": "Purchase Order", "report_name": "Requested Items To Be Ordered", "report_type": "Query Report", diff --git a/erpnext/config/accounts.py b/erpnext/config/accounts.py index 31366b4f1b7..cd4edd8ccd6 100644 --- a/erpnext/config/accounts.py +++ b/erpnext/config/accounts.py @@ -27,6 +27,11 @@ def get_data(): "type": "doctype", "name": "Payment Entry", "description": _("Bank/Cash transactions against party or for internal transfer") + }, + { + "type": "doctype", + "name": "Payment Term", + "description": _("Payment Terms based on conditions") } ] @@ -284,6 +289,11 @@ def get_data(): "name": "Currency Exchange", "description": _("Currency exchange rate master.") }, + { + "type": "doctype", + "name": "Exchange Rate Revaluation", + "description": _("Exchange Rate Revaluation master.") + }, { "type": "doctype", "name": "Payment Gateway Account", diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index bb088cfe118..6d2c30abb50 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -30,9 +30,8 @@ class AccountsController(TransactionBase): return self.__company_currency def onload(self): - if self.get("__onload"): - self.get("__onload").make_payment_via_journal_entry \ - = frappe.db.get_single_value('Accounts Settings', 'make_payment_via_journal_entry') + self.set_onload("make_payment_via_journal_entry", + frappe.db.get_single_value('Accounts Settings', 'make_payment_via_journal_entry')) if self.is_new(): relevant_docs = ("Quotation", "Purchase Order", "Sales Order", @@ -89,7 +88,7 @@ class AccountsController(TransactionBase): self.validate_paid_amount() if self.doctype in ['Purchase Invoice', 'Sales Invoice']: - if cint(self.allocate_advances_automatically): + if cint(self.allocate_advances_automatically) and not cint(self.is_pos): self.set_advances() if self.is_return: diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index d94564e4b5c..d86c3f546c3 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -34,8 +34,8 @@ status_map = { ], "Sales Order": [ ["Draft", None], - ["To Deliver and Bill", "eval:self.per_delivered < 100 and self.per_billed < 100 and self.docstatus == 1"], - ["To Bill", "eval:self.per_delivered == 100 and self.per_billed < 100 and self.docstatus == 1"], + ["To Deliver and Bill", "eval:self.per_delivered < 100 and self.per_billed < 100 and self.docstatus == 1 and self.order_type in ['Sales', 'Shopping Cart']"], + ["To Bill", "eval:self.per_delivered == 100 or self.order_type == 'Maintenance' and self.per_billed < 100 and self.docstatus == 1"], ["To Deliver", "eval:self.per_delivered < 100 and self.per_billed == 100 and self.docstatus == 1"], ["Completed", "eval:self.per_delivered == 100 and self.per_billed == 100 and self.docstatus == 1"], ["Completed", "eval:self.order_type == 'Maintenance' and self.per_billed == 100 and self.docstatus == 1"], diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py index d4460823b47..b80c43f1ff5 100644 --- a/erpnext/crm/doctype/lead/lead.py +++ b/erpnext/crm/doctype/lead/lead.py @@ -10,6 +10,7 @@ from frappe.model.mapper import get_mapped_doc from erpnext.controllers.selling_controller import SellingController from frappe.contacts.address_and_contact import load_address_and_contact from erpnext.accounts.party import set_taxes +from frappe.email.inbox import link_communication_to_document sender_field = "email_id" @@ -185,7 +186,7 @@ def get_lead_details(lead, posting_date=None, company=None): out.update({ "territory": lead.territory, "customer_name": lead.company_name or lead.lead_name, - "contact_display": lead.lead_name, + "contact_display": " ".join(filter(None, [lead.salutation, lead.lead_name])), "contact_email": lead.email_id, "contact_mobile": lead.mobile_no, "contact_phone": lead.phone, @@ -199,3 +200,29 @@ def get_lead_details(lead, posting_date=None, company=None): out['taxes_and_charges'] = taxes_and_charges return out + +@frappe.whitelist() +def make_lead_from_communication(communication, ignore_communication_links=False): + """ raise a issue from email """ + + doc = frappe.get_doc("Communication", communication) + lead_name = None + if doc.sender: + lead_name = frappe.db.get_value("Lead", {"email_id": doc.sender}) + if not lead_name and doc.phone_no: + lead_name = frappe.db.get_value("Lead", {"mobile_no": doc.phone_no}) + if not lead_name: + lead = frappe.get_doc({ + "doctype": "Lead", + "lead_name": doc.sender_full_name, + "email_id": doc.sender, + "mobile_no": doc.phone_no + }) + lead.flags.ignore_mandatory = True + lead.flags.ignore_permissions = True + lead.insert() + + lead_name = lead.name + + link_communication_to_document(doc, "Lead", lead_name, ignore_communication_links) + return lead_name \ No newline at end of file diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py index 8d7479fd896..13337e1657e 100644 --- a/erpnext/crm/doctype/opportunity/opportunity.py +++ b/erpnext/crm/doctype/opportunity/opportunity.py @@ -9,6 +9,7 @@ from frappe.model.mapper import get_mapped_doc from erpnext.setup.utils import get_exchange_rate from erpnext.utilities.transaction_base import TransactionBase from erpnext.accounts.party import get_party_account_currency +from frappe.email.inbox import link_communication_to_document subject_field = "title" sender_field = "contact_email" @@ -318,3 +319,24 @@ def auto_close_opportunity(): doc.flags.ignore_permissions = True doc.flags.ignore_mandatory = True doc.save() + +@frappe.whitelist() +def make_opportunity_from_communication(communication, ignore_communication_links=False): + from erpnext.crm.doctype.lead.lead import make_lead_from_communication + doc = frappe.get_doc("Communication", communication) + + lead = doc.reference_name if doc.reference_doctype == "Lead" else None + if not lead: + lead = make_lead_from_communication(communication, ignore_communication_links=True) + + enquiry_from = "Lead" + + opportunity = frappe.get_doc({ + "doctype": "Opportunity", + "enquiry_from": enquiry_from, + "lead": lead + }).insert(ignore_permissions=True) + + link_communication_to_document(doc, "Opportunity", opportunity.name, ignore_communication_links) + + return opportunity.name diff --git a/erpnext/crm/report/campaign_efficiency/campaign_efficiency.py b/erpnext/crm/report/campaign_efficiency/campaign_efficiency.py index b20fe15ce27..52b848ed504 100644 --- a/erpnext/crm/report/campaign_efficiency/campaign_efficiency.py +++ b/erpnext/crm/report/campaign_efficiency/campaign_efficiency.py @@ -4,24 +4,70 @@ from __future__ import unicode_literals import frappe from frappe import _ +from frappe.utils import flt def execute(filters=None): columns, data = [], [] - columns=get_columns() - data=get_lead_data(filters, "Campaign Name") + columns=get_columns("Campaign Name") + data=get_lead_data(filters or {}, "Campaign Name") return columns, data -def get_columns(): +def get_columns(based_on): return [ - _("Campaign Name") + ":data:130", - _("Lead Count") + ":Int:80", - _("Opp Count") + ":Int:80", - _("Quot Count") + ":Int:80", - _("Order Count") + ":Int:100", - _("Order Value") + ":Float:100", - _("Opp/Lead %") + ":Float:100", - _("Quot/Lead %") + ":Float:100", - _("Order/Quot %") + ":Float:100" + { + "fieldname": frappe.scrub(based_on), + "label": _(based_on), + "fieldtype": "Data", + "width": 150 + }, + { + "fieldname": "lead_count", + "label": _("Lead Count"), + "fieldtype": "Int", + "width": 80 + }, + { + "fieldname": "opp_count", + "label": _("Opp Count"), + "fieldtype": "Int", + "width": 80 + }, + { + "fieldname": "quot_count", + "label": _("Quot Count"), + "fieldtype": "Int", + "width": 80 + }, + { + "fieldname": "order_count", + "label": _("Order Count"), + "fieldtype": "Int", + "width": 100 + }, + { + "fieldname": "order_value", + "label": _("Order Value"), + "fieldtype": "Float", + "width": 100 + }, + { + "fieldname": "opp_lead", + "label": _("Opp/Lead %"), + "fieldtype": "Float", + "width": 100 + }, + { + "fieldname": "quot_lead", + "label": _("Quot/Lead %"), + "fieldtype": "Float", + "width": 100 + }, + { + "fieldname": "order_quot", + "label": _("Order/Quot %"), + "fieldtype": "Float", + "width": 100 + } ] def get_lead_data(filters, based_on): @@ -41,18 +87,18 @@ def get_lead_data(filters, based_on): data = [] for based_on_value, leads in lead_map.items(): row = { - based_on: based_on_value, - "Lead Count": len(leads) + based_on_field: based_on_value, + "lead_count": len(leads) } - row["Quot Count"]= get_lead_quotation_count(leads) - row["Opp Count"] = get_lead_opp_count(leads) - row["Order Count"] = get_quotation_ordered_count(leads) - row["Order Value"] = get_order_amount(leads) + row["quot_count"]= get_lead_quotation_count(leads) + row["opp_count"] = get_lead_opp_count(leads) + row["order_count"] = get_quotation_ordered_count(leads) + row["order_value"] = get_order_amount(leads) or 0 - row["Opp/Lead %"] = row["Opp Count"] / row["Lead Count"] * 100 - row["Quot/Lead %"] = row["Quot Count"] / row["Lead Count"] * 100 + row["opp_lead"] = flt(row["opp_count"]) / flt(row["lead_count"] or 1.0) * 100.0 + row["quot_lead"] = flt(row["quot_count"]) / flt(row["lead_count"] or 1.0) * 100.0 - row["Order/Quot %"] = row["Order Count"] / (row["Quot Count"] or 1) * 100 + row["order_quot"] = flt(row["order_count"]) / flt(row["quot_count"] or 1.0) * 100.0 data.append(row) diff --git a/erpnext/hr/doctype/additional_salary/additional_salary.py b/erpnext/hr/doctype/additional_salary/additional_salary.py index 968a1c4571c..9ca1260fe06 100644 --- a/erpnext/hr/doctype/additional_salary/additional_salary.py +++ b/erpnext/hr/doctype/additional_salary/additional_salary.py @@ -51,7 +51,7 @@ def get_additional_salary_component(employee, start_date, end_date): for d in additional_components: component = frappe.get_doc("Salary Component", d.salary_component) struct_row = {'salary_component': d.salary_component} - for field in ["depends_on_lwp", "abbr", "is_tax_applicable", "variable_based_on_taxable_salary", "is_additional_component"]: + for field in ["depends_on_payment_days", "abbr", "is_tax_applicable", "variable_based_on_taxable_salary", "is_additional_component"]: struct_row[field] = component.get(field) additional_components_list.append({ diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py index d518cd89957..1fc51690c3a 100755 --- a/erpnext/hr/doctype/employee/employee.py +++ b/erpnext/hr/doctype/employee/employee.py @@ -80,6 +80,14 @@ class Employee(NestedSet): if not self.create_user_permission: return if not has_permission('User Permission', ptype='write'): return + employee_user_permission_exists = frappe.db.exists('User Permission', { + 'allow': 'Employee', + 'for_value': self.name, + 'user': self.user_id + }) + + if employee_user_permission_exists: return + add_user_permission("Employee", self.name, self.user_id) set_user_permission_if_allowed("Company", self.company, self.user_id) diff --git a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py index 9b6dba5ff81..c613a13223e 100644 --- a/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py +++ b/erpnext/hr/doctype/employee_benefit_application/employee_benefit_application.py @@ -113,7 +113,7 @@ def get_max_benefits(employee, on_date): def get_max_benefits_remaining(employee, on_date, payroll_period): max_benefits = get_max_benefits(employee, on_date) if max_benefits and max_benefits > 0: - have_depends_on_lwp = False + have_depends_on_payment_days = False per_day_amount_total = 0 payroll_period_days = get_payroll_period_days(on_date, on_date, employee)[0] payroll_period_obj = frappe.get_doc("Payroll Period", payroll_period) @@ -122,22 +122,22 @@ def get_max_benefits_remaining(employee, on_date, payroll_period): prev_sal_slip_flexi_total = get_sal_slip_total_benefit_given(employee, payroll_period_obj) if prev_sal_slip_flexi_total > 0: - # Check salary structure hold depends_on_lwp component + # Check salary structure hold depends_on_payment_days component # If yes then find the amount per day of each component and find the sum sal_struct_name = get_assigned_salary_structure(employee, on_date) if sal_struct_name: sal_struct = frappe.get_doc("Salary Structure", sal_struct_name) for sal_struct_row in sal_struct.get("earnings"): salary_component = frappe.get_doc("Salary Component", sal_struct_row.salary_component) - if salary_component.depends_on_lwp == 1 and salary_component.pay_against_benefit_claim != 1: - have_depends_on_lwp = True + if salary_component.depends_on_payment_days == 1 and salary_component.pay_against_benefit_claim != 1: + have_depends_on_payment_days = True benefit_amount = get_benefit_pro_rata_ratio_amount(sal_struct, salary_component.max_benefit_amount) amount_per_day = benefit_amount / payroll_period_days per_day_amount_total += amount_per_day # Then the sum multiply with the no of lwp in that period # Include that amount to the prev_sal_slip_flexi_total to get the actual - if have_depends_on_lwp and per_day_amount_total > 0: + if have_depends_on_payment_days and per_day_amount_total > 0: holidays = get_holidays_for_employee(employee, payroll_period_obj.start_date, on_date) working_days = date_diff(on_date, payroll_period_obj.start_date) + 1 leave_days = calculate_lwp(employee, payroll_period_obj.start_date, holidays, working_days) @@ -185,7 +185,7 @@ def get_benefit_component_amount(employee, start_date, end_date, struct_row, sal 'payroll_period': payroll_period }) - if frappe.db.get_value("Salary Component", struct_row.salary_component, "depends_on_lwp") != 1: + if frappe.db.get_value("Salary Component", struct_row.salary_component, "depends_on_payment_days") != 1: if frequency == "Monthly" and actual_payroll_days in range(360, 370): period_length = 1 period_factor = 12 diff --git a/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py b/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py index bf150b12322..8be67a866ab 100644 --- a/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py +++ b/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py @@ -170,7 +170,7 @@ def get_last_payroll_period_benefits(employee, sal_slip_start_date, sal_slip_end amount += current_claimed_amount struct_row = {} salary_components_dict = {} - struct_row['depends_on_lwp'] = salary_component.depends_on_lwp + struct_row['depends_on_payment_days'] = salary_component.depends_on_payment_days struct_row['salary_component'] = salary_component.name struct_row['abbr'] = salary_component.salary_component_abbr struct_row['do_not_include_in_total'] = salary_component.do_not_include_in_total diff --git a/erpnext/hr/doctype/employee_tax_exemption_declaration/employee_tax_exemption_declaration.json b/erpnext/hr/doctype/employee_tax_exemption_declaration/employee_tax_exemption_declaration.json index 865e8219b31..899b869b90a 100644 --- a/erpnext/hr/doctype/employee_tax_exemption_declaration/employee_tax_exemption_declaration.json +++ b/erpnext/hr/doctype/employee_tax_exemption_declaration/employee_tax_exemption_declaration.json @@ -1,5 +1,6 @@ { "allow_copy": 0, + "allow_events_in_timeline": 0, "allow_guest_to_view": 0, "allow_import": 1, "allow_rename": 1, @@ -20,6 +21,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "employee", "fieldtype": "Link", "hidden": 0, @@ -54,6 +56,7 @@ "collapsible": 0, "columns": 0, "fetch_from": "employee.company", + "fetch_if_empty": 0, "fieldname": "company", "fieldtype": "Link", "hidden": 0, @@ -87,6 +90,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "column_break_2", "fieldtype": "Column Break", "hidden": 0, @@ -118,6 +122,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "payroll_period", "fieldtype": "Link", "hidden": 0, @@ -151,6 +156,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "total_exemption_amount", "fieldtype": "Currency", "hidden": 0, @@ -184,6 +190,7 @@ "collapsible": 0, "columns": 0, "fetch_from": "employee.department", + "fetch_if_empty": 0, "fieldname": "department", "fieldtype": "Link", "hidden": 0, @@ -217,6 +224,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "amended_from", "fieldtype": "Link", "hidden": 0, @@ -249,6 +257,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "section_break_8", "fieldtype": "Section Break", "hidden": 0, @@ -280,6 +289,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "declarations", "fieldtype": "Table", "hidden": 0, @@ -300,7 +310,7 @@ "read_only": 0, "remember_last_selected_value": 0, "report_hide": 0, - "reqd": 1, + "reqd": 0, "search_index": 0, "set_only_once": 0, "translatable": 0, @@ -317,7 +327,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2018-08-21 16:15:49.363307", + "modified": "2019-04-23 15:50:48.693555", "modified_by": "Administrator", "module": "HR", "name": "Employee Tax Exemption Declaration", diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py index 560dd1d3bfd..88b8f77b2e0 100755 --- a/erpnext/hr/doctype/leave_application/leave_application.py +++ b/erpnext/hr/doctype/leave_application/leave_application.py @@ -135,6 +135,7 @@ class LeaveApplication(Document): date = dt.strftime("%Y-%m-%d") doc = frappe.new_doc("Attendance") doc.employee = self.employee + doc.employee_name = self.employee_name doc.attendance_date = date doc.company = self.company doc.leave_type = self.leave_type diff --git a/erpnext/hr/doctype/salary_component/salary_component.js b/erpnext/hr/doctype/salary_component/salary_component.js index b33451bc35c..1d398ccd59c 100644 --- a/erpnext/hr/doctype/salary_component/salary_component.js +++ b/erpnext/hr/doctype/salary_component/salary_component.js @@ -75,5 +75,5 @@ var set_value_for_condition_and_formula = function(frm) { frm.set_value("amount_based_on_formula", 0); frm.set_value("statistical_component", 0); frm.set_value("do_not_include_in_total", 0); - frm.set_value("depends_on_lwp", 0); + frm.set_value("depends_on_payment_days", 0); }; diff --git a/erpnext/hr/doctype/salary_component/salary_component.json b/erpnext/hr/doctype/salary_component/salary_component.json index f7ce08c737a..697d224092c 100644 --- a/erpnext/hr/doctype/salary_component/salary_component.json +++ b/erpnext/hr/doctype/salary_component/salary_component.json @@ -1,5 +1,6 @@ { "allow_copy": 0, + "allow_events_in_timeline": 0, "allow_guest_to_view": 0, "allow_import": 1, "allow_rename": 1, @@ -19,6 +20,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "salary_component", "fieldtype": "Data", "hidden": 0, @@ -51,6 +53,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "salary_component_abbr", "fieldtype": "Data", "hidden": 0, @@ -85,6 +88,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "type", "fieldtype": "Select", "hidden": 0, @@ -119,6 +123,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.is_flexible_benefit != 1", + "fetch_if_empty": 0, "fieldname": "is_additional_component", "fieldtype": "Check", "hidden": 0, @@ -153,6 +158,7 @@ "columns": 0, "default": "1", "depends_on": "eval:doc.type == \"Earning\"", + "fetch_if_empty": 0, "fieldname": "is_tax_applicable", "fieldtype": "Check", "hidden": 0, @@ -186,6 +192,7 @@ "collapsible": 0, "columns": 0, "default": "1", + "fetch_if_empty": 0, "fieldname": "is_payable", "fieldtype": "Check", "hidden": 0, @@ -218,7 +225,9 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "depends_on_lwp", + "default": "1", + "fetch_if_empty": 0, + "fieldname": "depends_on_payment_days", "fieldtype": "Check", "hidden": 0, "ignore_user_permissions": 0, @@ -227,7 +236,7 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Depends on Leave Without Pay", + "label": "Depends on Payment Days", "length": 0, "no_copy": 0, "permlevel": 0, @@ -250,6 +259,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "do_not_include_in_total", "fieldtype": "Check", "hidden": 0, @@ -282,6 +292,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "column_break_4", "fieldtype": "Column Break", "hidden": 0, @@ -313,6 +324,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "disabled", "fieldtype": "Check", "hidden": 0, @@ -345,6 +357,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "description", "fieldtype": "Small Text", "hidden": 0, @@ -378,6 +391,7 @@ "collapsible": 0, "columns": 0, "description": "If selected, the value specified or calculated in this component will not contribute to the earnings or deductions. However, it's value can be referenced by other components that can be added or deducted. ", + "fetch_if_empty": 0, "fieldname": "statistical_component", "fieldtype": "Check", "hidden": 0, @@ -411,6 +425,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.type==\"Earning\" && doc.is_additional_component != 1 && doc.statistical_component!=1", + "fetch_if_empty": 0, "fieldname": "flexible_benefits", "fieldtype": "Section Break", "hidden": 0, @@ -444,6 +459,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.is_additional_component != 1", + "fetch_if_empty": 0, "fieldname": "is_flexible_benefit", "fieldtype": "Check", "hidden": 0, @@ -477,6 +493,7 @@ "collapsible": 0, "columns": 0, "depends_on": "is_flexible_benefit", + "fetch_if_empty": 0, "fieldname": "max_benefit_amount", "fieldtype": "Currency", "hidden": 0, @@ -509,6 +526,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "column_break_9", "fieldtype": "Column Break", "hidden": 0, @@ -541,6 +559,7 @@ "collapsible": 0, "columns": 0, "depends_on": "is_flexible_benefit", + "fetch_if_empty": 0, "fieldname": "pay_against_benefit_claim", "fieldtype": "Check", "hidden": 0, @@ -574,6 +593,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.is_flexible_benefit == 1 & doc.create_separate_payment_entry_against_benefit_claim !=1", + "fetch_if_empty": 0, "fieldname": "only_tax_impact", "fieldtype": "Check", "hidden": 0, @@ -607,6 +627,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.is_flexible_benefit == 1 & doc.only_tax_impact !=1", + "fetch_if_empty": 0, "fieldname": "create_separate_payment_entry_against_benefit_claim", "fieldtype": "Check", "hidden": 0, @@ -640,6 +661,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.type=='Deduction'", + "fetch_if_empty": 0, "fieldname": "section_break_11", "fieldtype": "Section Break", "hidden": 0, @@ -671,6 +693,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "variable_based_on_taxable_salary", "fieldtype": "Check", "hidden": 0, @@ -704,6 +727,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.statistical_component != 1", + "fetch_if_empty": 0, "fieldname": "section_break_5", "fieldtype": "Section Break", "hidden": 0, @@ -736,6 +760,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "accounts", "fieldtype": "Table", "hidden": 0, @@ -771,6 +796,7 @@ "collapsible_depends_on": "", "columns": 0, "depends_on": "eval:doc.is_flexible_benefit != 1 && doc.variable_based_on_taxable_salary != 1", + "fetch_if_empty": 0, "fieldname": "condition_and_formula", "fieldtype": "Section Break", "hidden": 0, @@ -803,6 +829,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "condition", "fieldtype": "Code", "hidden": 0, @@ -836,6 +863,7 @@ "collapsible": 0, "columns": 0, "default": "", + "fetch_if_empty": 0, "fieldname": "amount_based_on_formula", "fieldtype": "Check", "hidden": 0, @@ -869,6 +897,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.amount_based_on_formula!==0", + "fetch_if_empty": 0, "fieldname": "formula", "fieldtype": "Code", "hidden": 0, @@ -902,6 +931,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.amount_based_on_formula!==1", + "fetch_if_empty": 0, "fieldname": "amount", "fieldtype": "Currency", "hidden": 0, @@ -934,6 +964,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "column_break_28", "fieldtype": "Column Break", "hidden": 0, @@ -965,6 +996,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "help", "fieldtype": "HTML", "hidden": 0, @@ -1003,7 +1035,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2018-09-20 16:44:58.876044", + "modified": "2019-04-16 19:08:55.323567", "modified_by": "Administrator", "module": "HR", "name": "Salary Component", diff --git a/erpnext/hr/doctype/salary_detail/salary_detail.json b/erpnext/hr/doctype/salary_detail/salary_detail.json index 0ec3cd64138..8f2649ad21b 100644 --- a/erpnext/hr/doctype/salary_detail/salary_detail.json +++ b/erpnext/hr/doctype/salary_detail/salary_detail.json @@ -19,6 +19,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "salary_component", "fieldtype": "Link", "hidden": 0, @@ -55,6 +56,7 @@ "default": "", "depends_on": "eval:doc.parenttype=='Salary Structure'", "fetch_from": "salary_component.salary_component_abbr", + "fetch_if_empty": 0, "fieldname": "abbr", "fieldtype": "Data", "hidden": 0, @@ -88,6 +90,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "column_break_3", "fieldtype": "Column Break", "hidden": 0, @@ -121,6 +124,7 @@ "columns": 0, "description": "If selected, the value specified or calculated in this component will not contribute to the earnings or deductions. However, it's value can be referenced by other components that can be added or deducted. ", "fetch_from": "salary_component.statistical_component", + "fetch_if_empty": 0, "fieldname": "statistical_component", "fieldtype": "Check", "hidden": 0, @@ -154,6 +158,7 @@ "collapsible": 0, "columns": 0, "fetch_from": "salary_component.is_tax_applicable", + "fetch_if_empty": 0, "fieldname": "is_tax_applicable", "fieldtype": "Check", "hidden": 0, @@ -187,6 +192,7 @@ "collapsible": 0, "columns": 0, "fetch_from": "salary_component.is_flexible_benefit", + "fetch_if_empty": 0, "fieldname": "is_flexible_benefit", "fieldtype": "Check", "hidden": 0, @@ -221,6 +227,7 @@ "columns": 0, "default": "", "fetch_from": "salary_component.is_additional_component", + "fetch_if_empty": 0, "fieldname": "is_additional_component", "fieldtype": "Check", "hidden": 1, @@ -255,6 +262,7 @@ "columns": 0, "default": "", "fetch_from": "salary_component.variable_based_on_taxable_salary", + "fetch_if_empty": 0, "fieldname": "variable_based_on_taxable_salary", "fieldtype": "Check", "hidden": 0, @@ -288,8 +296,9 @@ "collapsible": 0, "columns": 0, "depends_on": "", - "fetch_from": "salary_component.depends_on_lwp", - "fieldname": "depends_on_lwp", + "fetch_from": "salary_component.depends_on_payment_days", + "fetch_if_empty": 0, + "fieldname": "depends_on_payment_days", "fieldtype": "Check", "hidden": 0, "ignore_user_permissions": 0, @@ -298,7 +307,7 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Depends on Leave Without Pay", + "label": "Depends on Payment Days", "length": 0, "no_copy": 0, "permlevel": 0, @@ -322,6 +331,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.is_flexible_benefit != 1", + "fetch_if_empty": 0, "fieldname": "section_break_2", "fieldtype": "Section Break", "hidden": 0, @@ -354,6 +364,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.parenttype=='Salary Structure'", + "fetch_if_empty": 0, "fieldname": "condition", "fieldtype": "Code", "hidden": 0, @@ -389,6 +400,7 @@ "default": "0", "depends_on": "eval:doc.parenttype=='Salary Structure'", "fetch_from": "", + "fetch_if_empty": 0, "fieldname": "amount_based_on_formula", "fieldtype": "Check", "hidden": 0, @@ -425,6 +437,7 @@ "default": "", "depends_on": "eval:doc.amount_based_on_formula!==0 && doc.parenttype==='Salary Structure'", "description": "", + "fetch_if_empty": 0, "fieldname": "formula", "fieldtype": "Code", "hidden": 0, @@ -458,6 +471,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.amount_based_on_formula!==1 || doc.parenttype==='Salary Slip'", + "fetch_if_empty": 0, "fieldname": "amount", "fieldtype": "Currency", "hidden": 0, @@ -491,6 +505,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "do_not_include_in_total", "fieldtype": "Check", "hidden": 0, @@ -524,6 +539,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.parenttype=='Salary Structure'", + "fetch_if_empty": 0, "fieldname": "default_amount", "fieldtype": "Currency", "hidden": 0, @@ -558,6 +574,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.parenttype=='Salary Slip' && doc.parentfield=='deductions' && doc.variable_based_on_taxable_salary == 1", + "fetch_if_empty": 0, "fieldname": "tax_on_flexible_benefit", "fieldtype": "Currency", "hidden": 0, @@ -591,6 +608,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.parenttype=='Salary Slip' && doc.parentfield=='deductions' && doc.variable_based_on_taxable_salary == 1", + "fetch_if_empty": 0, "fieldname": "tax_on_additional_salary", "fieldtype": "Currency", "hidden": 0, @@ -624,6 +642,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.parenttype=='Salary Structure'", + "fetch_if_empty": 0, "fieldname": "section_break_11", "fieldtype": "Column Break", "hidden": 0, @@ -656,6 +675,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.parenttype=='Salary Structure'", + "fetch_if_empty": 0, "fieldname": "condition_and_formula_help", "fieldtype": "HTML", "hidden": 0, @@ -693,7 +713,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2019-02-04 14:41:56.030991", + "modified": "2019-04-16 19:09:31.726597", "modified_by": "Administrator", "module": "HR", "name": "Salary Detail", diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.js b/erpnext/hr/doctype/salary_slip/salary_slip.js index 86c50d08ba1..4e9fcce8982 100644 --- a/erpnext/hr/doctype/salary_slip/salary_slip.js +++ b/erpnext/hr/doctype/salary_slip/salary_slip.js @@ -132,9 +132,6 @@ var get_emp_and_leave_details = function(doc, dt, dn) { }); } -cur_frm.cscript.employee = function(doc,dt,dn){ - get_emp_and_leave_details(doc, dt, dn); -} cur_frm.cscript.leave_without_pay = function(doc,dt,dn){ if (doc.employee && doc.start_date && doc.end_date) { @@ -160,7 +157,7 @@ cur_frm.cscript.amount = function(doc,dt,dn){ calculate_all(doc, dt, dn); } -cur_frm.cscript.depends_on_lwp = function(doc,dt,dn){ +cur_frm.cscript.depends_on_payment_days = function(doc,dt,dn){ calculate_earning_total(doc, dt, dn, true); calculate_ded_total(doc, dt, dn, true); calculate_net_pay(doc, dt, dn); @@ -174,7 +171,7 @@ var calculate_earning_total = function(doc, dt, dn, reset_amount) { var tbl = doc.earnings || []; var total_earn = 0; for(var i = 0; i < tbl.length; i++){ - if(cint(tbl[i].depends_on_lwp) == 1) { + if(cint(tbl[i].depends_on_payment_days) == 1) { tbl[i].amount = Math.round(tbl[i].default_amount)*(flt(doc.payment_days) / cint(doc.total_working_days)*100)/100; } else if(reset_amount && tbl[i].default_amount) { @@ -196,7 +193,7 @@ var calculate_ded_total = function(doc, dt, dn, reset_amount) { var tbl = doc.deductions || []; var total_ded = 0; for(var i = 0; i < tbl.length; i++){ - if(cint(tbl[i].depends_on_lwp) == 1) { + if(cint(tbl[i].depends_on_payment_days) == 1) { tbl[i].amount = Math.round(tbl[i].default_amount)*(flt(doc.payment_days)/cint(doc.total_working_days)*100)/100; } else if(reset_amount && tbl[i].default_amount) { tbl[i].amount = tbl[i].default_amount; @@ -209,16 +206,12 @@ var calculate_ded_total = function(doc, dt, dn, reset_amount) { refresh_many(['deductions', 'total_deduction']); } -// Calculate net payable amount -// ------------------------------------------------------------------------ var calculate_net_pay = function(doc, dt, dn) { doc.net_pay = flt(doc.gross_pay) - flt(doc.total_deduction); doc.rounded_total = Math.round(doc.net_pay); refresh_many(['net_pay', 'rounded_total']); } -// validate -// ------------------------------------------------------------------------ cur_frm.cscript.validate = function(doc, dt, dn) { calculate_all(doc, dt, dn); } diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py index 3fd266b4bba..032ae8f2e6f 100644 --- a/erpnext/hr/doctype/salary_slip/salary_slip.py +++ b/erpnext/hr/doctype/salary_slip/salary_slip.py @@ -131,11 +131,12 @@ class SalarySlip(TransactionBase): for d in self.get(key): if d.salary_component == struct_row.salary_component: component_row = d + if not component_row: self.append(key, { 'amount': amount, 'default_amount': amount, - 'depends_on_lwp' : struct_row.depends_on_lwp, + 'depends_on_payment_days' : struct_row.depends_on_payment_days, 'salary_component' : struct_row.salary_component, 'abbr' : struct_row.abbr, 'do_not_include_in_total' : struct_row.do_not_include_in_total, @@ -147,12 +148,11 @@ class SalarySlip(TransactionBase): 'tax_on_additional_salary': additional_tax }) else: - if overwrite: - component_row.default_amount = amount - component_row.amount = amount - else: - component_row.default_amount += amount - component_row.amount = component_row.default_amount + if not overwrite: + amount += struct_row.get("default_amount", 0) + + component_row.default_amount = amount + component_row.amount = amount component_row.tax_on_flexible_benefit = benefit_tax component_row.tax_on_additional_salary = additional_tax @@ -167,7 +167,7 @@ class SalarySlip(TransactionBase): if d.amount_based_on_formula: formula = d.formula.strip() if d.formula else None if formula: - amount = frappe.safe_eval(formula, self.whitelisted_globals, data) + amount = rounded(frappe.safe_eval(formula, self.whitelisted_globals, data)) if amount: data[d.abbr] = amount @@ -418,7 +418,7 @@ class SalarySlip(TransactionBase): for d in self.get(component_type): if (self.salary_structure and - cint(d.depends_on_lwp) and + cint(d.depends_on_payment_days) and (not self.salary_slip_based_on_timesheet or getdate(self.start_date) < joining_date or @@ -431,7 +431,7 @@ class SalarySlip(TransactionBase): ) elif not self.payment_days and not self.salary_slip_based_on_timesheet and \ - cint(d.depends_on_lwp): + cint(d.depends_on_payment_days): d.amount = 0 elif not d.amount: d.amount = d.default_amount @@ -441,7 +441,7 @@ class SalarySlip(TransactionBase): def calculate_net_pay(self): if self.salary_structure: self.calculate_component_amounts() - + disable_rounded_total = cint(frappe.db.get_value("Global Defaults", None, "disable_rounded_total")) precision = frappe.defaults.get_global_default("currency_precision") self.total_deduction = 0 @@ -455,7 +455,7 @@ class SalarySlip(TransactionBase): self.net_pay = flt(self.gross_pay) - (flt(self.total_deduction) + flt(self.total_loan_repayment)) self.rounded_total = rounded(self.net_pay, self.precision("net_pay") if disable_rounded_total else 0) - + if self.net_pay < 0: frappe.throw(_("Net Pay cannnot be negative")) @@ -599,12 +599,11 @@ class SalarySlip(TransactionBase): annual_earning = taxable_earning["taxable_earning"] * period_factor exemption_amount = 0 if frappe.db.exists("Employee Tax Exemption Declaration", {"employee": self.employee, - "payroll_period": payroll_period.name, "docstatus": 1}): + "payroll_period": payroll_period.name, "docstatus": 1}): exemption_amount = frappe.db.get_value("Employee Tax Exemption Declaration", {"employee": self.employee, "payroll_period": payroll_period.name, "docstatus": 1}, "total_exemption_amount") annual_taxable_earning = annual_earning - exemption_amount - if self.deduct_tax_for_unclaimed_employee_benefits or self.deduct_tax_for_unsubmitted_tax_exemption_proof: tax_detail = self.get_tax_paid_in_period(payroll_period, tax_component) if tax_detail: @@ -736,22 +735,24 @@ class SalarySlip(TransactionBase): # less paid taxes if args.get("pro_rata_tax_paid"): tax_amount -= args.get("pro_rata_tax_paid") + tax_amount = rounded(tax_amount) struct_row = self.get_salary_slip_row(args.get("tax_component")) return [struct_row, tax_amount, benefit_tax, additional_tax] - def calculate_tax_by_tax_slab(self, payroll_period, annual_earning): + def calculate_tax_by_tax_slab(self, payroll_period, annual_taxable_earning): payroll_period_obj = frappe.get_doc("Payroll Period", payroll_period) data = self.get_data_for_eval() + data.update({"annual_taxable_earning": annual_taxable_earning}) taxable_amount = 0 for slab in payroll_period_obj.taxable_salary_slabs: if slab.condition and not self.eval_tax_slab_condition(slab.condition, data): continue - if not slab.to_amount and annual_earning > slab.from_amount: - taxable_amount += (annual_earning - slab.from_amount) * slab.percent_deduction *.01 + if not slab.to_amount and annual_taxable_earning > slab.from_amount: + taxable_amount += (annual_taxable_earning - slab.from_amount) * slab.percent_deduction *.01 continue - if annual_earning > slab.from_amount and annual_earning < slab.to_amount: - taxable_amount += (annual_earning - slab.from_amount) * slab.percent_deduction *.01 - elif annual_earning > slab.from_amount and annual_earning > slab.to_amount: + if annual_taxable_earning > slab.from_amount and annual_taxable_earning < slab.to_amount: + taxable_amount += (annual_taxable_earning - slab.from_amount) * slab.percent_deduction *.01 + elif annual_taxable_earning > slab.from_amount and annual_taxable_earning > slab.to_amount: taxable_amount += (slab.to_amount - slab.from_amount) * slab.percent_deduction * .01 return taxable_amount @@ -770,13 +771,21 @@ class SalarySlip(TransactionBase): def get_period_factor(self, period_start, period_end, start_date=None, end_date=None): # TODO if both deduct checked update the factor to make tax consistent + joining_date, relieving_date = frappe.db.get_value("Employee", self.employee, ["date_of_joining", "relieving_date"]) + if getdate(joining_date) > getdate(period_start): + period_start = joining_date + if relieving_date and getdate(relieving_date) < getdate(period_end): + period_end = relieving_date + payroll_days = date_diff(period_end, period_start) + 1 if start_date and end_date: salary_days = date_diff(end_date, start_date) + 1 return flt(payroll_days)/flt(salary_days) + # if period configured for a year and monthly frequency return 12 to make tax calc consistent if 360 <= payroll_days <= 370 and self.payroll_frequency == "Monthly": return 12 + salary_days = date_diff(self.end_date, self.start_date) + 1 return flt(payroll_days)/flt(salary_days) @@ -784,7 +793,7 @@ class SalarySlip(TransactionBase): component = frappe.get_doc("Salary Component", salary_component) # Data for update_component_row struct_row = {} - struct_row['depends_on_lwp'] = component.depends_on_lwp + struct_row['depends_on_payment_days'] = component.depends_on_payment_days struct_row['salary_component'] = component.name struct_row['abbr'] = component.salary_component_abbr struct_row['do_not_include_in_total'] = component.do_not_include_in_total diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.js b/erpnext/hr/doctype/salary_structure/salary_structure.js index 79d75bfdf6e..e3f37e71059 100755 --- a/erpnext/hr/doctype/salary_structure/salary_structure.js +++ b/erpnext/hr/doctype/salary_structure/salary_structure.js @@ -246,7 +246,7 @@ frappe.ui.form.on('Salary Detail', { frappe.model.set_value(cdt, cdn, 'amount', result.amount); } frappe.model.set_value(cdt, cdn, 'statistical_component', result.statistical_component); - frappe.model.set_value(cdt, cdn, 'depends_on_lwp', result.depends_on_lwp); + frappe.model.set_value(cdt, cdn, 'depends_on_payment_days', result.depends_on_payment_days); frappe.model.set_value(cdt, cdn, 'do_not_include_in_total', result.do_not_include_in_total); frappe.model.set_value(cdt, cdn, 'variable_based_on_taxable_salary', result.variable_based_on_taxable_salary); frappe.model.set_value(cdt, cdn, 'is_tax_applicable', result.is_tax_applicable); diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py index 202ae9bcfe5..26efd00d473 100644 --- a/erpnext/hr/doctype/salary_structure/salary_structure.py +++ b/erpnext/hr/doctype/salary_structure/salary_structure.py @@ -18,7 +18,7 @@ class SalaryStructure(Document): self.validate_max_benefits_with_flexi() def set_missing_values(self): - overwritten_fields = ["depends_on_lwp", "variable_based_on_taxable_salary", "is_tax_applicable", "is_flexible_benefit"] + overwritten_fields = ["depends_on_payment_days", "variable_based_on_taxable_salary", "is_tax_applicable", "is_flexible_benefit"] overwritten_fields_if_missing = ["amount_based_on_formula", "formula", "amount"] for table in ["earnings", "deductions"]: for d in self.get(table): @@ -126,7 +126,7 @@ def create_salary_structures_assignment(employee, salary_structure, from_date, b def get_existing_assignments(employees, salary_structure,from_date): salary_structures_assignments = frappe.db.sql_list(""" - select distinct employee from `tabSalary Structure Assignment` + select distinct employee from `tabSalary Structure Assignment` where salary_structure=%s and employee in (%s) and from_date=%s and docstatus=1 """ % ('%s', ', '.join(['%s']*len(employees)),'%s'), [salary_structure] + employees+[from_date]) diff --git a/erpnext/hr/print_format/salary_slip_based_on_timesheet/salary_slip_based_on_timesheet.json b/erpnext/hr/print_format/salary_slip_based_on_timesheet/salary_slip_based_on_timesheet.json index 20c7d232494..ceaf4a6ac71 100644 --- a/erpnext/hr/print_format/salary_slip_based_on_timesheet/salary_slip_based_on_timesheet.json +++ b/erpnext/hr/print_format/salary_slip_based_on_timesheet/salary_slip_based_on_timesheet.json @@ -1,18 +1,18 @@ { - "creation": "2016-07-07 12:38:32.447281", - "custom_format": 0, - "disabled": 0, - "doc_type": "Salary Slip", - "docstatus": 0, - "doctype": "Print Format", - "font": "Default", - "format_data": "[{\"fieldname\": \"print_heading_template\", \"fieldtype\": \"HTML\", \"options\": \"

{{doc.name}}


\"}, {\"fieldtype\": \"Section Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"employee\"}, {\"print_hide\": 0, \"fieldname\": \"employee_name\"}, {\"print_hide\": 0, \"fieldname\": \"department\"}, {\"print_hide\": 0, \"fieldname\": \"designation\"}, {\"print_hide\": 0, \"fieldname\": \"branch\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"start_date\"}, {\"print_hide\": 0, \"fieldname\": \"end_date\"}, {\"print_hide\": 0, \"fieldname\": \"total_working_hours\"}, {\"print_hide\": 0, \"fieldname\": \"hour_rate\"}, {\"fieldtype\": \"Section Break\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"time_sheet\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"working_hours\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"timesheets\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Section Break\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"salary_component\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"depends_on_lwp\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"earnings\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"salary_component\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"depends_on_lwp\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"deductions\"}, {\"fieldtype\": \"Section Break\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"gross_pay\"}, {\"print_hide\": 0, \"fieldname\": \"total_deduction\"}, {\"print_hide\": 0, \"fieldname\": \"net_pay\"}, {\"print_hide\": 0, \"fieldname\": \"rounded_total\"}, {\"print_hide\": 0, \"fieldname\": \"total_in_words\"}]", - "idx": 0, - "modified": "2016-08-21 21:02:59.896033", - "modified_by": "Administrator", - "name": "Salary Slip based on Timesheet", - "owner": "Administrator", - "print_format_builder": 1, - "print_format_type": "Server", + "creation": "2016-07-07 12:38:32.447281", + "custom_format": 0, + "disabled": 0, + "doc_type": "Salary Slip", + "docstatus": 0, + "doctype": "Print Format", + "font": "Default", + "format_data": "[{\"fieldname\": \"print_heading_template\", \"fieldtype\": \"HTML\", \"options\": \"

{{doc.name}}


\"}, {\"fieldtype\": \"Section Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"employee\"}, {\"print_hide\": 0, \"fieldname\": \"employee_name\"}, {\"print_hide\": 0, \"fieldname\": \"department\"}, {\"print_hide\": 0, \"fieldname\": \"designation\"}, {\"print_hide\": 0, \"fieldname\": \"branch\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"start_date\"}, {\"print_hide\": 0, \"fieldname\": \"end_date\"}, {\"print_hide\": 0, \"fieldname\": \"total_working_hours\"}, {\"print_hide\": 0, \"fieldname\": \"hour_rate\"}, {\"fieldtype\": \"Section Break\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"time_sheet\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"working_hours\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"timesheets\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Section Break\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"salary_component\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"depends_on_payment_days\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"earnings\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"salary_component\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"depends_on_payment_days\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"deductions\"}, {\"fieldtype\": \"Section Break\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"gross_pay\"}, {\"print_hide\": 0, \"fieldname\": \"total_deduction\"}, {\"print_hide\": 0, \"fieldname\": \"net_pay\"}, {\"print_hide\": 0, \"fieldname\": \"rounded_total\"}, {\"print_hide\": 0, \"fieldname\": \"total_in_words\"}]", + "idx": 0, + "modified": "2016-08-21 21:02:59.896033", + "modified_by": "Administrator", + "name": "Salary Slip based on Timesheet", + "owner": "Administrator", + "print_format_builder": 1, + "print_format_type": "Server", "standard": "Yes" } \ No newline at end of file diff --git a/erpnext/hr/print_format/salary_slip_standard/salary_slip_standard.json b/erpnext/hr/print_format/salary_slip_standard/salary_slip_standard.json index 9f299df0ed3..b01239fe02d 100644 --- a/erpnext/hr/print_format/salary_slip_standard/salary_slip_standard.json +++ b/erpnext/hr/print_format/salary_slip_standard/salary_slip_standard.json @@ -1,22 +1,22 @@ { - "align_labels_right": 0, - "creation": "2016-07-07 11:45:14.872204", - "custom_format": 0, - "disabled": 0, - "doc_type": "Salary Slip", - "docstatus": 0, - "doctype": "Print Format", - "font": "Default", - "format_data": "[{\"fieldname\": \"print_heading_template\", \"fieldtype\": \"Custom HTML\", \"options\": \"

{{doc.name}}

\\n
\\n
\\n
\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"employee\", \"label\": \"Employee\"}, {\"print_hide\": 0, \"fieldname\": \"company\", \"label\": \"Company\"}, {\"print_hide\": 0, \"fieldname\": \"employee_name\", \"label\": \"Employee Name\"}, {\"print_hide\": 0, \"fieldname\": \"department\", \"label\": \"Department\"}, {\"print_hide\": 0, \"fieldname\": \"designation\", \"label\": \"Designation\"}, {\"print_hide\": 0, \"fieldname\": \"branch\", \"label\": \"Branch\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"start_date\", \"label\": \"Start Date\"}, {\"print_hide\": 0, \"fieldname\": \"end_date\", \"label\": \"End Date\"}, {\"print_hide\": 0, \"fieldname\": \"total_working_days\", \"label\": \"Working Days\"}, {\"print_hide\": 0, \"fieldname\": \"leave_without_pay\", \"label\": \"Leave Without Pay\"}, {\"print_hide\": 0, \"fieldname\": \"payment_days\", \"label\": \"Payment Days\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"salary_component\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"amount\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"earnings\", \"label\": \"Earnings\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"salary_component\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"depends_on_lwp\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"deductions\", \"label\": \"Deductions\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"gross_pay\", \"label\": \"Gross Pay\"}, {\"print_hide\": 0, \"fieldname\": \"total_deduction\", \"label\": \"Total Deduction\"}, {\"print_hide\": 0, \"fieldname\": \"net_pay\", \"label\": \"Net Pay\"}, {\"print_hide\": 0, \"fieldname\": \"rounded_total\", \"label\": \"Rounded Total\"}, {\"print_hide\": 0, \"fieldname\": \"total_in_words\", \"label\": \"Total in words\"}]", - "idx": 0, - "line_breaks": 0, - "modified": "2018-07-24 19:31:39.040701", - "modified_by": "Administrator", - "module": "HR", - "name": "Salary Slip Standard", - "owner": "Administrator", - "print_format_builder": 1, - "print_format_type": "Server", - "show_section_headings": 0, + "align_labels_right": 0, + "creation": "2016-07-07 11:45:14.872204", + "custom_format": 0, + "disabled": 0, + "doc_type": "Salary Slip", + "docstatus": 0, + "doctype": "Print Format", + "font": "Default", + "format_data": "[{\"fieldname\": \"print_heading_template\", \"fieldtype\": \"Custom HTML\", \"options\": \"

{{doc.name}}

\\n
\\n
\\n
\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"employee\", \"label\": \"Employee\"}, {\"print_hide\": 0, \"fieldname\": \"company\", \"label\": \"Company\"}, {\"print_hide\": 0, \"fieldname\": \"employee_name\", \"label\": \"Employee Name\"}, {\"print_hide\": 0, \"fieldname\": \"department\", \"label\": \"Department\"}, {\"print_hide\": 0, \"fieldname\": \"designation\", \"label\": \"Designation\"}, {\"print_hide\": 0, \"fieldname\": \"branch\", \"label\": \"Branch\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"start_date\", \"label\": \"Start Date\"}, {\"print_hide\": 0, \"fieldname\": \"end_date\", \"label\": \"End Date\"}, {\"print_hide\": 0, \"fieldname\": \"total_working_days\", \"label\": \"Working Days\"}, {\"print_hide\": 0, \"fieldname\": \"leave_without_pay\", \"label\": \"Leave Without Pay\"}, {\"print_hide\": 0, \"fieldname\": \"payment_days\", \"label\": \"Payment Days\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"salary_component\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"amount\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"earnings\", \"label\": \"Earnings\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"salary_component\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"amount\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"depends_on_payment_days\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"deductions\", \"label\": \"Deductions\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"gross_pay\", \"label\": \"Gross Pay\"}, {\"print_hide\": 0, \"fieldname\": \"total_deduction\", \"label\": \"Total Deduction\"}, {\"print_hide\": 0, \"fieldname\": \"net_pay\", \"label\": \"Net Pay\"}, {\"print_hide\": 0, \"fieldname\": \"rounded_total\", \"label\": \"Rounded Total\"}, {\"print_hide\": 0, \"fieldname\": \"total_in_words\", \"label\": \"Total in words\"}]", + "idx": 0, + "line_breaks": 0, + "modified": "2018-07-24 19:31:39.040701", + "modified_by": "Administrator", + "module": "HR", + "name": "Salary Slip Standard", + "owner": "Administrator", + "print_format_builder": 1, + "print_format_type": "Server", + "show_section_headings": 0, "standard": "Yes" } \ No newline at end of file diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py index c65693bddf6..b04ba7c4fb0 100644 --- a/erpnext/manufacturing/doctype/bom/bom.py +++ b/erpnext/manufacturing/doctype/bom/bom.py @@ -201,7 +201,7 @@ class BOM(WebsiteGenerator): if not rate: if self.rm_cost_as_per == "Price List": - frappe.msgprint(_("Price not found for item {0} and price list {1}") + frappe.msgprint(_("Price not found for item {0} in price list {1}") .format(arg["item_code"], self.buying_price_list), alert=True) else: frappe.msgprint(_("{0} not found for item {1}") diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 953ebd36b73..d07457a956e 100755 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -592,3 +592,6 @@ erpnext.patches.v11_1.make_job_card_time_logs erpnext.patches.v11_1.set_variant_based_on erpnext.patches.v11_1.move_customer_lead_to_dynamic_column erpnext.patches.v11_1.woocommerce_set_creation_user +erpnext.patches.v11_1.delete_bom_browser +erpnext.patches.v11_1.set_salary_details_submittable +erpnext.patches.v11_1.rename_depends_on_lwp diff --git a/erpnext/patches/v11_1/delete_bom_browser.py b/erpnext/patches/v11_1/delete_bom_browser.py new file mode 100644 index 00000000000..457f5116670 --- /dev/null +++ b/erpnext/patches/v11_1/delete_bom_browser.py @@ -0,0 +1,8 @@ +# 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 + +def execute(): + frappe.delete_doc_if_exists('Page', 'bom-browser') \ No newline at end of file diff --git a/erpnext/patches/v11_1/rename_depends_on_lwp.py b/erpnext/patches/v11_1/rename_depends_on_lwp.py new file mode 100644 index 00000000000..20d8867e1d2 --- /dev/null +++ b/erpnext/patches/v11_1/rename_depends_on_lwp.py @@ -0,0 +1,13 @@ +# 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 scrub +from frappe.model.utils.rename_field import rename_field + +def execute(): + for doctype in ("Salary Component", "Salary Detail"): + if "depends_on_lwp" in frappe.db.get_table_columns(doctype): + frappe.reload_doc("hr", "doctype", scrub(doctype)) + rename_field(doctype, "depends_on_lwp", "depends_on_payment_days") \ No newline at end of file diff --git a/erpnext/patches/v11_1/set_salary_details_submittable.py b/erpnext/patches/v11_1/set_salary_details_submittable.py new file mode 100644 index 00000000000..6d847ec3d05 --- /dev/null +++ b/erpnext/patches/v11_1/set_salary_details_submittable.py @@ -0,0 +1,9 @@ +from __future__ import unicode_literals +import frappe + +def execute(): + frappe.db.sql(""" + update `tabSalary Structure` ss, `tabSalary Detail` sd + set sd.docstatus=1 + where ss.name=sd.parent and ss.docstatus=1 and sd.parenttype='Salary Structure' + """) diff --git a/erpnext/patches/v11_1/woocommerce_set_creation_user.py b/erpnext/patches/v11_1/woocommerce_set_creation_user.py index e50d5ae711b..5ccdec6d262 100644 --- a/erpnext/patches/v11_1/woocommerce_set_creation_user.py +++ b/erpnext/patches/v11_1/woocommerce_set_creation_user.py @@ -1,10 +1,11 @@ from __future__ import unicode_literals import frappe +from frappe.utils import cint def execute(): - woocommerce_setting_enable_sync = frappe.db.sql("SELECT t.value FROM tabSingles t WHERE doctype = 'Woocommerce Settings' AND field = 'enable_sync'", as_dict=True) - if len(woocommerce_setting_enable_sync) and woocommerce_setting_enable_sync[0].value == '1': - frappe.db.sql("""UPDATE tabSingles - SET value = (SELECT t.value FROM tabSingles t WHERE doctype = 'Woocommerce Settings' AND field = 'modified_by') - WHERE doctype = 'Woocommerce Settings' - AND field = 'creation_user';""") \ No newline at end of file + frappe.reload_doc("erpnext_integrations", "doctype","woocommerce_settings") + doc = frappe.get_doc("Woocommerce Settings") + + if cint(doc.enable_sync): + doc.creation_user = doc.modified_by + doc.save(ignore_permissions=True) \ No newline at end of file diff --git a/erpnext/patches/v7_0/rename_salary_components.py b/erpnext/patches/v7_0/rename_salary_components.py index de92fc6083b..bc48e343174 100644 --- a/erpnext/patches/v7_0/rename_salary_components.py +++ b/erpnext/patches/v7_0/rename_salary_components.py @@ -5,79 +5,79 @@ from frappe.model.utils.rename_field import update_property_setters def execute(): if not frappe.db.exists("DocType", "Salary Structure Earning"): return - + frappe.reload_doc("hr", "doctype", "salary_detail") frappe.reload_doc("hr", "doctype", "salary_component") - + standard_cols = ["name", "creation", "modified", "owner", "modified_by", "parent", "parenttype", "parentfield", "idx"] - + dt_cols = { "Salary Structure Deduction": ["d_type", "d_modified_amt", "depend_on_lwp"], "Salary Structure Earning": ["e_type", "modified_value", "depend_on_lwp"], "Salary Slip Earning": ["e_type", "e_modified_amount", "e_depends_on_lwp", "e_amount"], "Salary Slip Deduction": ["d_type", "d_modified_amount", "d_depends_on_lwp", "d_amount"], } - + earning_type_exists = True if "earning_type" in frappe.db.get_table_columns("Salary Slip Earning") else False e_type_exists = True if "e_type" in frappe.db.get_table_columns("Salary Slip Earning") else False - - + + if e_type_exists and earning_type_exists: - frappe.db.sql("""update `tabSalary Slip Earning` + frappe.db.sql("""update `tabSalary Slip Earning` set e_type = earning_type, e_modified_amount = earning_amount where e_type is null and earning_type is not null""") - frappe.db.sql("""update `tabSalary Structure Earning` set e_type = earning_type + frappe.db.sql("""update `tabSalary Structure Earning` set e_type = earning_type where e_type is null and earning_type is not null""") - frappe.db.sql("""update `tabSalary Slip Deduction` set + frappe.db.sql("""update `tabSalary Slip Deduction` set d_type = deduction_type, d_modified_amount = deduction_amount where d_type is null and deduction_type is not null""") - frappe.db.sql("""update `tabSalary Structure Deduction` set d_type = deduction_type + frappe.db.sql("""update `tabSalary Structure Deduction` set d_type = deduction_type where d_type is null and deduction_type is not null""") - + if earning_type_exists and not e_type_exists: for val in dt_cols.values(): if val[0] == "e_type": val[0] = "earning_type" - + if val[0] == "d_type": val[0] = "deduction_type" - + if val[1] == "e_modified_amount": val[1] ="earning_amount" - + if val[1] == "d_modified_amount": val[1] ="deduction_amount" - - - target_cols = standard_cols + ["salary_component", "amount", "depends_on_lwp", "default_amount"] - target_cols = "`" + "`, `".join(target_cols) + "`" - - for doctype, cols in dt_cols.items(): + + + target_cols = standard_cols + ["salary_component", "amount", "depends_on_payment_days", "default_amount"] + target_cols = "`" + "`, `".join(target_cols) + "`" + + for doctype, cols in dt_cols.items(): source_cols = "`" + "`, `".join(standard_cols + cols) + "`" if len(cols) == 3: source_cols += ", 0" - - + + frappe.db.sql("""INSERT INTO `tabSalary Detail` ({0}) SELECT {1} FROM `tab{2}`""" .format(target_cols, source_cols, doctype)) - - + + dt_cols_de = { "Deduction Type": ["deduction_name", "description"], "Earning Type": ["earning_name", "description"], } - + standard_cols_de = standard_cols - + target_cols = standard_cols_de + ["salary_component", "description"] - target_cols = "`" + "`, `".join(target_cols) + "`" - - for doctype, cols in dt_cols_de.items(): + target_cols = "`" + "`, `".join(target_cols) + "`" + + for doctype, cols in dt_cols_de.items(): source_cols = "`" + "`, `".join(standard_cols_de + cols) + "`" try: frappe.db.sql("""INSERT INTO `tabSalary Component` ({0}) SELECT {1} FROM `tab{2}`""" @@ -85,10 +85,10 @@ def execute(): except Exception as e: if e.args[0]==1062: pass - + update_customizations() - - for doctype in ["Salary Structure Deduction", "Salary Structure Earning", "Salary Slip Earning", + + for doctype in ["Salary Structure Deduction", "Salary Structure Earning", "Salary Slip Earning", "Salary Slip Deduction", "Deduction Type", "Earning Type"] : frappe.delete_doc("DocType", doctype) @@ -96,35 +96,35 @@ def execute(): def update_customizations(): dt_cols = { "Salary Structure Deduction": { - "d_type": "salary_component", - "deduction_type": "salary_component", + "d_type": "salary_component", + "deduction_type": "salary_component", "d_modified_amt": "amount", - "depend_on_lwp": "depends_on_lwp" + "depend_on_lwp": "depends_on_payment_days" }, "Salary Structure Earning": { - "e_type": "salary_component", - "earning_type": "salary_component", + "e_type": "salary_component", + "earning_type": "salary_component", "modified_value": "amount", - "depend_on_lwp": "depends_on_lwp" + "depend_on_lwp": "depends_on_payment_days" }, "Salary Slip Earning": { - "e_type": "salary_component", - "earning_type": "salary_component", + "e_type": "salary_component", + "earning_type": "salary_component", "e_modified_amount": "amount", "e_amount" : "default_amount", - "e_depends_on_lwp": "depends_on_lwp" + "e_depends_on_lwp": "depends_on_payment_days" }, "Salary Slip Deduction": { - "d_type": "salary_component", - "deduction_type": "salary_component", + "d_type": "salary_component", + "deduction_type": "salary_component", "d_modified_amount": "amount", "d_amount" : "default_amount", - "d_depends_on_lwp": "depends_on_lwp" + "d_depends_on_lwp": "depends_on_payment_days" } } - + update_property_setters_and_custom_fields("Salary Detail", dt_cols) - + dt_cols = { "Earning Type": { "earning_name": "salary_component" @@ -133,17 +133,17 @@ def update_customizations(): "deduction_name": "salary_component" } } - + update_property_setters_and_custom_fields("Salary Component", dt_cols) - - - - + + + + def update_property_setters_and_custom_fields(new_dt, dt_cols): for doctype, cols in dt_cols.items(): frappe.db.sql("update `tabProperty Setter` set doc_type = %s where doc_type=%s", (new_dt, doctype)) frappe.db.sql("update `tabCustom Field` set dt = %s where dt=%s", (new_dt, doctype)) - - + + for old_fieldname, new_fieldname in cols.items(): update_property_setters(new_dt, old_fieldname, new_fieldname) diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py index f52d8fde35c..ebb15997962 100644 --- a/erpnext/projects/doctype/project/project.py +++ b/erpnext/projects/doctype/project/project.py @@ -241,7 +241,7 @@ class Project(Document): from_expense_claim = frappe.db.sql("""select sum(total_sanctioned_amount) as total_sanctioned_amount from `tabExpense Claim` where project = %s - and docstatus = 1""", self.name, as_dict=1, debug=1)[0] + and docstatus = 1""", self.name, as_dict=1)[0] self.actual_start_date = from_time_sheet.start_date self.actual_end_date = from_time_sheet.end_date diff --git a/erpnext/projects/doctype/task/task.json b/erpnext/projects/doctype/task/task.json index c22a2962c87..5fc72c43042 100644 --- a/erpnext/projects/doctype/task/task.json +++ b/erpnext/projects/doctype/task/task.json @@ -1,5 +1,6 @@ { "allow_copy": 0, + "allow_events_in_timeline": 0, "allow_guest_to_view": 0, "allow_import": 1, "allow_rename": 0, @@ -19,6 +20,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "subject", "fieldtype": "Data", "hidden": 0, @@ -51,6 +53,7 @@ "bold": 1, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "project", "fieldtype": "Link", "hidden": 0, @@ -86,6 +89,7 @@ "collapsible": 0, "columns": 0, "default": "0", + "fetch_if_empty": 0, "fieldname": "is_group", "fieldtype": "Check", "hidden": 0, @@ -118,6 +122,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "column_break0", "fieldtype": "Column Break", "hidden": 0, @@ -151,6 +156,7 @@ "bold": 1, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "status", "fieldtype": "Select", "hidden": 0, @@ -185,6 +191,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "priority", "fieldtype": "Select", "hidden": 0, @@ -219,6 +226,7 @@ "bold": 1, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "parent_task", "fieldtype": "Link", "hidden": 0, @@ -254,6 +262,7 @@ "collapsible_depends_on": "", "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "section_break_10", "fieldtype": "Section Break", "hidden": 0, @@ -286,6 +295,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "exp_start_date", "fieldtype": "Date", "hidden": 0, @@ -322,6 +332,7 @@ "default": "0", "depends_on": "", "description": "", + "fetch_if_empty": 0, "fieldname": "expected_time", "fieldtype": "Float", "hidden": 0, @@ -356,6 +367,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "task_weight", "fieldtype": "Float", "hidden": 0, @@ -388,6 +400,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "column_break_11", "fieldtype": "Column Break", "hidden": 0, @@ -420,6 +433,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "exp_end_date", "fieldtype": "Date", "hidden": 0, @@ -454,6 +468,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "progress", "fieldtype": "Percent", "hidden": 0, @@ -487,6 +502,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "is_milestone", "fieldtype": "Check", "hidden": 0, @@ -519,6 +535,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "color", "fieldtype": "Color", "hidden": 0, @@ -553,6 +570,7 @@ "collapsible_depends_on": "", "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "section_break0", "fieldtype": "Section Break", "hidden": 0, @@ -586,6 +604,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "description", "fieldtype": "Text Editor", "hidden": 0, @@ -623,6 +642,7 @@ "collapsible_depends_on": "", "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "section_break", "fieldtype": "Section Break", "hidden": 0, @@ -656,6 +676,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "depends_on", "fieldtype": "Table", "hidden": 0, @@ -690,6 +711,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "depends_on_tasks", "fieldtype": "Data", "hidden": 1, @@ -725,6 +747,7 @@ "columns": 0, "depends_on": "", "description": "", + "fetch_if_empty": 0, "fieldname": "actual", "fieldtype": "Section Break", "hidden": 0, @@ -760,6 +783,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "act_start_date", "fieldtype": "Date", "hidden": 0, @@ -796,6 +820,7 @@ "default": "", "depends_on": "", "description": "", + "fetch_if_empty": 0, "fieldname": "actual_time", "fieldtype": "Float", "hidden": 0, @@ -829,6 +854,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "column_break_15", "fieldtype": "Column Break", "hidden": 0, @@ -861,6 +887,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "act_end_date", "fieldtype": "Date", "hidden": 0, @@ -895,6 +922,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "section_break_17", "fieldtype": "Section Break", "hidden": 0, @@ -927,6 +955,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "total_costing_amount", "fieldtype": "Currency", "hidden": 0, @@ -962,6 +991,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "total_expense_claim", "fieldtype": "Currency", "hidden": 0, @@ -995,6 +1025,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "column_break_20", "fieldtype": "Column Break", "hidden": 0, @@ -1027,6 +1058,7 @@ "collapsible": 0, "columns": 0, "depends_on": "", + "fetch_if_empty": 0, "fieldname": "total_billing_amount", "fieldtype": "Currency", "hidden": 0, @@ -1059,6 +1091,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "more_details", "fieldtype": "Section Break", "hidden": 0, @@ -1091,6 +1124,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.status == \"Closed\" || doc.status == \"Pending Review\"", + "fetch_if_empty": 0, "fieldname": "review_date", "fieldtype": "Date", "hidden": 0, @@ -1125,6 +1159,7 @@ "collapsible": 0, "columns": 0, "depends_on": "eval:doc.status == \"Closed\"", + "fetch_if_empty": 0, "fieldname": "closing_date", "fieldtype": "Date", "hidden": 0, @@ -1158,6 +1193,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "column_break_22", "fieldtype": "Column Break", "hidden": 0, @@ -1188,6 +1224,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "department", "fieldtype": "Link", "hidden": 0, @@ -1221,6 +1258,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "company", "fieldtype": "Link", "hidden": 0, @@ -1253,6 +1291,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "lft", "fieldtype": "Int", "hidden": 1, @@ -1285,6 +1324,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "rgt", "fieldtype": "Int", "hidden": 1, @@ -1317,6 +1357,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "fetch_if_empty": 0, "fieldname": "old_parent", "fieldtype": "Data", "hidden": 1, @@ -1355,7 +1396,7 @@ "istable": 0, "max_attachments": 5, "menu_index": 0, - "modified": "2018-08-21 16:15:56.299895", + "modified": "2019-04-18 22:33:03.798331", "modified_by": "Administrator", "module": "Projects", "name": "Task", @@ -1385,7 +1426,7 @@ "read_only": 0, "read_only_onload": 0, "search_fields": "subject", - "show_name_in_global_search": 0, + "show_name_in_global_search": 1, "sort_order": "DESC", "timeline_field": "project", "title_field": "subject", diff --git a/erpnext/projects/report/billing_summary.py b/erpnext/projects/report/billing_summary.py index 4906ba9d997..d2a229315fd 100644 --- a/erpnext/projects/report/billing_summary.py +++ b/erpnext/projects/report/billing_summary.py @@ -54,9 +54,6 @@ def get_data(filters): data = [] record = get_records(filters) - billable_hours_worked = 0 - hours_worked = 0 - working_cost = 0 for entries in record: total_hours = 0 total_billable_hours = 0 @@ -81,11 +78,6 @@ def get_data(filters): total_hours, total_billable_hours, total_amount = get_billable_and_total_hours(activity, time_end, time_start, total_hours, total_billable_hours, total_amount) - - hours_worked += total_hours - billable_hours_worked += total_billable_hours - working_cost += total_amount - row = { "employee": entries.employee, "employee_name": entries.employee_name, @@ -97,14 +89,6 @@ def get_data(filters): if entries_exists: data.append(row) entries_exists = False - - total = { - "total_billable_hours": billable_hours_worked, - "total_hours": hours_worked, - "amount": working_cost - } - if billable_hours_worked !=0 or hours_worked !=0 or working_cost !=0: - data.append(total) return data def get_records(filters): diff --git a/erpnext/projects/report/employee_billing_summary/employee_billing_summary.json b/erpnext/projects/report/employee_billing_summary/employee_billing_summary.json index 433ebac5ddf..cab8db251c8 100644 --- a/erpnext/projects/report/employee_billing_summary/employee_billing_summary.json +++ b/erpnext/projects/report/employee_billing_summary/employee_billing_summary.json @@ -1,5 +1,5 @@ { - "add_total_row": 0, + "add_total_row": 1, "creation": "2019-03-08 15:08:19.929728", "disable_prepared_report": 0, "disabled": 0, @@ -7,7 +7,7 @@ "doctype": "Report", "idx": 0, "is_standard": "Yes", - "modified": "2019-03-08 15:08:19.929728", + "modified": "2019-04-16 17:29:18.376932", "modified_by": "Administrator", "module": "Projects", "name": "Employee Billing Summary", diff --git a/erpnext/projects/report/project_billing_summary/project_billing_summary.json b/erpnext/projects/report/project_billing_summary/project_billing_summary.json index a3f91c802d5..c65053e85be 100644 --- a/erpnext/projects/report/project_billing_summary/project_billing_summary.json +++ b/erpnext/projects/report/project_billing_summary/project_billing_summary.json @@ -1,5 +1,5 @@ { - "add_total_row": 0, + "add_total_row": 1, "creation": "2019-03-11 16:22:39.460524", "disable_prepared_report": 0, "disabled": 0, @@ -7,7 +7,7 @@ "doctype": "Report", "idx": 0, "is_standard": "Yes", - "modified": "2019-03-11 16:22:39.460524", + "modified": "2019-04-16 17:28:32.749633", "modified_by": "Administrator", "module": "Projects", "name": "Project Billing Summary", diff --git a/erpnext/public/js/communication.js b/erpnext/public/js/communication.js index e85107e77aa..02357ef086c 100644 --- a/erpnext/public/js/communication.js +++ b/erpnext/public/js/communication.js @@ -33,7 +33,7 @@ frappe.ui.form.on("Communication", { make_lead_from_communication: (frm) => { return frappe.call({ - method: "frappe.email.inbox.make_lead_from_communication", + method: "erpnext.crm.doctype.lead.lead.make_lead_from_communication", args: { communication: frm.doc.name }, @@ -48,7 +48,7 @@ frappe.ui.form.on("Communication", { make_issue_from_communication: (frm) => { return frappe.call({ - method: "frappe.email.inbox.make_issue_from_communication", + method: "erpnext.support.doctype.issue.issue.make_issue_from_communication", args: { communication: frm.doc.name }, @@ -63,7 +63,7 @@ frappe.ui.form.on("Communication", { make_opportunity_from_communication: (frm) => { return frappe.call({ - method: "frappe.email.inbox.make_opportunity_from_communication", + method: "erpnext.crm.doctype.opportunity.opportunity.make_opportunity_from_communication", args: { communication: frm.doc.name }, diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 168a727f270..ec4e4b7b83b 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -290,7 +290,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ args: { search_value: this.frm.doc.scan_barcode } }).then(r => { const data = r && r.message; - if (!data) { + if (!data || Object.keys(data).length === 0) { scan_barcode_field.set_new_description(__('Cannot find Item with this barcode')); return; } diff --git a/erpnext/regional/report/gstr_1/gstr_1.py b/erpnext/regional/report/gstr_1/gstr_1.py index 0c7d066216a..aba12dc09ee 100644 --- a/erpnext/regional/report/gstr_1/gstr_1.py +++ b/erpnext/regional/report/gstr_1/gstr_1.py @@ -38,7 +38,6 @@ class Gstr1Report(object): shipping_bill_date, reason_for_issuing_document """ - self.customer_type = "Company" if self.filters.get("type_of_business") == "B2B" else "Individual" def run(self): self.get_columns() @@ -54,18 +53,50 @@ class Gstr1Report(object): return self.columns, self.data def get_data(self): + + if self.filters.get("type_of_business") == "B2C Small": + self.get_b2cs_data() + else: + for inv, items_based_on_rate in self.items_based_on_tax_rate.items(): + invoice_details = self.invoices.get(inv) + for rate, items in items_based_on_rate.items(): + row, taxable_value = self.get_row_data_for_invoice(inv, invoice_details, rate, items) + + if self.filters.get("type_of_business") == "CDNR": + row.append("Y" if invoice_details.posting_date <= date(2017, 7, 1) else "N") + row.append("C" if invoice_details.return_against else "R") + + self.data.append(row) + + def get_b2cs_data(self): + b2cs_output = {} + for inv, items_based_on_rate in self.items_based_on_tax_rate.items(): invoice_details = self.invoices.get(inv) + for rate, items in items_based_on_rate.items(): - row, taxable_value = self.get_row_data_for_invoice(inv, invoice_details, rate, items) - if self.filters.get("type_of_business") == "B2C Small": - row.append("E" if invoice_details.ecommerce_gstin else "OE") + place_of_supply = invoice_details.get("place_of_supply") + ecommerce_gstin = invoice_details.get("ecommerce_gstin") - if self.filters.get("type_of_business") == "CDNR": - row.append("Y" if invoice_details.posting_date <= date(2017, 7, 1) else "N") - row.append("C" if invoice_details.return_against else "R") + b2cs_output.setdefault((rate, place_of_supply, ecommerce_gstin),{ + "place_of_supply": "", + "ecommerce_gstin": "", + "rate": "", + "taxable_value": 0, + "cess_amount": 0, + "type": 0 + }) - self.data.append(row) + row = b2cs_output.get((rate, place_of_supply, ecommerce_gstin)) + row["place_of_supply"] = place_of_supply + row["ecommerce_gstin"] = ecommerce_gstin + row["rate"] = rate + row["taxable_value"] += sum([abs(net_amount) + for item_code, net_amount in self.invoice_items.get(inv).items() if item_code in items]) + row["type"] = "E" if ecommerce_gstin else "OE" + + for key, value in iteritems(b2cs_output): + self.data.append(value) def get_row_data_for_invoice(self, invoice, invoice_details, tax_rate, items): row = [] @@ -113,7 +144,7 @@ class Gstr1Report(object): if self.filters.get(opts[0]): conditions += opts[1] - customers = frappe.get_all("Customer", filters={"customer_type": self.customer_type}) + customers = frappe.get_all("Customer", filters={"disabled": 0}) if self.filters.get("type_of_business") == "B2B": conditions += """ and ifnull(invoice_type, '') != 'Export' and is_return != 1 diff --git a/erpnext/selling/doctype/customer/customer.js b/erpnext/selling/doctype/customer/customer.js index 3b0e75ff6ca..89811656eed 100644 --- a/erpnext/selling/doctype/customer/customer.js +++ b/erpnext/selling/doctype/customer/customer.js @@ -123,5 +123,11 @@ frappe.ui.form.on("Customer", { }, validate: function(frm) { if(frm.doc.lead_name) frappe.model.clear_doc("Lead", frm.doc.lead_name); + + var total = 0; + for (var idx in frm.doc.sales_team) { + total += frm.doc.sales_team[idx].allocated_percentage; + if (total > 100) frappe.throw(__("Total contribution percentage can't exceed 100")); + } }, }); \ No newline at end of file diff --git a/erpnext/selling/report/available_stock_for_packing_items/available_stock_for_packing_items.py b/erpnext/selling/report/available_stock_for_packing_items/available_stock_for_packing_items.py index 1e45a736735..48494247595 100644 --- a/erpnext/selling/report/available_stock_for_packing_items/available_stock_for_packing_items.py +++ b/erpnext/selling/report/available_stock_for_packing_items/available_stock_for_packing_items.py @@ -12,7 +12,7 @@ def execute(filters=None): iwq_map = get_item_warehouse_quantity_map() item_map = get_item_details() - data = [] + data = [] for sbom, warehouse in iwq_map.items(): total = 0 total_qty = 0 @@ -21,7 +21,7 @@ def execute(filters=None): total += 1 row = [sbom, item_map.get(sbom).item_name, item_map.get(sbom).description, item_map.get(sbom).stock_uom, wh] - available_qty = min(item_qty.values()) + available_qty = item_qty total_qty += flt(available_qty) row += [available_qty] @@ -66,15 +66,30 @@ def get_item_warehouse_quantity(): return iwq_map def get_item_warehouse_quantity_map(): + query = """SELECT parent, warehouse, MIN(qty) AS qty + FROM (SELECT b.parent, bi.item_code, bi.warehouse, + sum(bi.projected_qty) / b.qty AS qty + FROM tabBin AS bi, (SELECT b.parent, b.item_code, b.qty, w.name + FROM `tabProduct Bundle Item` b, `tabWarehouse` w) AS b + WHERE bi.item_code = b.item_code + AND bi.warehouse = b.name + GROUP BY b.parent, b.item_code, bi.warehouse + UNION ALL + SELECT b.parent, b.item_code, b.name, 0 AS qty + FROM (SELECT b.parent, b.item_code, b.qty, w.name + FROM `tabProduct Bundle Item` b, `tabWarehouse` w) AS b + WHERE NOT EXISTS(SELECT * + FROM `tabBin` AS bi + WHERE bi.item_code = b.item_code + AND bi.warehouse = b.name)) AS r + GROUP BY parent, warehouse + HAVING MIN(qty) != 0""" + result = frappe.db.sql(query, as_dict=1) + last_sbom = "" sbom_map = {} - iwq_map = get_item_warehouse_quantity() - sbom_item_map = get_product_bundle_items() - - for sbom, sbom_items in sbom_item_map.items(): - for item, child_qty in sbom_items.items(): - for wh, qty in iwq_map.get(item, {}).items(): - avail_qty = flt(qty) / flt(child_qty) - sbom_map.setdefault(sbom, {}).setdefault(wh, {}) \ - .setdefault(item, avail_qty) - - return sbom_map \ No newline at end of file + for line in result: + if line.get("parent") != last_sbom: + last_sbom = line.get("parent") + actual_dict = sbom_map.setdefault(last_sbom, {}) + actual_dict.setdefault(line.get("warehouse"), line.get("qty")) + return sbom_map diff --git a/erpnext/setup/doctype/company/test_company.py b/erpnext/setup/doctype/company/test_company.py index 1b08a228b6c..8debef5ff69 100644 --- a/erpnext/setup/doctype/company/test_company.py +++ b/erpnext/setup/doctype/company/test_company.py @@ -4,6 +4,8 @@ from __future__ import unicode_literals import frappe import unittest +import json +from frappe import _ from frappe.utils import random_string from erpnext.accounts.doctype.account.chart_of_accounts.chart_of_accounts import get_charts_for_country @@ -78,7 +80,10 @@ class TestCompany(unittest.TestCase): if account_type in ["Bank", "Cash"]: filters["is_group"] = 1 - self.assertTrue(frappe.get_all("Account", filters)) + has_matching_accounts = frappe.get_all("Account", filters) + error_message = _("No Account matched these filters: {}".format(json.dumps(filters))) + + self.assertTrue(has_matching_accounts, msg=error_message) finally: self.delete_mode_of_payment(template) frappe.delete_doc("Company", template) diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js index 41e65d0497e..e8224eb458f 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.js +++ b/erpnext/stock/doctype/delivery_note/delivery_note.js @@ -101,8 +101,7 @@ erpnext.stock.DeliveryNoteController = erpnext.selling.SellingController.extend( refresh: function(doc, dt, dn) { var me = this; this._super(); - - if ((!doc.is_return) && (doc.status!="Closed" || doc.is_new())) { + if ((!doc.is_return) && (doc.status!="Closed" || this.frm.is_new())) { if (this.frm.doc.docstatus===0) { this.frm.add_custom_button(__('Sales Order'), function() { diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index a3bda0161d0..184bf17aea8 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -407,7 +407,6 @@ def get_returned_qty_map(delivery_note): @frappe.whitelist() def make_sales_invoice(source_name, target_doc=None): doc = frappe.get_doc('Delivery Note', source_name) - sales_orders = [d.against_sales_order for d in doc.items] returned_qty_map = get_returned_qty_map(source_name) invoiced_qty_map = get_invoiced_qty_map(source_name) @@ -447,7 +446,7 @@ def make_sales_invoice(source_name, target_doc=None): returned_qty = 0 return pending_qty, returned_qty - doc = get_mapped_doc("Delivery Note", source_name, { + doc = get_mapped_doc("Delivery Note", source_name, { "Delivery Note": { "doctype": "Sales Invoice", "validation": { @@ -465,7 +464,7 @@ def make_sales_invoice(source_name, target_doc=None): "cost_center": "cost_center" }, "postprocess": update_item, - "filter": lambda d: get_pending_qty(d)[0]<=0 + "filter": lambda d: get_pending_qty(d)[0] <= 0 if not doc.get("is_return") else get_pending_qty(d)[0] > 0 }, "Sales Taxes and Charges": { "doctype": "Sales Taxes and Charges", diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index eb821023568..94134f1df23 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -458,7 +458,7 @@ def make_purchase_invoice(source_name, target_doc=None): "asset": "asset", }, "postprocess": update_item, - "filter": lambda d: get_pending_qty(d)[0]<=0 + "filter": lambda d: get_pending_qty(d)[0] <= 0 if not doc.get("is_return") else get_pending_qty(d)[0] > 0 }, "Purchase Taxes and Charges": { "doctype": "Purchase Taxes and Charges", diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py index a6210a697a9..af5e5e9f0a0 100644 --- a/erpnext/stock/report/stock_ledger/stock_ledger.py +++ b/erpnext/stock/report/stock_ledger/stock_ledger.py @@ -151,10 +151,10 @@ def get_opening_balance(filters, columns): "posting_date": filters.from_date, "posting_time": "00:00:00" }) - row = [""]*len(columns) - row[1] = _("'Opening'") - for i, v in ((9, 'qty_after_transaction'), (11, 'valuation_rate'), (12, 'stock_value')): - row[i] = last_entry.get(v, 0) + row = {} + row["item_code"] = _("'Opening'") + for dummy, v in ((9, 'qty_after_transaction'), (11, 'valuation_rate'), (12, 'stock_value')): + row[v] = last_entry.get(v, 0) return row diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py index 0b5eb539c8d..2e74b997f61 100644 --- a/erpnext/support/doctype/issue/issue.py +++ b/erpnext/support/doctype/issue/issue.py @@ -9,6 +9,7 @@ from frappe import _ from frappe.model.document import Document from frappe.utils import now from frappe.utils.user import is_website_user +from frappe.email.inbox import link_communication_to_document sender_field = "raised_by" @@ -160,3 +161,20 @@ def has_website_permission(doc, ptype, user, verbose=False): def update_issue(contact, method): """Called when Contact is deleted""" frappe.db.sql("""UPDATE `tabIssue` set contact='' where contact=%s""", contact.name) + +@frappe.whitelist() +def make_issue_from_communication(communication, ignore_communication_links=False): + """ raise a issue from email """ + + doc = frappe.get_doc("Communication", communication) + issue = frappe.get_doc({ + "doctype": "Issue", + "subject": doc.subject, + "communication_medium": doc.communication_medium, + "raised_by": doc.sender or "", + "raised_by_phone": doc.phone_no or "" + }).insert(ignore_permissions=True) + + link_communication_to_document(doc, "Issue", issue.name, ignore_communication_links) + + return issue.name \ No newline at end of file diff --git a/erpnext/utilities/activation.py b/erpnext/utilities/activation.py index 16391e073e2..d6e7c9ea458 100644 --- a/erpnext/utilities/activation.py +++ b/erpnext/utilities/activation.py @@ -5,50 +5,36 @@ from __future__ import unicode_literals import frappe, erpnext from frappe import _ +from six import iteritems def get_level(): + activation_level = 0 + sales_data = [] + min_count = 0 + doctypes = {"Item": 5, "Customer": 5, "Sales Order": 2, "Sales Invoice": 2, "Purchase Order": 2, "Employee": 3, "Lead": 3, "Quotation": 3, + "Payment Entry": 2, "User": 5, "Student": 5, "Instructor": 5, "BOM": 3, "Journal Entry": 3, "Stock Entry": 3} + for doctype, min_count in iteritems(doctypes): + count = frappe.db.count(doctype) + if count > min_count: + activation_level += 1 + sales_data.append({doctype: count}) + if frappe.db.get_single_value('System Settings', 'setup_complete'): - activation_level = 1 - - if frappe.db.count('Item') > 5: activation_level += 1 - if frappe.db.count('Customer') > 5: - activation_level += 1 - - if frappe.db.count('Sales Order') > 2: - activation_level += 1 - - if frappe.db.count('Purchase Order') > 2: - activation_level += 1 - - if frappe.db.count('Employee') > 3: - activation_level += 1 - - if frappe.db.count('Lead') > 3: - activation_level += 1 - - if frappe.db.count('Payment Entry') > 2: - activation_level += 1 - - if frappe.db.count('Communication', dict(communication_medium='Email')) > 10: - activation_level += 1 - - if frappe.db.count('User') > 5: - activation_level += 1 - - if frappe.db.count('Student') > 5: - activation_level += 1 - - if frappe.db.count('Instructor') > 5: + communication_number = frappe.db.count('Communication', dict(communication_medium='Email')) + if communication_number > 10: activation_level += 1 + sales_data.append({"Communication": communication_number}) # recent login if frappe.db.sql('select name from tabUser where last_login > date_sub(now(), interval 2 day) limit 1'): activation_level += 1 - return activation_level + level = {"activation_level": activation_level, "sales_data": sales_data} + + return level def get_help_messages(): '''Returns help messages to be shown on Desktop'''