diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index bd622275d6d..3c5ad071dca 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -21,6 +21,6 @@ jobs: - name: Run backport uses: ./actions/backport with: - token: ${{secrets.BACKPORT_BOT_TOKEN}} + token: ${{secrets.RELEASE_TOKEN}} labelsToAdd: "backport" title: "{{originalTitle}}" diff --git a/.github/workflows/initiate_release.yml b/.github/workflows/initiate_release.yml index e51c1943fdf..321d6f5b403 100644 --- a/.github/workflows/initiate_release.yml +++ b/.github/workflows/initiate_release.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false matrix: - version: ["13", "14", "15"] + version: ["14", "15"] steps: - uses: octokit/request-action@v2.x diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml new file mode 100644 index 00000000000..e990228185e --- /dev/null +++ b/.github/workflows/lock.yml @@ -0,0 +1,21 @@ +name: 'Lock threads' + +on: + schedule: + - cron: '0 0 * * *' + workflow_dispatch: + +permissions: + issues: write + pull-requests: write + + +jobs: + lock: + runs-on: ubuntu-latest + steps: + - uses: dessant/lock-threads@v5 + with: + github-token: ${{ github.token }} + issue-inactive-days: 14 + pr-inactive-days: 14 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 30be903ae8f..6ea121f2982 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ fail_fast: false repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.0.1 + rev: v4.3.0 hooks: - id: trailing-whitespace files: "erpnext.*" @@ -15,6 +15,10 @@ repos: args: ['--branch', 'develop'] - id: check-merge-conflict - id: check-ast + - id: check-json + - id: check-toml + - id: check-yaml + - id: debug-statements - repo: https://github.com/pre-commit/mirrors-eslint rev: v8.44.0 diff --git a/erpnext/accounts/doctype/account/account_tree.js b/erpnext/accounts/doctype/account/account_tree.js index f240aa6e950..0b29769293f 100644 --- a/erpnext/accounts/doctype/account/account_tree.js +++ b/erpnext/accounts/doctype/account/account_tree.js @@ -77,7 +77,7 @@ frappe.treeview_settings["Account"] = { // show Dr if positive since balance is calculated as debit - credit else show Cr const balance = account.balance_in_account_currency || account.balance; - const dr_or_cr = balance > 0 ? "Dr": "Cr"; + const dr_or_cr = balance > 0 ? __("Dr"): __("Cr"); const format = (value, currency) => format_currency(Math.abs(value), currency); if (account.balance!==undefined) { diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py index 9e67c4cf0d0..9f56455990a 100644 --- a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py +++ b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py @@ -74,7 +74,7 @@ def create_charts( # after all accounts are already inserted. frappe.local.flags.ignore_update_nsm = True _import_accounts(chart, None, None, root_account=True) - rebuild_tree("Account", "parent_account") + rebuild_tree("Account") frappe.local.flags.ignore_update_nsm = False diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/unverified/at_austria_chart_template.json b/erpnext/accounts/doctype/account/chart_of_accounts/unverified/at_austria_chart_template.json index 58d67beb678..bd7228ec41c 100644 --- a/erpnext/accounts/doctype/account/chart_of_accounts/unverified/at_austria_chart_template.json +++ b/erpnext/accounts/doctype/account/chart_of_accounts/unverified/at_austria_chart_template.json @@ -26,7 +26,7 @@ "0360 Bauliche Investitionen in fremden (gepachteten) Betriebs- und Geschäftsgebäuden": {"account_type": "Fixed Asset"}, "0370 Bauliche Investitionen in fremden (gepachteten) Wohn- und Sozialgebäuden": {"account_type": "Fixed Asset"}, "0390 Kumulierte Abschreibungen zu Grundstücken ": {"account_type": "Fixed Asset"}, - "0400 Maschinen und Geräte ": {"account_type": "Fixed Asset"}, + "0400 Maschinen und Geräte ": {"account_type": "Fixed Asset"}, "0500 Maschinenwerkzeuge ": {"account_type": "Fixed Asset"}, "0510 Allgemeine Werkzeuge und Handwerkzeuge ": {"account_type": "Fixed Asset"}, "0520 Prototypen, Formen, Modelle ": {"account_type": "Fixed Asset"}, @@ -65,42 +65,41 @@ "0980 Geleistete Anzahlungen auf Finanzanlagen ": {"account_type": "Fixed Asset"}, "0990 Kumulierte Abschreibungen zu Finanzanlagen ": {"account_type": "Fixed Asset"}, "root_type": "Asset" - }, + }, "Klasse 1 Aktiva: Vorr\u00e4te": { "1000 Bezugsverrechnung": {"account_type": "Stock"}, "1100 Rohstoffe": {"account_type": "Stock"}, "1200 Bezogene Teile": {"account_type": "Stock"}, "1300 Hilfsstoffe": {"account_type": "Stock"}, "1350 Betriebsstoffe": {"account_type": "Stock"}, - "1360 Vorrat Energietraeger": {"account_type": "Stock"}, + "1360 Vorrat Energietraeger": {"account_type": "Stock"}, "1400 Unfertige Erzeugnisse": {"account_type": "Stock"}, "1500 Fertige Erzeugnisse": {"account_type": "Stock"}, "1600 Handelswarenvorrat": {"account_type": "Stock Received But Not Billed"}, "1700 Noch nicht abrechenbare Leistungen": {"account_type": "Stock"}, - "1900 Wertberichtigungen": {"account_type": "Stock"}, "1800 Geleistete Anzahlungen": {"account_type": "Stock"}, "1900 Wertberichtigungen": {"account_type": "Stock"}, "root_type": "Asset" - }, + }, "Klasse 3 Passiva: Verbindlichkeiten": { "3000 Allgemeine Verbindlichkeiten (Schuld)": {"account_type": "Payable"}, "3010 R\u00fcckstellungen f\u00fcr Pensionen": {"account_type": "Payable"}, "3020 Steuerr\u00fcckstellungen": {"account_type": "Tax"}, - "3041 Sonstige R\u00fcckstellungen": {"account_type": "Payable"}, + "3041 Sonstige R\u00fcckstellungen": {"account_type": "Payable"}, "3110 Verbindlichkeiten gegen\u00fcber Bank": {"account_type": "Payable"}, "3150 Verbindlichkeiten Darlehen": {"account_type": "Payable"}, - "3185 Verbindlichkeiten Kreditkarte": {"account_type": "Payable"}, + "3185 Verbindlichkeiten Kreditkarte": {"account_type": "Payable"}, "3380 Verbindlichkeiten aus der Annahme gezogener Wechsel u. d. Ausstellungen eigener Wechsel": { "account_type": "Payable" }, "3400 Verbindlichkeiten gegen\u00fc. verb. Untern., Verbindl. gegen\u00fc. Untern., mit denen eine Beteiligungsverh\u00e4lnis besteht": {}, "3460 Verbindlichkeiten gegenueber Gesellschaftern": {"account_type": "Payable"}, "3470 Einlagen stiller Gesellschafter": {"account_type": "Payable"}, - "3585 Verbindlichkeiten Lohnsteuer": {"account_type": "Tax"}, - "3590 Verbindlichkeiten Kommunalabgaben": {"account_type": "Tax"}, - "3595 Verbindlichkeiten Dienstgeberbeitrag": {"account_type": "Tax"}, + "3585 Verbindlichkeiten Lohnsteuer": {"account_type": "Tax"}, + "3590 Verbindlichkeiten Kommunalabgaben": {"account_type": "Tax"}, + "3595 Verbindlichkeiten Dienstgeberbeitrag": {"account_type": "Tax"}, "3600 Verbindlichkeiten Sozialversicherung": {"account_type": "Payable"}, - "3640 Verbindlichkeiten Loehne und Gehaelter": {"account_type": "Payable"}, + "3640 Verbindlichkeiten Loehne und Gehaelter": {"account_type": "Payable"}, "3700 Sonstige Verbindlichkeiten": {"account_type": "Payable"}, "3900 Passive Rechnungsabgrenzungsposten": {"account_type": "Payable"}, "3100 Anleihen (einschlie\u00dflich konvertibler)": {"account_type": "Payable"}, @@ -119,13 +118,13 @@ }, "3515 Umsatzsteuer Inland 10%": { "account_type": "Tax" - }, + }, "3520 Umsatzsteuer aus i.g. Erwerb 20%": { "account_type": "Tax" }, "3525 Umsatzsteuer aus i.g. Erwerb 10%": { "account_type": "Tax" - }, + }, "3560 Umsatzsteuer-Evidenzkonto f\u00fcr erhaltene Anzahlungen auf Bestellungen": {}, "3360 Verbindlichkeiten aus Lieferungen u. Leistungen EU": { "account_type": "Payable" @@ -141,7 +140,7 @@ "account_type": "Tax" }, "root_type": "Liability" - }, + }, "Klasse 2 Aktiva: Umlaufverm\u00f6gen, Rechnungsabgrenzungen": { "2030 Forderungen aus Lieferungen und Leistungen Inland (0% USt, umsatzsteuerfrei)": { "account_type": "Receivable" @@ -154,7 +153,7 @@ }, "2040 Forderungen aus Lieferungen und Leistungen Inland (sonstiger USt-Satz)": { "account_type": "Receivable" - }, + }, "2100 Forderungen aus Lieferungen und Leistungen EU": { "account_type": "Receivable" }, @@ -192,7 +191,7 @@ "account_type": "Receivable" }, "2570 Einfuhrumsatzsteuer (bezahlt)": {"account_type": "Tax"}, - + "2460 Eingeforderte aber noch nicht eingezahlte Einlagen": { "account_type": "Receivable" }, @@ -243,10 +242,10 @@ }, "2800 Guthaben bei Bank": { "account_type": "Bank" - }, + }, "2801 Guthaben bei Bank - Sparkonto": { "account_type": "Bank" - }, + }, "2810 Guthaben bei Paypal": { "account_type": "Bank" }, @@ -264,19 +263,19 @@ }, "2895 Schwebende Geldbewegugen": { "account_type": "Bank" - }, + }, "2513 Vorsteuer Inland 5%": { "account_type": "Tax" }, "2515 Vorsteuer Inland 20%": { "account_type": "Tax" - }, + }, "2520 Vorsteuer aus innergemeinschaftlichem Erwerb 10%": { "account_type": "Tax" }, "2525 Vorsteuer aus innergemeinschaftlichem Erwerb 20%": { "account_type": "Tax" - }, + }, "2530 Vorsteuer \u00a719/Art 19 ( reverse charge ) ": { "account_type": "Tax" }, @@ -286,16 +285,16 @@ "root_type": "Asset" }, "Klasse 4: Betriebliche Erträge": { - "4000 Erlöse 20 %": {"account_type": "Income Account"}, - "4020 Erl\u00f6se 0 % steuerbefreit": {"account_type": "Income Account"}, + "4000 Erlöse 20 %": {"account_type": "Income Account"}, + "4020 Erl\u00f6se 0 % steuerbefreit": {"account_type": "Income Account"}, "4010 Erl\u00f6se 10 %": {"account_type": "Income Account"}, - "4030 Erl\u00f6se 13 %": {"account_type": "Income Account"}, - "4040 Erl\u00f6se 0 % innergemeinschaftliche Lieferungen": {"account_type": "Income Account"}, - "4400 Erl\u00f6sreduktion 0 % steuerbefreit": {"account_type": "Expense Account"}, + "4030 Erl\u00f6se 13 %": {"account_type": "Income Account"}, + "4040 Erl\u00f6se 0 % innergemeinschaftliche Lieferungen": {"account_type": "Income Account"}, + "4400 Erl\u00f6sreduktion 0 % steuerbefreit": {"account_type": "Expense Account"}, "4410 Erl\u00f6sreduktion 10 %": {"account_type": "Expense Account"}, "4420 Erl\u00f6sreduktion 20 %": {"account_type": "Expense Account"}, - "4430 Erl\u00f6sreduktion 13 %": {"account_type": "Expense Account"}, - "4440 Erl\u00f6sreduktion 0 % innergemeinschaftliche Lieferungen": {"account_type": "Expense Account"}, + "4430 Erl\u00f6sreduktion 13 %": {"account_type": "Expense Account"}, + "4440 Erl\u00f6sreduktion 0 % innergemeinschaftliche Lieferungen": {"account_type": "Expense Account"}, "4500 Ver\u00e4nderungen des Bestandes an fertigen und unfertigen Erzeugn. sowie an noch nicht abrechenbaren Leistungen": {"account_type": "Income Account"}, "4580 Aktivierte Eigenleistungen": {"account_type": "Income Account"}, "4600 Erl\u00f6se aus dem Abgang vom Anlageverm\u00f6gen, ausgen. Finanzanlagen": {"account_type": "Income Account"}, @@ -304,15 +303,15 @@ "4700 Ertr\u00e4ge aus der Aufl\u00f6sung von R\u00fcckstellungen": {"account_type": "Income Account"}, "4800 \u00dcbrige betriebliche Ertr\u00e4ge": {"account_type": "Income Account"}, "root_type": "Income" - }, + }, "Klasse 5: Aufwand f\u00fcr Material und Leistungen": { - "5000 Einkauf Partnerleistungen": {"account_type": "Cost of Goods Sold"}, + "5000 Einkauf Partnerleistungen": {"account_type": "Cost of Goods Sold"}, "5100 Verbrauch an Rohstoffen": {"account_type": "Cost of Goods Sold"}, "5200 Verbrauch von bezogenen Fertig- und Einzelteilen": {"account_type": "Cost of Goods Sold"}, "5300 Verbrauch von Hilfsstoffen": {"account_type": "Cost of Goods Sold"}, "5340 Verbrauch Verpackungsmaterial": {"account_type": "Cost of Goods Sold"}, "5470 Verbrauch von Kleinmaterial": {"account_type": "Cost of Goods Sold"}, - "5450 Verbrauch von Reinigungsmaterial": {"account_type": "Cost of Goods Sold"}, + "5450 Verbrauch von Reinigungsmaterial": {"account_type": "Cost of Goods Sold"}, "5400 Verbrauch von Betriebsstoffen": {"account_type": "Cost of Goods Sold"}, "5500 Verbrauch von Werkzeugen und anderen Erzeugungshilfsmittel": {"account_type": "Cost of Goods Sold"}, "5600 Verbrauch von Brenn- und Treibstoffen, Energie und Wasser": {"account_type": "Cost of Goods Sold"}, @@ -340,7 +339,7 @@ "6700 Sonstige Sozialaufwendungen": {"account_type": "Payable"}, "6900 Aufwandsstellenrechnung Personal": {"account_type": "Payable"}, "root_type": "Expense" - }, + }, "Klasse 7: Abschreibungen und sonstige betriebliche Aufwendungen": { "7010 Abschreibungen auf das Anlageverm\u00f6gen (ausgenommen Finanzanlagen)": {"account_type": "Depreciation"}, "7100 Sonstige Steuern und Geb\u00fchren": {"account_type": "Tax"}, @@ -349,7 +348,7 @@ "7310 Fahrrad - Aufwand": {"account_type": "Expense Account"}, "7320 Kfz - Aufwand": {"account_type": "Expense Account"}, "7330 LKW - Aufwand": {"account_type": "Expense Account"}, - "7340 Lastenrad - Aufwand": {"account_type": "Expense Account"}, + "7340 Lastenrad - Aufwand": {"account_type": "Expense Account"}, "7350 Reise- und Fahraufwand": {"account_type": "Expense Account"}, "7360 Tag- und N\u00e4chtigungsgelder": {"account_type": "Expense Account"}, "7380 Nachrichtenaufwand": {"account_type": "Expense Account"}, @@ -409,7 +408,7 @@ "8990 Gewinnabfuhr bzw. Verlust\u00fcberrechnung aus Ergebnisabf\u00fchrungsvertr\u00e4gen": {"account_type": "Expense Account"}, "8350 nicht ausgenutzte Lieferantenskonti": {"account_type": "Expense Account"}, "root_type": "Income" - }, + }, "Klasse 9 Passiva: Eigenkapital, R\u00fccklagen, stille Einlagen, Abschlusskonten": { "9000 Gezeichnetes bzw. gewidmetes Kapital": { "account_type": "Equity" @@ -435,5 +434,5 @@ }, "root_type": "Equity" } - } + } } diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR03_gnucash.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR03.json similarity index 100% rename from erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR03_gnucash.json rename to erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR03.json 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 57e8bdd9dc7..2bf55cfcd04 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,1711 +1,3667 @@ { - "country_code": "de", - "name": "SKR04 ohne Kontonummern", + "country_code": "de", + "name": "SKR04 mit Kontonummern", "tree": { - "Bilanz - Aktiva": { - "Anlageverm\u00f6gen": { - "Anlageverm\u00f6gen Immaterielle Verm\u00f6gensgegenst\u00e4nde": { - "Geleistete Anzahlungen 1": { - "Anzahlungen auf Gesch\u00e4fts- oder Firmenwert": {}, - "Geleistete Anzahlungen auf immaterielle Verm\u00f6gensgegenst\u00e4nde": {} - }, - "Gesch\u00e4fts- oder Firmenwert": { - "Gesch\u00e4fts- oder Firmenwert 1": {} - }, - "Konzessionen- gewerbliche Schutzrechte und \u00e4hnliche Rechte und Werte sowie Lizenzen an solchen Rechten und Werten": { - "Konzessionen- gewerbliche Schutzrechte und \u00e4hnliche Rechte und Werte sowie Lizenzen an solchen Rechten und Werten 1": { - "EDV-Software": {}, - "Gewerbliche Schutzrechte": {}, - "Konzessionen ": {}, - "Lizenzen an gewerblichen Schutzrechten und \u00e4hnlichen Rechten und Werten ": {}, - "\u00e4hnliche Rechte und Werte ": {} + "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" } - }, - "Verschmelzungsmehrwert": { - "Verschmelzungsmehrwert 1": {} - } - }, - "Aufwendungen f\u00fcr die Ingangsetzung und Erweiterung des Gesch\u00e4ftsbetriebs": { - "Aufwendungen f\u00fcr die Ingangsetzung und Erweiterung des Gesch\u00e4ftsbetriebs 1": { - "Aufwendungen f\u00fcr die Ingangsetzung und Erweiterung des Gesch\u00e4ftsbetriebs 2": {} - }, - "Aufwendungen f\u00fcr die W\u00e4hrungsumstellung auf den Euro": { - "Aufwendungen f\u00fcr die W\u00e4hrungsumstellung auf den Euro 1": {} - } - }, - "Ausstehende Einlagen auf das gezeichnete Kapital": { - "Ausstehende Einlagen auf das gezeichnete Kapital 1": { - "Ausstehende Einlagen auf das gezeichnete Kapital- eingefordert (Aktivausweis)": {}, - "Ausstehende Einlagen auf das gezeichnete Kapital- nichteingefordert (Aktivausweis)": {} - }, - "Sonstige Aktiva oder sonstige Passiva": { - "Ausstehende Einlagen auf das Kommandit-Kapital- eingefordert": {}, - "Ausstehende Einlagen auf das Kommandit-Kapital- nicht eingefordert": {}, - "Ausstehende Einlagen auf das Komplement\u00e4r-Kapital- eingefordert": {}, - "Ausstehende Einlagen auf das Komplement\u00e4r-Kapital- nicht eingefordert": {} - } - }, - "Finanzanlagen": { - "Anteile an verbundenen Unternehmen 1": { - "Anteile an herrschender oder mit Mehrheit beteiligter Gesellschaft 1": {}, - "Anteile an verbundenen Unternehmen 2": {} - }, - "Ausleihungen an Unternehmen- mit denen ein Beteiligungsverh\u00e4ltnis besteht": { - "Ausleihungen an Unternehmen- mit denen ein Beteiligungsverh\u00e4ltnis besteht 1": {} - }, - "Ausleihungen an verbundene Unternehmen": { - "Ausleihungen an verbundene Unternehmen 1": {} - }, - "Beteiligungen": { - "Beteiligungen 1": { - "Andere Beteilgungen an Personengesellschaften": {}, - "Andere Beteiligungen an Kapitalgesellschaften": {}, - "Atypisch stille Beteiligungen": {}, - "Beteiligungen einer GmbH Co. KG an einer Komplement\u00e4r GmbH": {}, - "Typisch stille Beteiligungen": {} + }, + "3 - Gesch\u00e4fts- oder Firmenwert": { + "is_group": 1, + "Gesch\u00e4fts- oder Firmenwert ": { + "account_number": "0150" + }, + "Anz. auf Gesch\u00e4fts- oder Firmenwert": { + "account_number": "0179" } - }, - "Genossenschaftsanteile": { - "Genossenschaftsanteile zum langfristigen Verbleib": {} - }, - "R\u00fcckdeckungsanspr\u00fcche aus Lebensversicherungen": { - "R\u00fcckdeckungsanspr\u00fcche aus Lebensversicherungen zum langfristigen Verbleib": {} - }, - "Sonstige Ausleihungen": { - "Sonstige Ausleihungen 1": { - "Ausleihungen an Gesellschafter": {}, - "Ausleihungen an nahe stehende Personen": {}, - "Darlehen 1": {} - } - }, - "Wertpapiere des Anlageverm\u00f6gens": { - "Wertpapiere des Anlageverm\u00f6gens 1": { - "Festverzinsliche Wertpapiere": {}, - "Wertpapiere mit Gewinnbeteiligungsanspr\u00fcchen- die dem Halbeink\u00fcnfteverfahren unterliegen": {} + }, + "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" } } - }, - "Sachanlagen": { - "Andere Anlagen- Betriebs- und Gesch\u00e4ftsaustattung": { - "Andere Anlagen- Betriebs- und Gesch\u00e4ftsaustattung 1": { - "Andere Anlagen ": { - "account_type": "Fixed Asset" - }, - "B\u00fcroeinrichtungen": {}, - "Einbauten in fremde Grundst\u00fccke": {}, - "Geringwertige Wirtschaftsg\u00fcter bis 410 Euro": {}, - "Ger\u00fcst- und Schalungsmaterial": {}, - "Ladeneinrichtungen": {}, - "Lkw": {}, - "Pkw": {}, - "Sonstige Betriebs- und Gesch\u00e4ftsausstattung": {}, - "Sonstige Transportmittel": {}, - "Werkzeuge": {} + }, + "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" } - }, - "Geleistete Anzahlungen und Anlagen im Bau": { - "Geleistete Anzahlungen und Anlagen im Bau 1": { - "Andere Anlagen- Betriebs- und Gesch\u00e4ftsaustattung im Bau": {}, - "Anzahlungen auf Gesch\u00e4fts- Fabrik- und andere Bauten auf fremden Grundst\u00fccken": {}, - "Anzahlungen auf Gesch\u00e4fts- Fabrik-und andere Bauten auf eigenen Grundst\u00fccken und grundst\u00fccksgleichen Rechten ": {}, - "Anzahlungen auf Grundst\u00fccke und grundst\u00fccksgleiche Rechte ohne Bauten": {}, - "Anzahlungen auf Wohnbauten auf eigenen Grundst\u00fccken und grundst\u00fccksgleichen Rechten": {}, - "Anzahlungen auf Wohnbauten auf fremden Grundst\u00fccken ": {}, - "Anzahlungen auf andere Anlagen- Betriebs und Gesch\u00e4ftsausstattung": {}, - "Anzahlungen auf technische Anlagen und Maschinen": {}, - "Gesch\u00e4fts- Fabrik- und andere Bauten im Bau auf eingenen Grundst\u00fccken": {}, - "Gesch\u00e4fts- Fabrik- und andere Bauten im Bau auf fremden Grundst\u00fccken": {}, - "Technische Anlagen und Maschinen im Bau ": {}, - "Wohnbauten im Bau": {} + }, + "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" } - }, - "Grundst\u00fccke- grundst\u00fccksgleiche Rechte und Bauten einschlie\u00dflich der Bauten auf fremden Grundst\u00fccken": { - "Grundst\u00fccke- grundst\u00fccksgleiche Rechte und Bauten einschlie\u00dflich der Bauten auf fremden Grundst\u00fccken 1": { - "Andere Bauten": {}, - "Au\u00dfenanlagen ": {}, - "Au\u00dfenanlagen 1": {}, - "Au\u00dfenanlagen f\u00fcr Gesch\u00e4fts- Fabrik- und andere Bauten ": {}, - "Bauten auf eigenen Grundst\u00fccken und grundst\u00fccksgleichen Rechten": {}, - "Bauten auf fremden Grundst\u00fccken": {}, - "Einrichtungen f\u00fcr Gesch\u00e4fts-Fabrik und andere Bauten": {}, - "Einrichtungen f\u00fcr Wohnbauten": {}, - "Fabrikbauten": { - "account_type": "Fixed Asset" - }, - "Garagen": {}, - "Geb\u00e4udeteile des h\u00e4uslischen Arbeitszimmers": {}, - "Gesch\u00e4ftsbauten": {}, - "Grundst\u00fccke mit Substanzverzehr": {}, - "Grundst\u00fccke und grundst\u00fccksgleiche Rechte ohne Bauten": {}, - "Grundst\u00fccksanteil des h\u00e4uslichen Arbeitszimmers": {}, - "Grundst\u00fccksgleiche Rechte (Erbbaurecht- Dauerwohnrecht)": {}, - "Grundst\u00fcckswerte eigener bebauter Grundst\u00fccke": {}, - "Hof- und Wegebefestigungen": {}, - "Unbebaute Grundst\u00fccke": {}, - "Wohnbauten": {} + }, + "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" } - }, - "Technische Anlagen und Maschinen": { - "Technische Anlagen und Maschinen 1": { - "Betriebsvorrichtungen": {}, - "Maschinen": { - "account_type": "Fixed Asset" - }, - "Maschinen gebundene Werkzeuge": {}, - "Technische Anlagen ": {} + }, + "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" } - } - }, - "account_type": "Fixed Asset" - }, - "Umlaufverm\u00f6gen": { - "Abgrenzungsposten": { - "Abgrenzung latenter Steuern": { - "Abgrenzung aktive latente Steuern ": {} - }, - "Rechnungsabgrenzungsposten": { - "Aktive Rechnungsabgrenzung": { - "Als Aufwand ber\u00fccksichtigte Umstazsteuer auf Anzahlungen": {}, - "Als Aufwand ber\u00fccksichtigte Z\u00f6lle und Verbrauchsteuern auf Vorr\u00e4te": {}, - "Damnum/Disagio": {} + }, + "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" } - } - }, - "Forderungen und sonstige Verm\u00f6gensgegenst\u00e4nde": { - "Eingeforderte Nachsch\u00fcsse": { - "Eingeforderte Nachsch\u00fcsse (gegenkonto 2929)": {} - }, - "Eingeforderte- noch ausstehende Kapitaleinlagen": { - "Ausstehende Einlagen auf das gezeichnete Kapital- eingefordert": {} - }, - "Forderungen aus Lieferungen und Leistungen H-Saldo": { - "Einzelwertberechtigungen zu Forderungen mit einer Restlaufzeit bis zu 1 Jahr": {}, - "Einzelwertberechtigungen zu Forderungen mit einer Restlaufzeit von mehr als 1 Jahr": {}, - "Gegenkonto zu sonstigen Verm\u00f6gensgegenst\u00e4nden bei Buchungen \u00fcber Debitorenkonto": {}, - "Pauschalwertberichtigung zu Forderung mit einer Restlaufzeit bis zu 1 Jahr": {}, - "Pauschalwertberichtigung zu Forderung mit einer Restlaufzeit von mehr als 1 Jahr": {} - }, - "Forderungen aus Lieferungen und Leistungen H-Saldo oder sonstige Verbindlichkeiten S-Saldo": { - "Gegenkonto 1221-1229- 1240-1245- 1250-1257- 1270-1279- 1290-1297 bei Aufteilung Debitorenkonto": {} - }, - "Forderungen aus Lieferungen und Leistungen oder sonstige Verbindlichkeiten": { - "Forderungen aus Lieferungen und Leistungen ": { - "Forderungen aus Dienstleistungen": { - "account_type": "Receivable" - }, - "Forderungen aus Lieferungen und Leistungen nach Durchschnittss\u00e4tzen gem\u00e4\u00df \u00a724 UStG (E\u00fcR)": { - "account_type": "Receivable" - }, - "Forderungen aus Lieferungen und Leistungen ohne Kontokorent": {}, - "Forderungen aus Lieferungen und Leistungen ohne Kontokorent - Restlaufzeit bis 1 Jahr": {}, - "Forderungen aus Lieferungen und Leistungen ohne Kontokorent - Restlaufzeit gr\u00f6\u00dfer 1 Jahr.": {}, - "Forderungen aus Lieferungen und Leistungen zum allgemeinen Umsatzsteuersatz oder eines Kleinunternehmers (E\u00fcR)": { - "account_type": "Receivable" - }, - "Forderungen aus Lieferungen und Leistungen zum erm\u00e4\u00dfigten Umsatzsteuersatz (E\u00fcR)": { - "account_type": "Receivable" - }, - "Forderungen aus steuerfreien oder nicht steuerbaren Lieferungen und Leistungen (E\u00fcR)": { - "account_type": "Receivable" - }, - "Forderungen nach \u00a711 Abs. 1 Satz 2 EStG f\u00fcr \u00a7 4/3 EStG": { - "account_type": "Receivable" - }, - "Gegenkonto 1215-1218 bei Aufteilung der Forderungen nach Steuers\u00e4tzen (E\u00fcR)": { - "account_type": "Receivable" - }, - "Wechsel aus Lieferungen und Leistungen": {}, - "Wechsel aus Lieferungen und Leistungen Restlaufzeit bis 1 Jahr": {}, - "Wechsel aus Lieferungen und Leistungen Restlaufzeit gr\u00f6\u00dfer 1 Jahr": {}, - "Wechsel aus Lieferungen und Leistungen- bundesbankf\u00e4hig.": {}, - "Zweifelhafte Forderungen": {}, - "Zweifelhafte Forderungen - Restlaufzeit bis 1 Jahr": {}, - "Zweifelhafte Forderungen - Restlaufzeit gr\u00f6\u00dfer 1 Jahr": {} - }, - "Forderungen aus Lieferungen und Leistungen gegen Gesellschafter": { + }, + "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" + }, + "Debitoren": { + "is_group": 1, + "account_number": "10000" + }, + "Forderungen aus Lieferungen und Leistungen": { + "account_number": "1200", "account_type": "Receivable" - }, - "Forderungen aus Lieferungen und Leistungen gegen Gesellschafter - Restlaufzeit bis 1 Jahr": {}, - "Forderungen aus Lieferungen und Leistungen gegen Gesellschafter - Restlaufzeit gr\u00f6\u00dfer 1 Jahr": {} - }, - "Forderungen gegen Unternehmen- mit denen ein Beteiligungsverh\u00e4ltnis besteht H-Saldo": { - "is_group": 1 - }, - "Forderungen gegen verbundene Unternehmen H-Saldo": { - "Wertberichtigungen zu Forderungen mit einer Restlaufzeit bis zu 1 Jahr gegen verbundene Unternehmen": {}, - "Wertberichtigungen zu Forderungen mit einer Restlaufzeit von mehr als 1 Jahr gegen verbundene Unternehmen": {} - }, - "Forderungen gegen verbundene Unternehmen oder Verbindlichkeiten gegen\u00fcber verbundenen Unternehmen": { - "Forderungen gegen verbundene Unternehmen ": { - "Besitzwechsel gegen verbundene Unternehmen": {}, - "Besitzwechsel gegen verbundene Unternehmen - Restlaufzeit bis 1 Jahr": {}, - "Besitzwechsel gegen verbundene Unternehmen - Restlaufzeit gr\u00f6\u00dfer Jahr": {}, - "Besitzwechsel gegen verbundene Unternehmen- bundesbankf\u00e4hig": {}, - "Forderungen aus Lieferungen und Leistungen gegen verbundenen Unternehmen": { - "account_type": "Receivable" - }, - "Forderungen aus Lieferungen und Leistungen gegen verbundenen Unternehmen - Restlaufzeit bis 1 Jahr": {}, - "Forderungen aus Lieferungen und Leistungen gegen verbundenen Unternehmen - Restlaufzeit gr\u00f6\u00dfer 1 Jahr": {}, - "Forderungen gegen verbundene Unternehmen - Restlaufzeit bis 1 Jahr. ": {}, - "Forderungen gegen verbundene Unternehmen - Restlaufzeit gr\u00f6\u00dfer 1 Jahr. ": {} - } - }, - "Sonstige Verbindlichkeiten S-Saldo": { - "Verrechnungskonto erhaltene Anzahlungen bei Buchungen \u00fcber Debitorenkonto": {} - }, - "Sonstige Verm\u00f6gensgegenst\u00e4nde": { - "Agenturwarenabrechnung": {}, - "Anspr\u00fcche aus R\u00fcckdeckungsversicherungen": {}, - "Forderungen an das Finanzamt aus abgef\u00fchrtem Bauabzugsbetrag": {}, - "Forderungen aus einrichteten Verbrauchsteuern": {}, - "Genossenschaftsanteile zum kurzfristigen Verbleib": {}, - "GmbH-Anteile zum kurzfristigen Verbleib": {}, - "K\u00f6rperschaftsteuerguthaben nach \u00a7 37 KStG - Restlaufzeit bis 1 Jahr": {}, - "K\u00f6rperschaftsteuerguthaben nach \u00a7 37 KStG - Restlaufzeit gr\u00f6\u00dfer 1 Jahr": {}, - "K\u00f6rperschaftsteuerr\u00fcckforderung": {}, - "Sonstige Verm\u00f6gensgegenst\u00e4nde 1": { - "Darlehen": {}, - "Darlehen - Restlaufzeit bis 1 jahr": {}, - "Darlehen - Restlaufzeit gr\u00f6\u00dfer 1 jahr": {}, - "Forderung gegen Aufsichtsrats- und Beirats- Mitglieder": {}, - "Forderung gegen Aufsichtsrats- und Beirats- Mitglieder - Restlaufzeit bis 1 Jahr": {}, - "Forderung gegen Aufsichtsrats- und Beirats- Mitglieder - Restlaufzeit gr\u00f6\u00dfer 1 Jahr": {}, - "Forderungen gegen Gesellschafter": {}, - "Forderungen gegen Gesellschafter - Restlaufzeit bis 1 Jahr": {}, - "Forderungen gegen Gesellschafter - Restlaufzeit gr\u00f6\u00dfer 1 Jahr": {}, - "Forderungen gegen Personal aus Lohn- und Gehaltsabrechnung": {}, - "Forderungen gegen Personal aus Lohn- und Gehaltsabrechnung - Restlaufzeit bis 1 Jahr": {}, - "Forderungen gegen Personal aus Lohn- und Gehaltsabrechnung - Restlaufzeit gr\u00f6\u00dfer 1 Jahr": {}, - "Forderungen gegen Vorstandsmitglieder und Gesch\u00e4ftsf\u00fchrer": {}, - "Forderungen gegen Vorstandsmitglieder und Gesch\u00e4ftsf\u00fchrer - Restlaufzeit bis 1 Jahr": {}, - "Forderungen gegen Vorstandsmitglieder und Gesch\u00e4ftsf\u00fchrer - Restlaufzeit gr\u00f6\u00dfer 1 Jahr": {}, - "Kautionen ": {}, - "Kautionen - Restlaufzeit bis 1 Jahr": {}, - "Kautionen - Restlaufzeit gr\u00f6\u00dfer 1 Jar": {}, - "Sonstige Verm\u00f6gensgegenst\u00e4nde - Restlaufzeit bis 1 Jahr": {}, - "Sonstige Verm\u00f6gensgegenst\u00e4nde - Restlaufzeit gr\u00f6\u00dfer 1 Jahr": {} - }, - "Steuererstattungsanspruch gegen\u00fcber andere EG-L\u00e4ndern": {}, - "Steuer\u00fcberzahlungen": {}, - "Umsatzsteuerforderung": {}, - "Umsatzsteuerforderungen Vorjahr": {}, - "Umsatzsteuerforderungen fr\u00fchere Jahre": {} - }, - "Sonstige Verm\u00f6gensgegenst\u00e4nde oder sonstige Verbindlichkeiten": { - "Abziehbare Vorsteuer": { - "account_type": "Tax", - "is_group": 1, - "Abziehbare Vorsteuer 16%": {}, - "Abziehbare Vorsteuer 19%": {}, - "Abziehbare Vorsteuer 7%": {}, - "Abziehbare Vorsteuer aus der Auslagerung von Gegenst\u00e4nden aus einem Unsatzsteuerlager": {}, - "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb": {}, - "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 16%": {}, - "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb 19%": {}, - "Abziehbare Vorsteuer aus innergemeinschaftlichem Erwerb von Neufahrzeugen von Lieferanten ohne Ust-Identifikationsnummer": {}, - "Abziehbare Vorsteuer nach \u00a7 13b UStG ": {}, - "Abziehbare Vorsteuer nach \u00a7 13b UStG 16%": {}, - "Abziehbare Vorsteuer nach \u00a7 13b UStG 19%": {} }, - "Aufl\u00f6sung Vorsteuer aus Vorjahr \u00a7 4/3 EStG": {}, - "Aufzuteilende Vorsteuer": {}, - "Aufzuteilende Vorsteuer 16%": {}, - "Aufzuteilende Vorsteuer 19%": {}, - "Aufzuteilende Vorsteuer 7%": {}, - "Aufzuteilende Vorsteuer aus innergemeinschaftlichem Erwerb": {}, - "Aufzuteilende Vorsteuer aus innergemeinschaftlichem Erwerb 19%": {}, - "Aufzuteilende Vorsteuer nach \u00a7\u00a7 13a/13b UStG": {}, - "Aufzuteilende Vorsteuer nach \u00a7\u00a7 13a/13b UStG 16%": {}, - "Aufzuteilende Vorsteuer nach \u00a7\u00a7 13a/13b UStG 19%": {}, - "Bezahlte Einfuhrumsatzsteuer": {}, - "Durchlaufende Posten": {}, - "Fremdgeld": {}, - "Gegenkonto Vorsteuer \u00a7 4/3 EStG": {}, - "Gegenkonto f\u00fcr Vorsteuer nach Durchschnittss\u00e4tzen f\u00fcr \u00a7 4 Abs. 3 EStG": {}, - "Geldtransit": {}, - "Nachtr\u00e4glich abziehbare Vorsteuer- \u00a7 15a Abs. 1 UStG- bewegliche Wirtschaftsg\u00fcter": {}, - "Nachtr\u00e4glich abziehbare Vorsteuer- \u00a7 15a Abs. 2 UStG": {}, - "Nat\u00fcrlich abziehbare Vorsteuer- \u00a7 15a Abs. 1 UStG- unbewegliche Wirtschaftsg\u00fcter": {}, - "Umsatzsteuerforderungen laufendes Jahr": {}, - "Verrechnungskonto Gewinnermittlung \u00a7 4/3 EStG- ergebniswirksam": {}, - "Verrechnungskonto Gewinnermittlung \u00a7 4/3 EStG- nicht ergebniswirksam": {}, - "Verrechnungskonto Ist-Versteuerung": {}, - "Vorsteuer aus Investitionen \u00a7 4/3 EStG": {}, - "Vorsteuer im Folgejahr abziehbar": {}, - "Vorsteuer nach allgemeinen Durchschnittss\u00e4tzen UStVA Kz. 63": {}, - "Wirtschaftsg\u00fcter des Umlaufverm\u00f6gens gem\u00e4\u00df \u00a74 Abs. 3 Satz 4 EStG": {}, - "Zur\u00fcckzahlende Vorsteuer- \u00a7 15a Abs. 1 UStG- unbewegliche Wirtschaftsg\u00fcter": {}, - "Zur\u00fcckzuzahlende Vorsteuer- \u00a7 15a Abs. 1 UStG- bewegliche Wirtschaftsg\u00fcter": {}, - "Zur\u00fcckzuzahlende Vorsteuer- \u00a7 15a Abs. 2 UStG": {}, - "\u00fcberleitungskonto Kostenstellen": {} - } - }, - "Kassenbestand- Bundesbankguthaben- Guthaben bei Kreditinstituten und Schecks": { - "Kassenbestand - Bundesbankguthaben - Guthaben b. Kreditinstit. u. Schecks o. Verbindlichk. geg. Kreditinstituten": { - "Bank": {}, - "Bank 1": {}, - "Bank 2": {}, - "Bank 3": {}, - "Bank 4": {}, - "Bank 5": {}, - "Bundesbankguthaben": {}, - "Finanzmittelanlagen im Rahmen der Kurzfristigen Finanzdisposition": {}, - "LZB-Guthaben": {}, - "Postbank": {}, - "Postbank 1": {}, - "Postbank 2": {}, - "Postbank 3": {}, - "Verbindlichkeiten gegen\u00fcber Kreditinstituten (nicht im Finanzmittelfonds enthalten)": {}, - "account_type": "Bank" - }, - "Kassenbestand- Bundesbankguthaben- Guthaben bei Kreditinstituten und Schecks 1": { - "Kasse ": { - "Nebenkasse 1": {}, - "Nebenkasse 2": {}, - "account_type": "Cash" - }, - "Schecks": {} - } - }, - "Vorr\u00e4te": { - "Erhaltene Anzahlungen auf Bestellungen": { - "Erhaltene Anzahlungen auf Bestellungen (": {} - }, - "Fertige Erzeugnisse und Waren": { - "* Lager Bestand Zwischenkonto": { - "account_type": "Stock Adjustment" - }, - "* Lager Bestandswert Korrektur": { - "account_type": "Expenses Included In Valuation" - }, - "* Lager Differenzkorrektur Gewinn / Verlust": {}, - "* Lager Differenzkorrektur Marktwert": {}, - "Fertige Erzeugnisse (Bestand)": {}, - "Fertige Erzeugnisse und Waren (Bestand)": {}, - "Waren (Bestand)": {} - }, - "Geleistete Anzahlungen ": { - "Geleistete Anzahlungen auf Vorr\u00e4te": { - "Geleistete Anzahlungen 15% Vorsteuer": {}, - "Geleistete Anzahlungen 16% Vorsteuer": {}, - "Geleistete Anzahlungen 19% Vorsteuer": {}, - "Geleistete Anzahlungen 7% Vorsteuer": {} - } - }, - "In Arbeit befindliche Auftr\u00e4ge ": { - "In Arbeit befindliche Auftr\u00e4ge 1": {} - }, - "In Ausf\u00fchrung befindliche Bauauftr\u00e4ge": { - "In Ausf\u00fchrung befindliche Bauauftr\u00e4ge 1": {} - }, - "Roh- Hilfs- und Betriebsstoffe": { - "Roh- Hilfs- und Betriebsstoffe (Bestand)": { - "account_type": "Cost of Goods Sold" - } - }, - "Unfertige Erzeugnisse- unfertige Leistungen": { - "Unfertige Erzeugnisse": {}, - "Unfertige Erzeugnisse- unfertige Leistungen (Bestand)": {}, - "Unfertige Leistungen": {} - }, - "account_type": "Stock" - }, - "Wertpapiere": { - "Anteile an verbundenen Unternehmen": { - "Anteile an herrschender oder mit Mehrheit beteiligter Gesellschaft": {}, - "Anteile an verbundenen Unternehmen (Umlaufverm\u00f6gen)": {} - }, - "Eigene Anteile ": { - "Eigene Anteile 1": {} - }, - "Sonstige Wertpapiere": { - "Sonstige Wertpapiere 1": { - "Andere Wertpapiere mit unwesentlichen Wertschwankungen im Sinne Textziffer 18 DRS 2": {}, - "Finanzwechsel": {}, - "Wertpapieranlagen im Rahmen der Kurzfristigen Finanzdisposition ": {} - } - } - } - }, - "root_type": "Asset" - }, - "Bilanz - Passiva": { - "Eigenkapital": { - "Gewinnr\u00fccklagen": { - "Andere Gewinnr\u00fccklagen": { - "Andere Gewinnr\u00fccklagen 1": { - "Eigenkapitalanteil von Wertaufholungen": {} - } - }, - "Gesetzliche R\u00fccklagen": { - "Gesetzliche R\u00fccklagen 1": {} - }, - "R\u00fccklage f\u00fcr Eigene Anteile": { - "R\u00fccklage f\u00fcr Eigene Anteile 1": {} - }, - "Satzungsm\u00e4\u00dfige R\u00fccklagen": { - "Satzungsm\u00e4\u00dfige R\u00fccklagen 1": {} - } - }, - "Gewinnvortrag / Verlustvortrag vor Verwendung": { - "Gewinnvortrag / Verlustvortrag": { - "Gewinnvortrag vor Verwendung": {}, - "Verlustvortrag vor Verwendung": {} - }, - "Vortrag auf neue Rechnung ": { - "Vortrag auf neue Rechnung (Bilanz)": {} - } - }, - "Gezeichnetes Kapital": { - "Gezeichnetes Kapital 1": { - "Gezeichnetes Kapital 2": {} - }, - "Nicht eingeforderte ausstehende Einlagen": { - "is_group": 1 - } - }, - "Kapital Teilhaber": { - "(zur freien Verf\u00fcgung ) 1": {}, - "Gesellschafter-Darlehen 3": {}, - "Kommandit-Kapital": {}, - "Verlustausgleichskonto": {} - }, - "Kapital Vollhafter / Einzelunternehmer": { - "(zur freien Verf\u00fcgung )": {}, - "Festkapital": {}, - "Gesellschafter-Darlehen 2": {}, - "Variables Kapital": {} - }, - "Kapitalr\u00fccklage": { - "Kapitalr\u00fccklage 1": { - "Kapitalr\u00fccklage 2": { - "Andere Zuzahlungen in das Eigenkapital ": {}, - "Eingefordertes Nachschusskapital (Gegenkonto 1299)": {}, - "Kapitalr\u00fccklage durch Ausgabe von Anteilen \u00fcber Nennbetrag": {}, - "Kapitalr\u00fccklage durch Ausgabe von Schuldverschreibungen f\u00fcr Wandlungsrechte und Optionsrechte zum Erwerb von Anteilen": {}, - "Kapitalr\u00fccklage durch Zuzahlungen gegen Gew\u00e4hrung eines Vorzugs f\u00fcr Anteile": {} - } - } - }, - "Privat Teilhafter": { - "Ausgew\u00f6hnliche Belastungen": {}, - "Grundst\u00fccksaufwand 1": {}, - "Grundst\u00fccksertrag 1": {}, - "Privateinlagen 1": {}, - "Privatentnahmen allgemein 1": {}, - "Privatsteuern 1": {}, - "Sonderausgaben beschr\u00e4nkt abzugsf\u00e4hig 1": {}, - "Sonderausgaben unbeschr\u00e4nkt abzugsf\u00e4hig 1": {}, - "Unentgeltliche Wertabgaben 1": {}, - "Zuwendungen- Spenden 1": {} - }, - "Privat Vollhafter/ Einzelunternehmer": { - "Ausgew\u00f6hnliche Belastungen 1": {}, - "Grundst\u00fccksaufwand (Umsatzsteuerschl\u00fcssel m\u00f6glich)": {}, - "Grundst\u00fccksaufwand 2": {}, - "Grundst\u00fccksertrag ( Umsatzsteuerschl\u00fcssel m\u00f6glich)": {}, - "Grundst\u00fccksertrag 2": {}, - "Privateinlagen 2": {}, - "Privatentnahmen allgemein 2": {}, - "Privatsteuern 2": {}, - "Sonderausgaben beschr\u00e4nkt abzugsf\u00e4hig 2": {}, - "Sonderausgaben unbeschr\u00e4nkt abzugsf\u00e4hig 2": {}, - "Unentgeltliche Wertabgaben 2": {}, - "Zuwendungen- Spenden 2": {} - }, - "Sonderposten mit R\u00fccklageanteil": { - "Sonderposten aus der W\u00e4hrungsumstellung auf den Euro": { - "Sonderposten aus der W\u00e4hrungsumstellung auf den Euro 1": {} - }, - "Sonderposten f\u00fcr Zusch\u00fcsse und Zulagen": { - "Sonderposten f\u00fcr Zusch\u00fcsse und Zulagen 1": {} - }, - "Sonderposten mit R\u00fccklageanteil 1": { - "Sonderposten mit R\u00fccklageanteil f\u00fcr F\u00f6rderung nach \u00a7 3 ZonenRFG / \u00a74-6 F\u00f6rdergebietsG": {}, - "Sonderposten mit R\u00fccklageanteil nach Abschnitt 35 EStG": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 1 EntwLStG": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 14 BerlinFG": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 4d EStG": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 52 Abs. 16 EStG": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 6b EStG": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 6d EStG": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 79 EStDV": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 7d EStG": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 7g Abs. 1 EStG": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 7g Abs. 3 u. 7 EStG": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 80 EStDV": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 82a EStDV": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 82d EStDV": {}, - "Sonderposten mit R\u00fccklageanteil nach \u00a7 82e EStDV": {}, - "Sonderposten mit R\u00fccklageanteil steuerfreie R\u00fccklagen": {}, - "Sonderposten mit R\u00fccklageanteil- Sonderabschreibung": {} - } - } - }, - "Fremdkapital": { - "Rechnungsabgrenzungsposten 1": { - "Rechnungsabgrenzungsposten 2": { - "Passive Rechnungsabgrenzung 1": {} - }, - "Sonstige Passiva oder sontige Aktiva": { - "Abgrenzungen zur unterj\u00e4hrigen Kostenverrechnung f\u00fcr BWA": {} - } - }, - "R\u00fcckstellungen ": { - "R\u00fcckstellungen f\u00fcr Pensionen und \u00e4hnliche Verpflichtungen": { - "R\u00fcckstellungen f\u00fcr Pensionen und \u00e4hnliche Verpflichtungen 1": { - "Pensionsr\u00fcckstellungen": {}, - "R\u00fcckstellungen f\u00fcr Pensions\u00e4hnliche Verpflichtungen": {} - } - }, - "Sonstige R\u00fcckstellungen": { - "Sonstige R\u00fcckstellungen 1": { - "Aufwandsr\u00fcckstellungen gem\u00e4\u00df \u00a7 249 Abs. 2 HGB": {}, - "R\u00fcckstellungen f\u00fcr Abraum- und Abfallbeseitigung": {}, - "R\u00fcckstellungen f\u00fcr Abschluss- und Pr\u00fcfungskosten": {}, - "R\u00fcckstellungen f\u00fcr Gew\u00e4hrleistungen (Gegenkonto 6790)": {}, - "R\u00fcckstellungen f\u00fcr Personelkosten": {}, - "R\u00fcckstellungen f\u00fcr Umweltschutz": {}, - "R\u00fcckstellungen f\u00fcr drohende Verluste aus schwebenden Gesch\u00e4ften": {}, - "R\u00fcckstellungen f\u00fcr unterlassene Aufwendungenn f\u00fcr Instandhaltung- Nachholung in den ersten drei Monaten": {}, - "R\u00fcckstellungen f\u00fcr unterlassene Aufwendungenn f\u00fcr Instandhaltung- Nachholung innerhalb des 4. bis 12. Monats": {}, - "R\u00fcckstellungen zur Erf\u00fcllung der Aufbewahrungspflichten": {} - } - }, - "Steuerr\u00fcckstellungen": { - "Steuerr\u00fcckstellungen 1": { - "Gewerbesteuerr\u00fcckstellung": {}, - "K\u00f6rperschaftsteuerr\u00fcckstellung": {}, - "R\u00fcckstellung f\u00fcr latente Steuern ": {} - } - } - }, - "Verbindlichkeiten ": { - "Anleihen": { - "Anleihen- nicht konvertibel": { - "Anleihen- konvertibel": {}, - "Anleihen- konvertibel Restlaufzeit 1 bis 5 Jahre": {}, - "Anleihen- konvertibel Restlaufzeit bis 1 Jahr": {}, - "Anleihen- konvertibel Restlaufzeit gr\u00f6\u00dfer 5 Jahr": {}, - "Anleihen- nicht konvertibel Restlaufzeit 1 bis 5 Jahre": {}, - "Anleihen- nicht konvertibel Restlaufzeit bis 1 Jahr": {}, - "Anleihen- nicht konvertibel Restlaufzeit gr\u00f6\u00dfer 5 Jahre ": {} - } - }, - "Erhaltene Anzahlungen auf Bestellungen 1": { - "Erhaltene Anzahlungen auf Bestellungen 2": { - "Erhaltene Anzahlungen 15% USt": {}, - "Erhaltene Anzahlungen 16% USt": {}, - "Erhaltene Anzahlungen 7% USt": {}, - "Erhaltene Anzahlungen Restlaufzeit 1 bis 5 Jahre": {}, - "Erhaltene Anzahlungen Restlaufzeit bis 1 Jahr": {}, - "Erhaltene Anzahlungen Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Erhaltene- versteuerte Anzahlungen 19% Ust (Verbindlichkeiten)": {} - } - }, - "Sonstige Verbindlichkeiten ": { - "Sonstige Verbindlichkeiten 1": { - "(frei- in Bilanz kein Restlaufzeit vermerkt)": {}, - "Agenturwarenabrechnungen": {}, - "Darlehen - Restlaufzeit 1 bis 5 jahre": {}, - "Darlehen - Restlaufzeit bis 1 jahr 1": {}, - "Darlehen - Restlaufzeit gr\u00f6\u00dfer 5 jahre": {}, - "Darlehen 2": {}, - "Darlehen atypisch stiller Gesellschaftler ": {}, - "Darlehen atypisch stiller Gesellschaftler - Restlaufzeit 1 bis 5 Jahre": {}, - "Darlehen atypisch stiller Gesellschaftler - Restlaufzeit bis 1 Jahr": {}, - "Darlehen atypisch stiller Gesellschaftler - Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Darlehen typisch stiller Gesellschaftler": {}, - "Darlehen typisch stiller Gesellschaftler - Restlaufzeit 1 bis 5 Jahre": {}, - "Darlehen typisch stiller Gesellschaftler - Restlaufzeit bis 1 Jahr": {}, - "Darlehen typisch stiller Gesellschaftler - Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Erhaltene Kautionen": {}, - "Erhaltene Kautionen - Restlaufzeit 1 bis 5 Jahre": {}, - "Erhaltene Kautionen - Restlaufzeit bis 1 Jahr": {}, - "Erhaltene Kautionen - Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Gegenkonto 3500-3569 bei Aufteilung der Konten 3570-3598": {}, - "Kreditkartenabrechnung": {}, - "Partiarische Darlehen": {}, - "Partiarische Darlehen - Restlaufzeit 1 bis 5 Jahre": {}, - "Partiarische Darlehen - Restlaufzeit bis 1 Jahr": {}, - "Partiarische Darlehen - Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Sonstige Verbindlichkeiten - Restlaufzeit 1 bis 5 Jahre": {}, - "Sonstige Verbindlichkeiten - Restlaufzeit bis 1 Jahr": {}, - "Sonstige Verbindlichkeiten - Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Sonstige Verbindlichkeiten z.B. nach \u00a7 11 Abs. 2 Satz 2 EStG f\u00fcr \u00a7 4/3 EStG": {}, - "Verbindlichkeiten gegen\u00fcber Gesellschaftern ": {}, - "Verbindlichkeiten gegen\u00fcber Gesellschaftern - Restlaufzeit 1 bis 5 Jahre": {}, - "Verbindlichkeiten gegen\u00fcber Gesellschaftern - Restlaufzeit bis 1 Jahr": {}, - "Verbindlichkeiten gegen\u00fcber Gesellschaftern - Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Verbindlichkeiten gegen\u00fcber Gesellschaftern f\u00fcr offene Aussch\u00fcttungen": {} - }, - "Steuerzahlungen an andere EG-L\u00e4nder": {}, - "Umsatzsteuer aus im anderen EG-Land steuerpflichtigen Lieferungen": {}, - "Umsatzsteuer aus im anderen EG-Land steuerpflichtigen sonstigen Leistungen/Werlieferungen": {}, - "Verbindlichkeiten an das Finanzamt aus abzuf\u00fchrendem Bauabzugsbetrag": {}, - "Verbindlichkeiten aus Betriebssteuern und -abgaben": {}, - "Verbindlichkeiten aus Betriebssteuern und -abgaben - Restlaufzeit 1 bis 5 Jahre": {}, - "Verbindlichkeiten aus Betriebssteuern und -abgaben - Restlaufzeit bis 1 Jahr": {}, - "Verbindlichkeiten aus Betriebssteuern und -abgaben - Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Verbindlichkeiten aus Einbehaltungen (KapESt und Solz auf KapESt)": {}, - "Verbindlichkeiten aus Lohn und Gehalt": {}, - "Verbindlichkeiten aus Verm\u00f6gensbildung ": {}, - "Verbindlichkeiten aus Verm\u00f6gensbildung - Restlaufzeit 1 bis 5 Jahre": {}, - "Verbindlichkeiten aus Verm\u00f6gensbildung - Restlaufzeit bis 1 Jahr": {}, - "Verbindlichkeiten aus Verm\u00f6gensbildung - Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Verbindlichkeiten f\u00fcr Einbehaltungen von Arbeitnehmern": {}, - "Verbindlichkeiten f\u00fcr Verbrauchsteuern": {}, - "Verbindlichkeiten im Rahmen der sozialen Sicherheit": {}, - "Verbindlichkeiten im Rahmen der sozialen Sicherheit (f\u00fcr \u00a7 4/3 EStG)": {}, - "Verbindlichkeiten im Rahmen der sozialen Sicherheit - Restlaufzeit 1 bis 5 Jahre": {}, - "Verbindlichkeiten im Rahmen der sozialen Sicherheit - Restlaufzeit bis 1 Jahr": {}, - "Verbindlichkeiten im Rahmen der sozialen Sicherheit - Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Voraussichtliche Beitragsschuld gegen\u00fcber den Sozialversicherungstr\u00e4gern": {} - }, - "Sonstige Verm\u00f6gensgegenst\u00e4nde H-Saldo": { - "Verrechnungskonto geleistete Anzahlungen bei Buchung \u00fcber Kreditorenkonto": {} - }, - "Sonstige Verm\u00f6gensgegenst\u00e4nde oder sonstige Verbindlichkeiten 1": { - "Einfuhrumsatzsteuer aufgeschoben bis": {}, - "Gewinnverf\u00fcgungskonto stille Gesellschafter": {}, - "In Rechnung unrichtig oder unberechtigt ausgewiesene Steuerbetr\u00e4ge- UStVA Kz. 69": {}, - "Lohn- und Gehaltsverrechnungskonto": { - "Lohn- und Gehaltsverrechnung \u00a7 11 Abs. 2 EStG f\u00fcr \u00a7 a Abs. 3 EStG": {} - }, - "Nachsteuer- UStVA Kz. 65": {}, - "Sonstige Verrechnungskonten (Interimskonto)": { - "account_type": "Stock Received But Not Billed" - }, - "Umsatzsteuer": { - "account_type": "Tax", - "is_group": 1, - "Umsatzsteuer 16%": {}, - "Umsatzsteuer 19%": {}, - "Umsatzsteuer 7%": {}, - "Umsatzsteuer Vorjahr": {}, - "Umsatzsteuer aus der Auslagerung von Gegenst\u00e4nden aus einem Umsatzsteuerlager": {}, - "Umsatzsteuer aus im Inland steuerpflichtigen EG-Lieferungen": {}, - "Umsatzsteuer aus im Inland steuerpflichtigen EG-Lieferungen 19%": {}, - "Umsatzsteuer aus innergemeinschaftlichem Erwerb ": {}, - "Umsatzsteuer aus innergemeinschaftlichem Erwerb 16%": {}, - "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19%": {}, - "Umsatzsteuer aus innergemeinschaftlichem Erwerb ohne Vorsteuerabzug": {}, - "Umsatzsteuer fr\u00fchere Jahre": {}, - "Umsatzsteuer laufendes Jahr": {}, - "Umsatzsteuer nach \u00a713b UStG": {}, - "Umsatzsteuer nach \u00a713b UStG 16%": {}, - "Umsatzsteuer nach \u00a713b UStG 19%": {} + "Forderungen aus Lieferungen und Leistungen ohne Kontokorrent": { + "account_number": "1210" }, - "Umsatzsteuer- Vorauszahlungen": {}, - "Umsatzsteuer- Vorauszahlungen 1/11": {}, - "Verbindlichkeiten aus Lohn- und Kirchensteuer": {} - }, - "Steuerr\u00fcckstellungen oder sonstige Verm\u00f6gensgegenst\u00e4nde ": { - "Umsatzsteuer nicht f\u00e4llig": {}, - "Umsatzsteuer nicht f\u00e4llig 16%": {}, - "Umsatzsteuer nicht f\u00e4llig 19%": {}, - "Umsatzsteuer nicht f\u00e4llig 7%": {}, - "Umsatzsteuer nicht f\u00e4llig aus im Inland steuerpflichtigen EG-Lieferungen": {}, - "Umsatzsteuer nicht f\u00e4llig aus im Inland steuerpflichtigen EG-Lieferungen 16%": {}, - "Umsatzsteuer nicht f\u00e4llig aus im Inland steuerpflichtigen EG-Lieferungen 19%": {} - }, - "Verbindlichkeiten aus Lieferungen und Leistungen S-Saldo oder sonstige Verm\u00f6gensgegenst\u00e4nde H-Saldo": { - "Gegenkonto 3335-3348- 3420-3449- 3470-3499 bei Aufteilung Kreditorenkonto": {} - }, - "Verbindlichkeiten aus Lieferungen und Leistungen oder sonstige Verm\u00f6gensgegenst\u00e4nde": { - "Verbindlichkeiten aus Lieferungen und Leistungen ": { - "Gegenkonto 3305-3307 bei Aufteilung der Verbindlichkeiten nach Steuers\u00e4tzen (E\u00fcR)": {}, - "Lieferanten Verbindlichkeiten Dienstleistungen": { - "account_type": "Payable" - }, - "Verbindlichkeiten aus Lieferungen und Leistungen f\u00fcr Investitionen f\u00fcr \u00a7 4/3 EStG": { - "account_type": "Payable" - }, - "Verbindlichkeiten aus Lieferungen und Leistungen gegen\u00fcber Gesellschaftern ": { - "account_type": "Payable" - }, - "Verbindlichkeiten aus Lieferungen und Leistungen gegen\u00fcber Gesellschaftern Restlaufzeit 1 bis 5 Jahre": {}, - "Verbindlichkeiten aus Lieferungen und Leistungen gegen\u00fcber Gesellschaftern Restlaufzeit bis 1 Jahr": {}, - "Verbindlichkeiten aus Lieferungen und Leistungen gegen\u00fcber Gesellschaftern Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Verbindlichkeiten aus Lieferungen und Leistungen ohne Kontokorrent ": {}, - "Verbindlichkeiten aus Lieferungen und Leistungen ohne Kontokorrent Restlaufzeit 1 bis 5 Jahre": {}, - "Verbindlichkeiten aus Lieferungen und Leistungen ohne Kontokorrent Restlaufzeit bis 1 Jahr": {}, - "Verbindlichkeiten aus Lieferungen und Leistungen ohne Kontokorrent Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Verbindlichkeiten aus Lieferungen und Leistungen ohne Vorsteuer (E\u00fcR)": { - "account_type": "Payable" - }, - "Verbindlichkeiten aus Lieferungen und Leistungen zum allgemeinen Umsatzsteuersatz (E\u00fcR)": { - "account_type": "Payable" - }, - "Verbindlichkeiten aus Lieferungen und Leistungen zum erm\u00e4\u00dfigten Umsatzsteuersatz (E\u00fcR)": { - "account_type": "Payable" + "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" } } - }, - "Verbindlichkeiten aus der Annahme gezogener Wechsel und aus der Ausstellung eigener Wechsel": { - "Verbindlichkeiten aus der Annahme gezogener Wechsel und aus der Ausstellung eigener Wechsel 1": { - "Verbindlichkeiten aus der Annahme gezogener Wechsel und aus der Ausstellung eigener Wechsel Restlaufzeit 1 bis 5 Jahre": {}, - "Verbindlichkeiten aus der Annahme gezogener Wechsel und aus der Ausstellung eigener Wechsel Restlaufzeit bis 1 Jahr": {}, - "Verbindlichkeiten aus der Annahme gezogener Wechsel und aus der Ausstellung eigener Wechsel Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {} + }, + "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" } - }, - "Verbindlichkeiten gegen\u00fcber Kreditinstituten ": { - "Gegenkonto 3159-3209 bei Aufteilung der Konten 3210-3248": {} - }, - "Verbindlichkeiten gegen\u00fcber Kreditinstituten - Bundesbankguthaben- Guthaben bei Kreditinstituten und Schecks": { - "Verbindlichkeiten gegen\u00fcber Kreditinstituten 1": { - "(frei- in Bilanz kein Restlaufzeit vermerkt) 1": {}, - "Verbindlichkeiten gegen\u00fcber Kreditinstituten Restlaufzeit 1 bis 5 Jahre": {}, - "Verbindlichkeiten gegen\u00fcber Kreditinstituten Restlaufzeit bis 1 Jahr": {}, - "Verbindlichkeiten gegen\u00fcber Kreditinstituten Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Verbindlichkeiten gegen\u00fcber Kreditinstituten aus Teilzahlungsvertr\u00e4gen": {}, - "Verbindlichkeiten gegen\u00fcber Kreditinstituten aus Teilzahlungsvertr\u00e4gen Restlaufzeit 1 bis 5 Jahre": {}, - "Verbindlichkeiten gegen\u00fcber Kreditinstituten aus Teilzahlungsvertr\u00e4gen Restlaufzeit bis 1 Jahr": {}, - "Verbindlichkeiten gegen\u00fcber Kreditinstituten aus Teilzahlungsvertr\u00e4gen Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {} + }, + "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, + "account_type": "Tax", + "Abziehbare Vorsteuer": { + "account_number": "1400" + }, + "Abziehbare Vorsteuer 7 %": { + "account_number": "1401", + "account_type": "Tax", + "tax_rate": 7.0 + }, + "Abziehbare Vorsteuer aus innergem. Erwerb": { + "account_number": "1402" + }, + "Abziehbare Vorsteuer aus innergem. Erwerb 19%": { + "account_number": "1404", + "account_type": "Tax", + "tax_rate": 19.0 + }, + "Abziehbare Vorsteuer 19 %": { + "account_number": "1406", + "account_type": "Tax", + "tax_rate": 19.0 + }, + "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" } - }, - "Verbindlichkeiten gegen\u00fcber verbundenen Unternehmen oder Forderungen gegen verbundene Unternehmen": { - "Verbindlichkeiten gegen\u00fcber verbundenen Unternehmen": { - "Verbindlichkeiten aus Lieferungen und Leistungen gegen\u00fcber verbundenen Unternehmen": { - "account_type": "Payable" - }, - "Verbindlichkeiten aus Lieferungen und Leistungen gegen\u00fcber verbundenen Unternehmen Restlaufzeit 1 bis 5 Jahre": {}, - "Verbindlichkeiten aus Lieferungen und Leistungen gegen\u00fcber verbundenen Unternehmen Restlaufzeit bis 1 Jahr": {}, - "Verbindlichkeiten aus Lieferungen und Leistungen gegen\u00fcber verbundenen Unternehmen Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {}, - "Verbindlichkeiten gegen\u00fcber verbundenen Unternehmen Restlaufzeit 1 bis 5 Jahre": {}, - "Verbindlichkeiten gegen\u00fcber verbundenen Unternehmen Restlaufzeit bis 1 Jahr": {}, - "Verbindlichkeiten gegen\u00fcber verbundenen Unternehmen Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {} + }, + "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 - Verbindlichkeiten": { + "root_type": "Liability", + "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" } } } - }, - "root_type": "Liability" - }, - "Gewinn u. Verlust - Aufwendungen": { - "Betriebliche Aufwendungen": { - "Abschreibungen a. Verm\u00f6gensgeg. d. Umlaufverm\u00f6gens- soweit diese die in der Abschreibungen \u00fcberschreiten": { - "Abschreibungen a. Verm\u00f6gensgeg. d. Umlaufverm\u00f6gens- soweit diese die in der Abschreibungen \u00fcberschreiten": { - "Abschreibungen auf Umlaufverm\u00f6gen- steuerrechtlich bedingt (soweit un\u00fcblich hoch)": {}, - "Abschreibungen auf Verm\u00f6gensgegenst\u00e4nde des Umlaufverm\u00f6gens (soweit un\u00fcblich hoch)": {}, - "Forderungsverluste (soweit un\u00fcblich hoch)": {}, - "Forderungsverluste 15% USt (soweit un\u00fcblich hoch)": {}, - "Forderungsverluste 16% USt (soweit un\u00fcblich hoch)": {}, - "Forderungsverluste 19% USt (soweit un\u00fcblich hoch)": {}, - "Forderungsverluste 7% USt (soweit un\u00fcblich hoch)": {}, - "Vorwegnahme k\u00fcnftiger Wertschwankungen im Umlaufverm\u00f6gen (soweit un\u00fcblich hoch)": {} - } - }, - "Kalkulatorische Kosten": { - "Sonstige betriebliche Aufwendungen 2": { - "Kalkulatorische Abschreibungen": {}, - "Kalkulatorische Miete/Pacht": {}, - "Kalkulatorische Wagnisse": {}, - "Kalkulatorische Zinsen": {}, - "Kalkulatorischer Lohn f\u00fcr unentgeltliche Mitarbeiter": {}, - "Kalkulatorischer Unternehmerlohn": {}, - "Verrechnete kalkulatorische Abschreibungen": {}, - "Verrechnete kalkulatorische Miete/Pacht": {}, - "Verrechnete kalkulatorische Wagnisse": {}, - "Verrechnete kalkulatorische Zinsen": {}, - "Verrechneter kalkulatorischer Lohn f\u00fcr unentgeltliche Mitarbeiter": {}, - "Verrechneter kalkulatorischer Unternehmerlohn": {} - } - }, - "Kosten bei Anwendung des Umsatzkostenverfahrens": { - "Sonstige betriebliche Aufwendungen 1": { - "Gegenkonto 6990-6998": {}, - "Herstellungskosten": {}, - "Vertriebskosten": {}, - "Verwaltungskosten": {} - } - }, - "Personalaufwand": { - "L\u00f6hne und Geh\u00e4lter": { - "Aushilfsl\u00f6hne": {}, - "Bedienungsgelder": {}, - "Ehegattengehalt": {}, - "Fahrkostenerstattung Wohnung/Arbeitsst\u00e4tte": {}, - "Freiwillige soziale Aufwendungen- lohnsteuerpflichtig": {}, - "Geh\u00e4lter": {}, - "Gesch\u00e4ftsf\u00fchrergeh\u00e4lter ": {}, - "Gesch\u00e4ftsf\u00fchrergeh\u00e4lter der GmbH-Gesellschafter": {}, - "Krankengeldzusch\u00fcsse": {}, - "L\u00f6hne ": {}, - "L\u00f6hne und Geh\u00e4lter 1": {}, - "Pauschale Steuer auf sonstige Bez\u00fcge (z.B. Fahrkosten Zusch\u00fcsse)": {}, - "Pauschale Steuer f\u00fcr Aushilfen": {}, - "Tantiemen": {}, - "Verg\u00fctungen an angestellte Mitunternehmer \u00a7 15 EStG": {}, - "Verm\u00f6genswirksame Leistungen": {}, - "Zusch\u00fcsse der Agenturen f\u00fcr Arbeit (Haben)": {} - }, - "Soziale Abgaben und Aufwendungen f\u00fcr Altersversorgung und f\u00fcr Unterst\u00fctzung": { - "Soziale Abgaben und Aufwendungen f\u00fcr Altersversorgung und f\u00fcr Unterst\u00fctzung 1": { - "Aufwendungen f\u00fcr Altersversorgung": {}, - "Aufwendungen f\u00fcr Altersversorgung f\u00fcr Mitunternehmer \u00a7 15 EStG": {}, - "Aufwendungen f\u00fcr Unterst\u00fctzung": {}, - "Beitr\u00e4ge zur Berufsgenossenschaft": {}, - "Freiwillige soziale Aufwendungen- lohnsteuerfrei": {}, - "Gesetzliche soziale Aufwendungen": {}, - "Gesetzliche soziale Aufwendungen f\u00fcr Mitunternehmer \u00a7 15 EStG": {}, - "Pauschale Steuer auf sonstige Bez\u00fcge (z.B. Direktversicherungen)": {}, - "Sonstige soziale Abgaben": {}, - "Versorgungskassen": {} + }, + "C - Verbindlichkeiten": { + "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" } } - }, - "Sonstige betriebliche Aufwendungen 3": { - "Sonstige betriebliche Aufwendungen 4": { - "Abgaben f\u00fcr betrieblich genutzten Grundbesitz": {}, - "Abgang von Wirtschaftsg\u00fctern des Umlaufverm\u00f6gens 100% / 50% nicht abzugsf\u00e4hig (inlandische Kap. Ges.) nach": {}, - "Abgang von Wirtschaftsg\u00fctern des Umlaufverm\u00f6gens nach \u00a7 4 Abs. 3 Satz 4 EStG": {}, - "Abschluss- und Pr\u00fcfungskosten": {}, - "Abschreibung auf Umlaufverm\u00f6gen au\u00dfer Vorr\u00e4te und Wertpapieren des UV (\u00fcbliche H\u00f6he)": {}, - "Abschreibung auf Umlaufverm\u00f6gen au\u00dfer Vorr\u00e4te und Wertpapieren des UV- steuerlich bedingt (\u00fcbliche H\u00f6he)": {}, - "Abziehbare Aufsichtsratsverg\u00fctungen": {}, - "Anlagenabg\u00e4nge Finanzanlagen (Restbuchwert bei Buchverlust)": {}, - "Anlagenabg\u00e4nge Finanzanlagen 100% / 50% steuerfrei (inl\u00e4ndische Kap. Ges.)(Restbuchwert bei Buchverlust)": {}, - "Anlagenabg\u00e4nge Sachanlagen (Restbuchwert bei Buchverlust)": {}, - "Anlagenabg\u00e4nge immaterielle Verm\u00f6gensgegenst\u00e4nde (Restbuchwert bei Buchverlust)": {}, - "Aufmerksamkeiten": {}, - "Aufwand f\u00fcr Gew\u00e4hrleistung": {}, - "Aufwendungen aus Anteilen an Kapitalgesellschaften 100% / 50% nicht abzugsf\u00e4hig (inlandische Kap. Ges.)": {}, - "Aufwendungen aus Bewertung Finanzmittelfonds": {}, - "Aufwendungen aus Kursdifferenzen": {}, - "Aufwendungen aus der Ver\u00e4u\u00dferung von Anteilen an Kapitalgesellschaften 100% / 50% nicht abzugsf\u00e4hig": {}, - "Aufwendungen aus der Zuschreibung von steuertlich niedriger bewerteten R\u00fcckstellungen": {}, - "Aufwendungen aus der Zuschreibung von steuertlich niedriger bewerteten Verbindlichkeiten": {}, - "Aufwendungen f\u00fcr Abraum- und Abfallbeseitigung": {}, - "Aufwendungen f\u00fcr ein h\u00e4usliches Arbeitszimmer (abziehbarer Anteil)": {}, - "Aufwendungen f\u00fcr ein h\u00e4usliches Arbeitszimmer (nicht abziehbarer Anteil)": {}, - "Ausgangsfrachten": {}, - "Ausgleichsabgabe i. S. d. Schwerbehindertengesetzes": {}, - "Beitr\u00e4ge ": {}, - "Bewirtungskosten": {}, - "Buchf\u00fchrungskosten": {}, - "B\u00fcrobedarf": {}, - "Einstellungen in Sonderposten mit R\u00fccklageanteil (Ansparabschreibungen)": {}, - "Einstellungen in Sonderposten mit R\u00fccklageanteil (Existenzgr\u00fcnderr\u00fccklage)": {}, - "Einstellungen in Sonderposten mit R\u00fccklageanteil (Sonderabschreibungen)": {}, - "Einstellungen in Sonderposten mit R\u00fccklageanteil (Steuerfreie R\u00fccklagen)": {}, - "Einstellungen in Sonderposten mit R\u00fccklageanteil (\u00a7 52 Abs. 16 EStG)": {}, - "Einstellungen in die Einzelwertberichtigung zu Forderungen": {}, - "Einstellungen in die Pauschalwertberichtigung zu Forderungen": {}, - "Erl\u00f6se aus Verk\u00e4ufen Finanzanlagen (bei Buchverlust)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Finanzanlagen 100% / 50% steuerfrei (inlandische Kap.Ges.)(bei Buchverlust)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen (bei Buchverlust)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen 16% USt (bei Buchverlust)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen 19% USt (bei Buchverlust)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen steuerfrei \u00a7 4 Nr. 1a UStG (bei Buchverlust)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen steuerfrei \u00a7 4 Nr. 1b UStG (bei Buchverlust)": {}, - "Erl\u00f6se aus Verk\u00e4ufen immaterieller Verm\u00f6gensgegenst\u00e4nde (bei Buchverlust)": {}, - "Fahrten zwischen Wohnung und Arbeitsst\u00e4tte (Haben)": {}, - "Fahrten zwischen Wohnung und Arbeitsst\u00e4tte (abziehbarer Anteil)": {}, - "Fahrten zwischen Wohnung und Arbeitsst\u00e4tte (nicht abziehbarer Anteil)": {}, - "Fahrzeugkosten": {}, - "Forderungsverluste (\u00fcbliche H\u00f6he)": {}, - "Forderungsverluste 15% USt (\u00fcbliche H\u00f6he)": {}, - "Forderungsverluste 16% USt (\u00fcbliche H\u00f6he)": {}, - "Forderungsverluste 19% USt (\u00fcbliche H\u00f6he)": {}, - "Forderungsverluste 7 % USt (\u00fcbliche H\u00f6he)": {}, - "Forderungsverluste aus im Inland steuerpflichtigen EG-Lieferungen 15% USt (\u00fcbliche H\u00f6he)": {}, - "Forderungsverluste aus im Inland steuerpflichtigen EG-Lieferungen 16% USt (\u00fcbliche H\u00f6he)": {}, - "Forderungsverluste aus im Inland steuerpflichtigen EG-Lieferungen 19% USt (\u00fcbliche H\u00f6he)": {}, - "Forderungsverluste aus im Inland steuerpflichtigen EG-Lieferungen 7% USt (\u00fcbliche H\u00f6he)": {}, - "Forderungsverluste aus steuerfreien EG-Lieferungen (\u00fcbliche H\u00f6he)": {}, - "Fortbildungskosten": {}, - "Freiwillige Sozialleistungen": {}, - "Fremdarbeiten (Vertrieb)": {}, - "Fremdfahrzeugkosten": {}, - "Fremdleistungen / Fremdarbeiten": {}, - "Garagenmiete": {}, - "Gas- Strom- Wasser": {}, - "Geschenke abzugsf\u00e4hig": {}, - "Geschenke ausschlie\u00dflich betrieblich genutzt": {}, - "Geschenke nicht abzugsf\u00e4hig": {}, - "Gewerbesteuerlich zu ber\u00fccksichtigende Miete f\u00fcr Einrichtungen \u00a7 8 GewStG": {}, - "Gewerbesteuerlich zu ber\u00fccksichtigende Miete \u00a7 8 GewStG": {}, - "Gewerbesteuerlich zu ber\u00fccksichtigende Pacht \u00a7 8 GewStG": {}, - "Gewerbesteuerlich zu ber\u00fccksichtigendes Mietleasing \u00a7 8 GewStG": {}, - "Grundst\u00fcckaufwendungen- betrieblich": {}, - "Grundst\u00fcckaufwendungen- sonstige neutrale": {}, - "Haftungsverg\u00fctung an Mitunternehmer \u00a7 15 EStG": {}, - "Heizung": {}, - "Instandhaltung betrieblicher R\u00e4ume": {}, - "Kfz-Kosten f\u00fcr betrieblich genutzte zum Privatverm\u00f6gen geh\u00f6rende Kraftfahrzeuge": {}, - "Kfz-Versicherungen": {}, - "Kilometergelderstattung Arbeitnehmer": {}, - "Kosten der Warenabgabe": {}, - "Laufende Kfz-Betriebskosten": {}, - "Leasingfahrzeugkosten": {}, - "Mautgeb\u00fchren": {}, - "Mietekosten": {}, - "Mieten f\u00fcr Einrichtungen": {}, - "Mietleasing": {}, - "Nebenkosten des Geldverkehrs": {}, - "Netto-Pr\u00e4mie f\u00fcr R\u00fcckdeckung k\u00fcnftiger Versorgungsleistungen": {}, - "Nicht Abzugsf\u00e4hige Betriebsausgaben aus Werbe- und Repr\u00e4sentationskosten (nicht abziehbarer Anteil)": {}, - "Nicht Abzugsf\u00e4hige Bewirtungskosten": {}, - "Nicht abziehbare H\u00e4lfte der Aufsichtsratsverg\u00fctungen": {}, - "Nicht abziehbare Vorsteuer": {}, - "Nicht abziehbare Vorsteuer 16% ": {}, - "Nicht abziehbare Vorsteuer 19% ": {}, - "Nicht abziehbare Vorsteuer 7% ": {}, - "Pacht": {}, - "Periodenfremde Aufwendungen soweit nicht au\u00dferordentlich": {}, - "Porto": {}, - "Raumkosten": {}, - "Rechts- und Beratungskosten": {}, - "Reinigung": {}, - "Reisekosten Arbeitnehmer": {}, - "Reisekosten Arbeitnehmer (nicht abziehbarer Anteil)": {}, - "Reisekosten Arbeitnehmer Fahrkosten": {}, - "Reisekosten Arbeitnehmer Verpflegungsmehraufwand": {}, - "Reisekosten Arbeitnehmer \u00fcbernachtungsaufwand": {}, - "Reisekosten Unternehmer": {}, - "Reisekosten Unternehmer (nicht abziehbarer anteil)": {}, - "Reisekosten Unternehmer Fahrkosten": {}, - "Reisekosten Unternehmer Verpflegungsmehraufwand": {}, - "Reisekosten Unternehmer \u00fcbernachtungsaufwand": {}, - "Reparaturen und Instandhaltung von Bauten": {}, - "Reparaturen und Instandhaltung von Betriebs- und Gesch\u00e4ftsausstattung": {}, - "Reparaturen und Instandhaltung von anderen Anlagen": {}, - "Reparaturen und Instandhaltung von technischen Anlagen und Maschinen": {}, - "Repr\u00e4sentationskosten": {}, - "Sonstige Abgaben": {}, - "Sonstige Aufwendungen betrieblich und Regelm\u00e4\u00dfig 1": {}, - "Sonstige Aufwendungen betrieblich und regelm\u00e4\u00dfig": {}, - "Sonstige Aufwendungen unregelm\u00e4\u00dfig": {}, - "Sonstige Kfz-kosten": {}, - "Sonstige Raumkosten": {}, - "Sonstige Reparaturen und Instandhaltung ": {}, - "Sonstige betriebliche Aufwendungen 5": {}, - "Sonstige eingeschr\u00e4nkt abziehbare Betriebsausgaben (abziehbarer Anteil)": {}, - "Sonstige eingeschr\u00e4nkt abziehbare Betriebsausgaben (nicht abziehbarer Anteil)": {}, - "Sonstiger Betriebsbedarf": {}, - "Steuerlich abzugsf\u00e4hige Versp\u00e4tungszuschl\u00e4ge und Zwangsgelder": {}, - "Telefax und Internetkosten": {}, - "Telefon": {}, - "Transportversicherungen": {}, - "Verg\u00fctungen an Mitunternehmer f\u00fcr die Pachtweise \u00fcberlassung ihrer Wirtschaftsg\u00fcter \u00a7 15 EStG": {}, - "Verg\u00fctungen an Mitunternehmer f\u00fcr die mietweise \u00fcberlassung ihrer Wirtschaftsg\u00fcter \u00a7 15 EStG": {}, - "Verg\u00fctungen an Mitunternehmer \u00a7 15 EStG": {}, - "Verkaufsprovisionen": {}, - "Verluste aus dem Abgang von Gegenst\u00e4nden des Anlageverm\u00f6gens": {}, - "Verluste aus dem Abgang von Gegenst\u00e4nden des Umlaufverm\u00f6gens (au\u00dfer Vorr\u00e4te) 100%/50% nicht anzugsf\u00e4hig": {}, - "Verluste aus dem Abgang von Gegenst\u00e4nden des Umlaufverm\u00f6gens au\u00dfer Vorr\u00e4te": {}, - "Verluste aus der Ver\u00e4u\u00dferung von Anteilen an Kapitalgesellschaften 100% / 50% nicht abzugsf\u00e4hig": {}, - "Verpackungsmaterial": {}, - "Versicherungen": {}, - "Versicherungen f\u00fcr Geb\u00e4ude": {}, - "Vorwegnahme k\u00fcnftiger Wertschwankungen im Umlaufverm\u00f6gen au\u00dfer Vorr\u00e4te und Wertpapiere": {}, - "Wartungskosten f\u00fcr Hard- und Software": {}, - "Werbekosten": {}, - "Werkzeuge und Kleinger\u00e4te": {}, - "Zeitschriften und B\u00fccher": {}, - "Zuwendungen- Spenden an Stiftungen f\u00fcr Kirchliche- religi\u00f6se und gemeinn\u00fctzige Zwecke": {}, - "Zuwendungen- Spenden an Stiftungen f\u00fcr gemeinn\u00fctzige Zwecke i. S. d. \u00a7 52 Abs. 2 Nr. 1-3 AO": {}, - "Zuwendungen- Spenden an Stiftungen f\u00fcr gemeinn\u00fctzige Zwecke i. S. d. \u00a7 52 Abs. 2 Nr. 4 AO": {}, - "Zuwendungen- Spenden an Stiftungen f\u00fcr wissenschaftliche- mitdt\u00e4tige- kulturelle Zwecke": {}, - "Zuwendungen- Spenden an politische Parteien": {}, - "Zuwendungen- Spenden f\u00fcr kirchliche- religi\u00f6se und gemeinn\u00fctzige Zwecke": {}, - "Zuwendungen- Spenden f\u00fcr mildt\u00e4tige Zwecke": {}, - "Zuwendungen- Spenden f\u00fcr wissenschaftliche und kulturelle Zwecke": {}, - "Zuwendungen- Spenden- steuerlich nicht abziehbar": {}, - "kfz-Reparaturen": {}, - "steuerlich nicht abzugsf\u00e4hige Versp\u00e4tungszuschl\u00e4ge und Zwangsgelder": {} + }, + "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" + }, + "Kreditoren": { + "account_number": "70000", + "is_group": 1, + "Wareneingangs-­Verrechnungskonto" : { + "account_number": "70001", + "account_type": "Stock Received But Not Billed" + } + }, + "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", + "tax_rate": 7.0 + }, + "Umsatzsteuer aus innergem. Erwerb": { + "account_number": "3802" + }, + "Umsatzsteuer aus innergem. Erwerb 19 %": { + "account_number": "3804", + "account_type": "Tax", + "tax_rate": 19.0 + }, + "Umsatzsteuer 19 %": { + "account_number": "3806", + "account_type": "Tax", + "tax_rate": 19.0 + }, + "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" } - }, - "Weitere Aufwendungen": { - "Abschreibungen auf Finanzanlagen und auf Wertpapiere des Umlaufverm\u00f6gens": { - "Abschreibungen auf Finanzanlagen und auf Wertpapiere des Umlaufverm\u00f6gens 1": { - "Abschreibungen auf Finanzanlagen ": { - "account_type": "Depreciation" - }, - "Abschreibungen auf Finanzanlagen 100% / 50% nicht abzugsf\u00e4hig (inl\u00e4ndische Kap. Ges.)": {}, - "Abschreibungen auf Finanzanlagen auf Grund steuerlicher Sondervorschriften": {}, - "Abschreibungen auf Finanzanlagen auf Grund steuerlicher Sondervorschriften 100% / 50% nicht abzugsf\u00e4hig": {}, - "Abschreibungen auf Grund von Verlustanteilen an Mitunternehmerschaften \u00a7 8 GewStG": {}, - "Abschreibungen auf Wertpapiere des Umlaufverm\u00f6gens": {}, - "Abschreibungen auf Wertpapiere des Umlaufverm\u00f6gens 100% / 50% nicht abzugsf\u00e4hig": {}, - "Vorwegnahme k\u00fcnftiger Wertschwankungen bei Wertpapieren des Umlaufverm\u00f6gens": {} - }, - "account_type": "Depreciation" - }, - "Au\u00dferordentliche Aufwendungen": { - "Au\u00dferordentliche Aufwendungen 1": { - "Au\u00dferordentliche Aufwendungen 2": {}, - "Au\u00dferordentliche Aufwendungen finanzwirksam": {}, - "Au\u00dferordentliche Aufwendungen nicht finanzwirksam": {} - } - }, - "Einstellung in Gewinnr\u00fccklagen ": { - "Aussch\u00fcttung": { - "Vorabaussch\u00fcttung": {} - }, - "Einstellung in Gewinnr\u00fccklagen in andere Gewinnr\u00fccklagen ": { - "Einstellung in andere Gewinnr\u00fccklagen ": {} - }, - "Einstellung in Gewinnr\u00fccklagen in die R\u00fccklage f\u00fcr eigene Anteile": { - "Einstellung in die R\u00fccklage f\u00fcr eigene Anteile": {} - }, - "Einstellung in Gewinnr\u00fccklagen in die gesetzliche R\u00fccklage ": { - "Einstellung in die gesetzliche R\u00fccklage ": {} - }, - "Einstellung in Gewinnr\u00fccklagen in satzungm\u00e4\u00dfige R\u00fccklage ": { - "Einstellung in satzungm\u00e4\u00dfige R\u00fccklage ": {} - }, - "Sonstige betriebliche Aufwendungen": { - "(zu freien Verf\u00fcgung)": {} - }, - "Sonstige betriebliche Ertr\u00e4ge oder sonstige betriebliche Aufwendungen": { - "Aufwendungen/Ertr\u00e4ge aus Umrechnungsdifferenzen": {} - }, - "Vortrag auf neue Rechnung 1": { - "Vortrag auf neue Rechnung (GuV)": {} - } - }, - "Steuern vom Einkommen und Ertrag": { - "Steuern vom Einkommen und Ertrag 1": { - "Anrechenbarer Solidarit\u00e4tszuschlag auf Kapitalertragsteuer 20%": {}, - "Anrechenbarer Solidarit\u00e4tszuschlag auf Kapitalertragsteuer 25%": {}, - "Anrechenbarer Solidarit\u00e4tszuschlag auf Zinsabschlagsteuer": {}, - "Anzurechnende ausl\u00e4ndische Quellensteuer": {}, - "Ertr\u00e4ge aus der Aufl\u00f6sung von R\u00fcckstellungen f\u00fcr Steuern vom Einkommen und Ertrag": {}, - "Gewerbesteuer ": {}, - "Kapitalertragsteuer 20%": {}, - "Kapitalertragsteuer 25%": {}, - "K\u00f6rperschaftssteuer": {}, - "K\u00f6rperschaftssteuer f\u00fcr Vorjahr": {}, - "K\u00f6rperschaftssteuererstattung f\u00fcr Vorjahre nach \u00a737 KStG": {}, - "K\u00f6rperschaftssteuererstattungen f\u00fcr Vorjahre": {}, - "Solidarit\u00e4tszuschlag": {}, - "Solidarit\u00e4tszuschlag f\u00fcr Vorjahre": {}, - "Solidarit\u00e4tszuschlagerstattungen f\u00fcr Vorjahre": {}, - "Steuererstattungen Vorjahre f\u00fcr Steuern vom Einkommen und Ertrag": {}, - "Steuernachzahlungen Vorjahre f\u00fcr Steuern vom Einkommen und Ertrag": {}, - "Zinsabschlagsteuer": {} - } - }, - "Verlustvortrag": { - "Verlustvortrag nach Verwendung": {} - }, - "Zinsen und \u00e4hnliche Aufwendungen": { - "Zinsen und \u00e4hnliche Aufwendungen 1": { - "Diskontaufwendungen": {}, - "Diskontaufwendungen an verbundene Unternehmen": {}, - "In Dauerschuldzinsen unqualifizierte Zinsen auf kurzfristige Verbindlichkeiten": {}, - "Nicht abzugsf\u00e4hige Schuldzinsen gem\u00e4\u00df \u00a7 4 Abs. 4a EStG (Hinzurechnungsbetrag)": {}, - "Renten und dauernde Lasten aus Gr\u00fcndung/Erwerb \u00a78 GewStG": {}, - "Steuerlich abzugsf\u00e4hige- andere Nebenleistungen zu steuern ": {}, - "Steuerlich nicht abzugsf\u00e4hige- andere Nebenleistungen zu steuern ": {}, - "Zinsaufwendungen an Mitunternehmer f\u00fcr die Hingabe von Kapital \u00a7 15 EStG": {}, - "Zinsaufwendungen f\u00fcr Geb\u00e4ude- die zum Betriebsverm\u00f6gen geh\u00f6ren": {}, - "Zinsaufwendungen f\u00fcr kurzfristige Verbindlichkeiten": {}, - "Zinsaufwendungen f\u00fcr kurzfristige Verbindlichkeiten an verbundene Unternehmen": {}, - "Zinsaufwendungen f\u00fcr langfristige Verbindlichkeiten": {}, - "Zinsaufwendungen f\u00fcr langfristige Verbindlichkeiten an verbundene Unternehmen": {}, - "Zinsaufwendungen \u00a7\u00a7 233a AO betriebliche Steuern": {}, - "Zinsaufwendungen \u00a7\u00a7 233a bis 237 AO Personensteuern": {}, - "Zinsen und \u00e4hnliche Aufwendungen 100% / 50% nicht abzugsf\u00e4hig (inl\u00e4ndische Kap. Ges.)": {}, - "Zinsen und \u00e4hnliche Aufwendungen 2": {}, - "Zinsen und \u00e4hnliche Aufwendungen an verbundene Unternehmen": {}, - "Zinsen und \u00e4hnliche Aufwendungen an verbundene Unternehmen 100% / 50% nicht abzugsf\u00e4hig (inl\u00e4ndische Kap. Ges.)": {}, - "Zinsen zur Finanzierung des Anlageverm\u00f6gens": {}, - "Zins\u00e4hnliche Aufwendungen": {}, - "Zins\u00e4hnliche Aufwendungen an verbundene Unternehmen": {} - } + }, + "D - Rechnungsabgrenzungsposten": { + "is_group": 1, + "Passive Rechnungsabgrenzung": { + "account_number": "3900" } - }, - "root_type": "Expense" - }, - "Gewinn u. Verlust - Ertr\u00e4ge": { - "Betriebliche Ertr\u00e4ge": { - "Andere aktivierte Eigenleistungen": { - "Andere aktivierte Eigenleistungen 1": { - "Andere aktivierte Eigenleistungen 2": {} + }, + "is_group": 1 + }, + "Passiva - Eigenkapital": { + "root_type": "Equity", + "A - Eigenkapital": { + "account_type": "Equity", + "is_group": 1, + "I - Gezeichnetes Kapital": { + "account_type": "Equity", + "is_group": 1, + "Gezeichnetes Kapital": { + "account_number": "2900", + "account_type": "Equity" + }, + "Gesch\u00e4ftsguthaben der verbleibenden Mitglieder": { + "account_number": "2901" + }, + "Gesch\u00e4ftsguthaben der ausscheidenden Mitglieder": { + "account_number": "2902" + }, + "Gesch\u00e4ftsguthaben aus gek\u00fcndigten Gesch\u00e4ftsanteilen": { + "account_number": "2903" + }, + "R\u00fcckst\u00e4ndige f\u00e4llige Einzahlungen auf Gesch\u00e4ftsanteile, vermerkt": { + "account_number": "2906" + }, + "Gegenkonto R\u00fcckst\u00e4ndige f\u00e4llige Einzahlungen auf Gesch\u00e4ftsanteile, vermerkt": { + "account_number": "2907" + }, + "Kapitalerh\u00f6hung aus Gesellschaftsmitteln": { + "account_number": "2908" + }, + "Ausstehende Einlagen auf das gezeichnete Kapital, nicht eingefordert": { + "account_number": "2910" } - }, - "Erh\u00f6hung oder Verminderung des Bestands an fertigen und unfertige Erzeugnissen": { - "Erh\u00f6hung / Verminderung des Bestands an fertigen und unfertigen Erzeugnissen": { - "Bestandsver\u00e4nderungen - fertige Erzeugnisse": {}, - "Bestandsver\u00e4nderungen - unfertige Erzeugnisse": {}, - "Bestandsver\u00e4nderungen - unfertige Leistungen": {} - }, - "Erh\u00f6hung / Verminderung des Bestands in Arbeit befindlicher Auftr\u00e4ge": { - "Bestandsver\u00e4nderungen in Arbeit befindlicher Auftr\u00e4ge": {} - }, - "Erh\u00f6hung / Verminderung des Bestands in Ausf\u00fchrung befindlicher Bauaftr\u00e4ge": { - "Bestandsver\u00e4nderungen in Ausf\u00fchrung befindliche Bauauftr\u00e4ge": {} + }, + "II - Kapitalr\u00fccklage": { + "account_type": "Equity", + "is_group": 1, + "Kapitalr\u00fccklage": { + "account_number": "2920" + }, + "Kapitalr\u00fccklage durch Ausgabe von Anteilen \u00fcber Nennbetrag": { + "account_number": "2925" + }, + "Kapitalr\u00fccklage durch Ausgabe von Schuldverschreibungen": { + "account_number": "2926" + }, + "Kapitalr\u00fccklage durch Zuzahlungen gegen Gew\u00e4hrung eines Vorzugs": { + "account_number": "2927" + }, + "Kapitalr\u00fccklage durch Zuzahlungen in das Eigenkapital": { + "account_number": "2928" + }, + "Nachschusskapital (Gegenkonto 1299)": { + "account_number": "2929" } - }, - "Sonstige betriebliche Ertr\u00e4ge 1": { - "Sonstige betriebliche Ertr\u00e4ge 2": { - "Anlagenabg\u00e4nge Finanzanlagen (Restbuchwert bei Buchgewinn)": {}, - "Anlagenabg\u00e4nge Finanzanlagen 100% / 50% steuerfrei (inl\u00e4ndische Kap. Ges.)(Restbuchwert bei Buchgewinn)": {}, - "Anlagenabg\u00e4nge Sachanlagen (Restbuchwert bei Buchgewinn)": {}, - "Anlagenabg\u00e4nge immaterielle Verm\u00f6gensgegenst\u00e4nde (Restbuchwert bei Buchgewinn)": {}, - "Bank Bewertungsertrag": {}, - "Bank Waehrungsverlust (Konto)": {}, - "Erl\u00f6se aus Verkauf immaterieller Verm\u00f6gensgegenst\u00e4nde (bei Buchgewinn)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Finanzanlagen (bei Buchgewinn)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen (bei Buchgewinn)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen 16% USt (bei Buchgewinn)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen 19% USt (bei Buchgewinn)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen steuerfrei \u00a7 4 Nr. 1a UStG (bei Buchgewinn)": {}, - "Erl\u00f6se aus Verk\u00e4ufen Sachanlageverm\u00f6gen steuerfrei \u00a7 4 Nr. 1b UStG (bei Buchgewinn)": {}, - "Ertraege a. Waehrungsumstellung auf Euro": {}, - "Ertr\u00e4ge aus Bewertung Finanzmittelfonds": {}, - "Ertr\u00e4ge aus Kursdifferenzen": {}, - "Ertr\u00e4ge aus Zuschreibungen des Finanzanlageverm\u00f6gens": {}, - "Ertr\u00e4ge aus Zuschreibungen des Finanzanlageverm\u00f6gens 100% / 50% steuerfrei (inl\u00e4ndische Kap. Ges.)": {}, - "Ertr\u00e4ge aus Zuschreibungen des Sachanlageverm\u00f6gens": {}, - "Ertr\u00e4ge aus Zuschreibungen des Umlaufverm\u00f6gens 100% / 50% steuerfrei (inlandische Kap. Ges.)": {}, - "Ertr\u00e4ge aus Zuschreibungen des Umlaufverm\u00f6gens au\u00dfer Vorr\u00e4ten": {}, - "Ertr\u00e4ge aus Zuschreibungen des anderen Anlageverm\u00f6gens 100% / 50% steuerfrei (inl\u00e4ndische Kap. Ges.)": {}, - "Ertr\u00e4ge aus Zuschreibungen des immateriellen Anlageverm\u00f6gens": {}, - "Ertr\u00e4ge aus abgeschriebenen Forderungen": {}, - "Ertr\u00e4ge aus dem Abgang von Gegenst\u00e4nden des Anlageverm\u00f6gens": {}, - "Ertr\u00e4ge aus dem abgang von Gegenst\u00e4nden des Umlaufverm\u00f6gens (au\u00dfer Vorr\u00e4te) 100% / 50%steuerfrei (inlandische Kap.Ges.)": {}, - "Ertr\u00e4ge aus dem abgang von Gegenst\u00e4nden des Umlaufverm\u00f6gens au\u00dfer Vorr\u00e4te": {}, - "Ertr\u00e4ge aus der Aufl\u00f6sung von R\u00fcckstellungen": {}, - "Ertr\u00e4ge aus der Aufl\u00f6sung von Sonderposten mit R\u00fccklageanteil (Ansparabschreibungen)": {}, - "Ertr\u00e4ge aus der Aufl\u00f6sung von Sonderposten mit R\u00fccklageanteil (Existenzgr\u00fcnderr\u00fccklage)": {}, - "Ertr\u00e4ge aus der Aufl\u00f6sung von Sonderposten mit R\u00fccklageanteil (Sonderabschreibungen)": {}, - "Ertr\u00e4ge aus der Aufl\u00f6sung von Sonderposten mit R\u00fccklageanteil (aus der W\u00e4hrungsumstellung auf den Euro)": {}, - "Ertr\u00e4ge aus der Aufl\u00f6sung von Sonderposten mit R\u00fccklageanteil (steuerfreie R\u00fccklage)": {}, - "Ertr\u00e4ge aus der Aufl\u00f6sung von Sonderposten mit R\u00fccklageanteil nach \u00a7 52 Abs. 16 EStG": {}, - "Ertr\u00e4ge aus der Herabsetzung der Einzelwertberichtigung zu Forderungen": {}, - "Ertr\u00e4ge aus der Herabsetzung der Pauschalwertberichtigung zu Forderungen": {}, - "Ertr\u00e4ge aus der Ver\u00e4u\u00dferung vo Anteilen an Kapitalgesellschaften 100% / 50% steuerfrei (inlandische Kap. Ges.)": {}, - "Ertr\u00e4ge aus der steuerlich niedrigeren Bewertung von R\u00fcckstellungen": {}, - "Ertr\u00e4ge aus der steuerlich niedrigeren Bewertung von Verbindlichkeiten": {}, - "Grundst\u00fccksertr\u00e4ge": {}, - "Investitionszulagen (steuerfrei)": {}, - "Investitionszusch\u00fcsse (steuerpflichtig)": {}, - "Kassendifferenzen": {}, - "Nicht realisierbare Waehrungsdifferenzen": {}, - "Periodenfremde Ertr\u00e4ge (soweit nicht au\u00dferordentlich)": {}, - "Produkt Rechnung Preisdifferenz": {}, - "Realisierte Waehrungsdifferenzen": {}, - "Rundungsdifferenzen": {}, - "Sachbez\u00fcge 16% USt (Waren)": {}, - "Sachbez\u00fcge 19% USt (Waren)": {}, - "Sachbez\u00fcge 7% USt (Waren)": {}, - "Sonstige Ertr\u00e4ge betrieblich und regelm\u00e4\u00dfig ": {}, - "Sonstige Ertr\u00e4ge betrieblich und regelm\u00e4\u00dfig 16% USt": {}, - "Sonstige Ertr\u00e4ge betrieblich und regelm\u00e4\u00dfig 19% USt ": {}, - "Sonstige Ertr\u00e4ge betriebsfremd und regelm\u00e4\u00dfig": {}, - "Sonstige Ertr\u00e4ge unregelm\u00dfig": {}, - "Sonstige betriebliche Ertr\u00e4ge 3": {}, - "Sonstige steuerfreie Betriebseinnahmen": {}, - "Verrechnete sonstige Sachbez\u00fcge ": {}, - "Verrechnete sonstige Sachbez\u00fcge (keine Waren)": {}, - "Verrechnete sonstige Sachbez\u00fcge 16 % USt ( z.B. Kfz-Gestellung)": {}, - "Verrechnete sonstige Sachbez\u00fcge 19 % USt ( z.B. Kfz-Gestellung)": {}, - "Verrechnete sonstige Sachbez\u00fcge ohne Umsatzsteuer": {}, - "Versicherungsentsch\u00e4digungen": {}, - "Waehrungsdifferenz zum Kontenausgleich": {}, - "steuerfreie Ertr\u00e4ge aus der Aufl\u00f6sung von Sonderposten mit R\u00fccklageanteil": {} + }, + "III - Gewinnr\u00fccklagen": { + "account_type": "Equity", + "1 - gesetzliche R\u00fccklage": { + "account_type": "Equity", + "is_group": 1, + "Gesetzliche R\u00fccklage": { + "account_number": "2930" + } + }, + "2 - R\u00fccklage f. Anteile an einem herrschenden oder mehrheitlich beteiligten Unternehmen": { + "account_type": "Equity", + "is_group": 1, + "R\u00fccklage f. Anteile an einem herrschenden oder mehrheitlich beteiligten Unternehmen": { + "account_number": "2935" + } + }, + "3 - satzungsm\u00e4\u00dfige R\u00fccklagen": { + "account_type": "Equity", + "is_group": 1, + "Satzungsm\u00e4\u00dfige R\u00fccklagen": { + "account_number": "2950" + } + }, + "4 - andere Gewinnr\u00fccklagen": { + "account_type": "Equity", + "is_group": 1, + "Andere Gewinnr\u00fccklagen": { + "account_number": "2960" + }, + "Andere Gewinnr\u00fccklagen aus dem Erwerb eigener Anteile": { + "account_number": "2961" + }, + "Eigenkapitalanteil von Wertaufholungen": { + "account_number": "2962" + }, + "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, + "Gewinnvortrag vor Verwendung": { + "account_number": "2970" + }, + "Verlustvortrag vor Verwendung": { + "account_number": "2978" } - }, - "Statistische Konten E\u00fcR": { - "Sonstige betriebliche Ertr\u00e4ge": { - "Unentgeltliche Erbringung einer sonstigen Leistung 7% USt": {}, - "Unentgeltliche Erbringung einer sostigen Leistung 16% USt": {}, - "Unentgeltliche Erbringung einer sostigen Leistung 19% USt": {}, - "Unentgeltliche Erbringung einer sostigen Leistung ohne USt": {}, - "Unentgeltliche Zuwendung von Gegenst\u00e4nden 16% USt": {}, - "Unentgeltliche Zuwendung von Gegenst\u00e4nden 19% USt": {}, - "Unentgeltliche Zuwendung von Gegenst\u00e4nden ohne USt": {}, - "Verwendung von Gegenst\u00e4nden f\u00fcr Zwecke au\u00dferhalb des Unternehmens 16% USt": {}, - "Verwendung von Gegenst\u00e4nden f\u00fcr Zwecke au\u00dferhalb des Unternehmens 16% USt (Kfz-Nutzung)": {}, - "Verwendung von Gegenst\u00e4nden f\u00fcr Zwecke au\u00dferhalb des Unternehmens 16% USt (Telefon-Nutzung)": {}, - "Verwendung von Gegenst\u00e4nden f\u00fcr Zwecke au\u00dferhalb des Unternehmens 19% USt": {}, - "Verwendung von Gegenst\u00e4nden f\u00fcr Zwecke au\u00dferhalb des Unternehmens 19% USt (Kfz-Nutzung)": {}, - "Verwendung von Gegenst\u00e4nden f\u00fcr Zwecke au\u00dferhalb des Unternehmens 19% USt (Telefon-Nutzung)": {}, - "Verwendung von Gegenst\u00e4nden f\u00fcr Zwecke au\u00dferhalb des Unternehmens 7% USt": {}, - "Verwendung von Gegenst\u00e4nden f\u00fcr Zwecke au\u00dferhalb des Unternehmens ohne USt": {}, - "Verwendung von Gegenst\u00e4nden f\u00fcr Zwecke au\u00dferhalb des Unternehmens ohne USt (Kfz-Nutzung)": {}, - "Verwendung von Gegenst\u00e4nden f\u00fcr Zwecke au\u00dferhalb des Unternehmens ohne USt (Telefon-Nutzung)": {} - }, - "Umsatzerl\u00f6se": { - "Entnahme durch Unternehmer f\u00fcr Zwecke au\u00dferhalb des Unternehmens (Waren) ohne USt": {}, - "Entnahme durch den Unternehmer f\u00fcr Zwecke au\u00dferhalb des Unternehmens (Waren) 16% USt": {}, - "Entnahme durch den Unternehmer f\u00fcr Zwecke au\u00dferhalb des Unternehmens (Waren) 19% USt": {}, - "Entnahme durh Unternehmer f\u00fcr Zwecke au\u00dferhalb des Unternehmens (Waren) 7% USt": {}, - "Entnahme von Gegens\u00e4nden ohne USt": {}, - "Erl\u00f6sschm\u00e4lerung aus im Inland steuerpflichtigen EG-lieferungen 16% USt": {}, - "Erl\u00f6sschm\u00e4lerung aus im Inland steuerpflichtigen EG-lieferungen 19% USt": {}, - "Erl\u00f6sschm\u00e4lerung aus im Inland steuerpflichtigen EG-lieferungen 7 % USt": {}, - "Erl\u00f6sschm\u00e4lerung aus im anderen EG-lieferungen steuerpflichtigen Lieferungen": {}, - "Erl\u00f6sschm\u00e4lerungen": {}, - "Erl\u00f6sschm\u00e4lerungen 16 % USt": {}, - "Erl\u00f6sschm\u00e4lerungen 19 % USt": {}, - "Erl\u00f6sschm\u00e4lerungen 7 % USt": {}, - "Erl\u00f6sschm\u00e4lerungen aus steuerfreien Ums\u00e4tzen \u00a7 4 Nr. 1a UStG": {}, - "Erl\u00f6sschm\u00e4lerungen aus steuerfreien innergemeinschaftlichen Lieferungen": {}, - "Gegenkonto 4580-4582 bei Aufteilung der Erl\u00f6se nach Steuers\u00e4tzen (E\u00fcR)": {}, - "Gew\u00e4hrte Boni ": {}, - "Gew\u00e4hrte Boni 16 % USt": {}, - "Gew\u00e4hrte Boni 19 % USt": {}, - "Gew\u00e4hrte Boni 7 % USt": {}, - "Gew\u00e4hrte Rabatte": {}, - "Gew\u00e4hrte Rabatte 16 % USt": {}, - "Gew\u00e4hrte Rabatte 19 % USt": {}, - "Gew\u00e4hrte Rabatte 7 % USt": {}, - "Gew\u00e4hrte Skonti": {}, - "Gew\u00e4hrte Skonti 16 % USt": {}, - "Gew\u00e4hrte Skonti 19 % USt": {}, - "Gew\u00e4hrte Skonti 7 % USt": {}, - "Gew\u00e4hrte Skonti aus Leistungen- f\u00fcr die der Leistungsempf\u00e4nger die umsatzsteuer nach \u00a7 13b UStG schuldet": {}, - "Gew\u00e4hrte Skonti aus im Inland steuerpflichtigen EG-Lieferungen": {}, - "Gew\u00e4hrte Skonti aus im Inland steuerpflichtigen EG-Lieferungen 16 % USt": {}, - "Gew\u00e4hrte Skonti aus im Inland steuerpflichtigen EG-Lieferungen 19 % USt": {}, - "Gew\u00e4hrte Skonti aus im Inland steuerpflichtigen EG-Lieferungen 7 % USt": {}, - "Gew\u00e4hrte Skonti aus steuerfreien innergemeinschaftlichen Lieferungen \u00a7 4 Nr. 1b UStG": {}, - "Nicht steuerbare ums\u00e4tze (Innenums\u00e4tze)": {}, - "Statistisches Konto Erl\u00f6se zum allgemeinen Umsatzsteuersatz (E\u00fcR)": {}, - "Statistisches Konto Erl\u00f6se zum erm\u00e4\u00dfigten Umsatzsteuersatz (E\u00fcR)": {}, - "Statistisches konto Erl\u00f6se steuerfrei und nicht steuerbar (E\u00fcR)": {}, - "Umsatzsteuerverg\u00fctung": {}, - "Unentgeltliche Wertabgaben 3": {}, - "Unentgeltliche Zuwendung von Waren 16% USt": {}, - "Unentgeltliche Zuwendung von Waren 19% USt": {}, - "Unentgeltliche Zuwendung von Waren 7% USt": {}, - "Unentgeltliche Zuwendung von Waren ohne USt": {} - } - }, - "Umsatzerl\u00f6se 1": { - "Sotige betriebliche Ertr\u00e4ge": { - "Provision- sonstige Ertr\u00e4ge": {}, - "Provision- sonstige Ertr\u00e4ge 16% USt": {}, - "Provision- sonstige Ertr\u00e4ge 19% USt": {}, - "Provision- sonstige Ertr\u00e4ge 7% USt": {}, - "Provision- sonstige Ertr\u00e4ge steuerfrei (\u00a7 4 Nr. 5 UStG)": {}, - "Provision- sonstige Ertr\u00e4ge steuerfrei (\u00a7 4 Nr. 8 ff. UStG)": {} - }, - "Umsatzerl\u00f6se 2": { - "* Konto Kasse Ertrag": {}, - "* Sonstige Einnahmen": {}, - "* Vorausberechnete Einnahmen": {}, - "Erl\u00f6se": {}, - "Erl\u00f6se 16% USt": {}, - "Erl\u00f6se 19% USt": {}, - "Erl\u00f6se 7% USt": {}, - "Erl\u00f6se Abfallverwertung": {}, - "Erl\u00f6se Leergut": {}, - "Erl\u00f6se als Kleinunternehmer i.S.d. \u00a7 19 Abs. 1 UStG": {}, - "Erl\u00f6se aus Geldspielautomaten 16% USt": {}, - "Erl\u00f6se aus Geldspielautomaten 19% USt": {}, - "Erl\u00f6se aus Leistungen- f\u00fcr die der Leistungsempf\u00e4nger die Umsatzsteuer nach \u00a7 13b UStG schuldet": {}, - "Erl\u00f6se aus im Drittland steuerbaren Leistungen- im Inland ncht steuerbare Ums\u00e4tze": {}, - "Erl\u00f6se aus im Inland steuerpflichtigen EG-Lieferungen 16% USt": {}, - "Erl\u00f6se aus im Inland steuerpflichtigen EG-Lieferungen 19% USt": {}, - "Erl\u00f6se aus im Inland steuerpflichtigen EG-Lieferungen 7% USt": {}, - "Erl\u00f6se aus im anderen EG-Land steuerbaren Leistungen- im Inland nicht steuerbare Ums\u00e4tze": {}, - "Erl\u00f6se aus im anderen EG-Land steuerpflichtigen Lieferungen": {}, - "Erl\u00f6se. Die mit den Durchschnittss\u00e4tzen des \u00a7 24 UStG versteuert werden": {}, - "Lieferungen des ersten Abnehmers bei innergemeinschaftlichen Dreiecksgesch\u00e4ften \u00a7 25b abs. UStG": {}, - "Nicht abgerechnete Einnahmen": {}, - "Provisionsums\u00e4tze": {}, - "Provisionsums\u00e4tze 16% USt": {}, - "Provisionsums\u00e4tze 19% USt": {}, - "Provisionsums\u00e4tze 7% USt": {}, - "Provisionsums\u00e4tze- steuerfrei (\u00a74 Nr. 5 UStG)": {}, - "Provisionsums\u00e4tze- steuerfrei (\u00a74 Nr. 8 ff. UStG)": {}, - "Sonstige steuerfreie Ums\u00e4tze (z.B. \u00a7 4 Nr. 2-7 UStG)": {}, - "Sonstige steuerfreie Ums\u00e4tze Inland": {}, - "Steuerfreie Ums\u00e4tze nach \u00a7 4 Nr. 12 UStG (Vermietung und Verpackung)": {}, - "Steuerfreie Ums\u00e4tze offshore etc.": {}, - "Steuerfreie Ums\u00e4tze ohne Vorsteuerabzug zum Gesamtumsatz geh\u00f6rend": {}, - "Steuerfreie Ums\u00e4tze \u00a74 Nr. 1a UStG": {}, - "Steuerfreie Ums\u00e4tze \u00a74 Nr. 8 ff. UStG": {}, - "Steuerfreie innergemeinschaftliche Lieferungen von Neufahrzeugen an Abnehmer ohne Umsatzsteuer-Identifikationsnummer": {}, - "Steuerfreie innergemeinschaftliche Lieferungen \u00a74 Nr. 1b UStG": {}, - "Umsatzerl\u00f6se (zur fr. Verf\u00fcgung)": {} - } - } - }, - "Weitere Ertr\u00e4ge": { - "Au\u00dferordentliche Ertr\u00e4ge": { - "Au\u00dferordentliche Ertr\u00e4ge 1": { - "Au\u00dferordentliche Ertr\u00e4ge 2": {}, - "Au\u00dferordentliche Ertr\u00e4ge finanzwirksam": {}, - "Au\u00dferordentliche Ertr\u00e4ge nicht finanzwirksam": {} - } - }, - "Entnahme aus Gewinnr\u00fccklagen": { - "Einstellungen in die Kapitalr\u00fccklage nach den Vorschriften \u00fcber die Vereinfachte Kapitalherabsetzung": { - "Einstellungen in die Kapitalr\u00fccklage nach den Vorschriften \u00fcber die Vereinfachte Kapitalherabsetzung 1": {} - }, - "Entnahme aus Gewinnr\u00fccklagen aus anderen Gewinnr\u00fccklagen": { - "Entnahme aus Gewinnr\u00fccklagen aus anderen Gewinnr\u00fccklagen 1": {} - }, - "Entnahme aus Gewinnr\u00fccklagen aus der R\u00fccklage f\u00fcr eigene Anteile ": { - "Entnahme aus Gewinnr\u00fccklagen aus der R\u00fccklage f\u00fcr eigene Anteile 1": {} - }, - "Entnahme aus Gewinnr\u00fccklagen aus der gesetzlichen R\u00fccklage": { - "Entnahme aus Gewinnr\u00fccklagen aus der gesetzlichen R\u00fccklage 1": {} - }, - "Entnahme aus Gewinnr\u00fccklagen aus satzungsm\u00e4\u00dfigen R\u00fccklage ": { - "Entnahme aus Gewinnr\u00fccklagen aus satzungsm\u00e4\u00dfigen R\u00fccklage 1": {} - }, - "Ertr\u00e4ge aus Kapitalherabsetzung": { - "Ertr\u00e4ge aus Kapitalherabsetzung 1": {} - } - }, - "Entnahme aus der Kapitalr\u00fccklage": { - "Entnahme aus der Kapitalr\u00fccklage 1": {} - }, - "Ertr\u00e4ge aus Beteiligungen": { - "Ertr\u00e4ge aus Beteiligungen 1": { - "Ertr\u00e4ge aus Beteiligungen 2": {}, - "Ertr\u00e4ge aus Beteiligungen an verbundenen Unternehmen": {}, - "Gewinnanteile aus Mitunternehmerschaften \u00a7 9 GewStG": {}, - "Gewinne aus Anteilen an nicht steuerbefreiten inl\u00e4ndischen Kapitalgesellschaften \u00a7 9 Nr. 2a GewStG": {} - } - }, - "Ertr\u00e4ge aus anderen Wertpapieren und Ausleihungen des Finanzanlageverm\u00f6gens": { - "Ertr\u00e4ge aus anderen Wertpapieren und Ausleihungen des Finanzanlageverm\u00f6gens 1": {} - }, - "Gewinnvortrag": { - "Gewinnvortrag nach Verwendung": {} - }, - "Sonstige Steuern ": { - "Sonstige Steuern 1": { - "Ertr\u00e4ge aus der Aufl\u00f6sung von R\u00fcckstellungen f\u00fcr sonstige Steuern": {}, - "Grundsteuer": {}, - "Kfz-Steuer": {}, - "Sonstige Steuern 2": {}, - "Steuererstattungen Vorjahre f\u00fcr sonstige Steuern ": {}, - "Steuernachzahkungen Vorjahre f\u00fcr sonstige Steuern ": {}, - "Verbrauchsteuer": {}, - "\u00f6kosteuer": {} - } - }, - "Sonstige Zinsen und \u00e4hnliche Ertr\u00e4ge": { - "Sonstige Zinsen und \u00e4hnliche Ertr\u00e4ge 1": { - "Diskontertr\u00e4ge": {}, - "Diskontertr\u00e4ge aus verbundenen Unternehmen": {}, - "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": {}, - "Sonstige Zinsertr\u00e4ge aus verbundenen Unternehmen": {}, - "Steuerfreie Aufzinsung des K\u00f6rperschaftsteuerguthabens nach \u00a737 KStG": {}, - "Zinsertr\u00e4ge \u00a7 233a AO": {}, - "Zinsertr\u00e4ge \u00a7 233a AO Sonderfall anlage A KSt": {}, - "Zins\u00e4hnliche Ertr\u00e4ge": {}, - "Zins\u00e4hnliche Ertr\u00e4ge aus verbundenen Unternehmen": {} - } - } - }, - "root_type": "Income" - }, - "Vortrags- Kapital- und Statistische Konten": { - "Aufgliederung der R\u00fcckstellungen": { - "Gegenkonto zu Konto 9260 - 9268": {}, - "Kurzfristige R\u00fcckstellungen": {}, - "Langfristige R\u00fcckstellungen- au\u00dfer Pensionen": {}, - "Mittelfristige R\u00fcckstellungen": {} - }, - "Ausgleichsposten f\u00fcr aktivierte eigene Anteile und Bilanzierungshilfen": { - "Ausgleichsposten f\u00fcr aktivierte Bilanzierungshilfen": {}, - "Ausgleichsposten f\u00fcr aktivierte eigene Anteile ": {} - }, - "Eigenkapitalersetzende Gesellschafterdarlehen ": { - "Eigenkapitalersetzende Gesellschafterdarlehen 1": {}, - "Gegenkonto zu 9250 und 9255": {}, - "Ungesicherte Gesellschafterdarlehen mit Restlaufzeit gr\u00f6\u00dfer 5 Jahre": {} - }, - "Einzahlungsverpflichtungen im Bereich der Forderungen": { - "Einzahlungsverpflichtungen Kommanditisten": {}, - "Einzahlungsverpflichtungen pers\u00f6nlich haftender Gesellschafter": {} - }, - "Kapital Personenhandelsgesellschaft Teilhafter": { - "Gesellschafter-Darlehen 1": {}, - "Verrechnungskonto f\u00fcr Einzahlungsverpflichtungen 1": {} - }, - "Kapital Personenhandelsgesellschaft Vollhafter": { - "Gesellschafter-Darlehen": {}, - "Verlust-/ Vortragskonto": {}, - "Verrechnungskonto f\u00fcr Einzahlungsverpflichtungen": {} - }, - "Nicht durch Verm\u00f6genseinlagen gedeckte Entnahmen": { - "Nicht durch Verm\u00f6genseinlagen gedeckte Entnahmen Kommanditisten": {}, - "Nicht durch Verm\u00f6genseinlagen gedeckte Entnahmen pers\u00f6nlich haftender Gesellschafter": {} - }, - "Passive Rechnungsabgrenzung": { - "Baukostenzusch\u00fcsse": {}, - "Forderungen aus Sachanlagenverk\u00e4ufen bei sonstigen Verm\u00f6gensgegenst\u00e4nden": {}, - "Forderungen aus Verk\u00e4ufen immaterielle Verm\u00f6gensgegenst\u00e4nde bei sonstigen Verm\u00f6gensgegenst\u00e4nden": {}, - "Forderungen aus Verk\u00e4ufen von Finanzanlagen bei sonstigen Verm\u00f6gensgegenst\u00e4nden": {}, - "Gegenkonto zu Konten 9230- 9238": {}, - "Gegenkonto zu Konto 9240-43": {}, - "Gegenkonto zu Konto 9245-47": {}, - "Investitionsverbindlichkeiten aus K\u00e4ufen von Finanzanlagen bei Leistungsverbindlichkeiten": {}, - "Investitionsverbindlichkeiten aus K\u00e4ufen von immateriellen Verm\u00f6gensgegenst\u00e4nden bei Leistungsverbindlichkeiten": {}, - "Investitionsverbindlichkeiten aus Sachanlagenk\u00e4ufen bei Leistungsverbindlichkeiten": {}, - "Investitionsverbindlichkeiten bei den Leistungsverbindlichkeiten": {}, - "Investitionszulagen ": {}, - "Investitionszusch\u00fcsse ": {} - }, - "Privat Teilhafter (f\u00fcr Verrechnung Gesellschafterdarlehen mit Eigenkapitalcharakter- Konto 9840-9849)": { - "Au\u00dfergew\u00f6hnliche Belastungen": {}, - "Grundst\u00fccksaufwand": {}, - "Grundst\u00fccksertrag": {}, - "Privateinlagen": {}, - "Privatentnahmen allgemein": {}, - "Privatsteuern": {}, - "Sonderausgaben beschr\u00e4nkt abzugsf\u00e4hig": {}, - "Sonderausgaben unbeschr\u00e4nkt abzugsf\u00e4hig": {}, - "Unentgeltliche Wertabgaben": {}, - "Zuwendungen- Spenden": {} - }, - "Statistische Konten f\u00fcr 4 Abs. 3 EStG": { + }, + "V - Jahres\u00fcberschu\u00df/Jahresfehlbetrag": { + "account_type": "Equity", + "is_group": 1 + }, "Einlagen stiller Gesellschafter": { - "Einlagen stiller Gesellschafter 1": {} - }, - "Gegenkonto zu 9287 und 9288": {}, - "Gegenkonto zu 9290": {}, - "Gegenkonto zu 9292": {}, - "Mahngeb\u00fchren bei Buchungen \u00fcber Debitoren bei \u00a7 4 Abs. 3 EStG": {}, - "Statistisches Konto Fremdgeld": {}, - "Statistisches Konto steuerfreie Auslagen": {}, - "Steuerrechtlicher Ausgleichsposten": { - "Steuerrechtlicher Ausgleichsposten 1": {} - }, - "Zinsen bei Buchungen \u00fcber Debitoren bei \u00a7 4 Abs. 3 EStG": {} - }, - "Statistische Konten f\u00fcr Betriebswirtschaftliche Auswertungen (BWA)": { - "Anzahl Kreditkunden aufgelaufen": {}, - "Anzahl Kreditkunden monatlich": {}, - "Anzahl Rechnungen": {}, - "Anzahl der Barkunden": {}, - "Auftragsbestand": {}, - "Auftragseingang im Gesch\u00e4ftsjahr": {}, - "Besch\u00e4ftigte Personen 1": {}, - "Erweiterungsinvestitionen": {}, - "Gegenkonto f\u00fcr statistische Mengeneinheiten Konten 9101-9107 und Konten 9116-9118": {}, - "Gegenkonto zu Konten 9120- 9135-9140": {}, - "Gesch\u00e4ftsraum m2": {}, - "Unbezahlte Personen": {}, - "Verkaufskr\u00e4fte": {}, - "Verkaufsraum m2": {}, - "Verkaufstage": {} - }, - "Statistische Konten f\u00fcr Gewinnzuschlag": { - "Statistische Konten f\u00fcr den Gewinnzuschlag nach \u00a7\u00a7 6b- 6c und 7g EStG (Haben-Buchung)": {}, - "Statistische Konten f\u00fcr den Gewinnzuschlag- Gegenkonto zu 9890": {} - }, - "Statistische Konten f\u00fcr den Kennziffernteil der Bilanz": { - "Besch\u00e4ftigte Personen": {}, - "Gegenkonto zu 9200": {}, - "Gegenkonto zu 9210": {}, - "Produktive L\u00f6hne": {} - }, - "Statistische Konten f\u00fcr die Kapitalkontenentwicklung": { - "Anteil f\u00fcr Konto 9840-49 Teilhafter": {}, - "Anteil f\u00fcr Konto Teilhafter 0080 ": {}, - "Anteil f\u00fcr Konto Teilhafter 0081": {}, - "Anteil f\u00fcr Konto Teilhafter 0082": {}, - "Anteil f\u00fcr Konto Teilhafter 0083": {}, - "Anteil f\u00fcr Konto Teilhafter 0084": {}, - "Anteil f\u00fcr Konto Teilhafter 0085": {}, - "Anteil f\u00fcr Konto Teilhafter 0086": {}, - "Anteil f\u00fcr Konto Teilhafter 0087": {}, - "Anteil f\u00fcr Konto Teilhafter 0088": {}, - "Anteil f\u00fcr Konto Teilhafter 0089": {}, - "Anteil f\u00fcr Konto Teilhafter 2050": {}, - "Anteil f\u00fcr Konto Teilhafter 2051": {}, - "Anteil f\u00fcr Konto Teilhafter 2052": {}, - "Anteil f\u00fcr Konto Teilhafter 2053": {}, - "Anteil f\u00fcr Konto Teilhafter 2054": {}, - "Anteil f\u00fcr Konto Teilhafter 2055": {}, - "Anteil f\u00fcr Konto Teilhafter 2056": {}, - "Anteil f\u00fcr Konto Teilhafter 2057": {}, - "Anteil f\u00fcr Konto Teilhafter 2058": {}, - "Anteil f\u00fcr Konto Teilhafter 2059": {}, - "Anteil f\u00fcr Konto Teilhafter 2060": {}, - "Anteil f\u00fcr Konto Teilhafter 2061": {}, - "Anteil f\u00fcr Konto Teilhafter 2062": {}, - "Anteil f\u00fcr Konto Teilhafter 2063": {}, - "Anteil f\u00fcr Konto Teilhafter 2064": {}, - "Anteil f\u00fcr Konto Teilhafter 2065": {}, - "Anteil f\u00fcr Konto Teilhafter 2066": {}, - "Anteil f\u00fcr Konto Teilhafter 2067": {}, - "Anteil f\u00fcr Konto Teilhafter 2068": {}, - "Anteil f\u00fcr Konto Teilhafter 2069": {}, - "Anteil f\u00fcr Konto Teilhafter 2070 ": {}, - "Anteil f\u00fcr Konto Teilhafter 2071": {}, - "Anteil f\u00fcr Konto Teilhafter 2072": {}, - "Anteil f\u00fcr Konto Teilhafter 2073": {}, - "Anteil f\u00fcr Konto Teilhafter 2074": {}, - "Anteil f\u00fcr Konto Teilhafter 2075": {}, - "Anteil f\u00fcr Konto Teilhafter 2076": {}, - "Anteil f\u00fcr Konto Teilhafter 2077": {}, - "Anteil f\u00fcr Konto Teilhafter 2078": {}, - "Anteil f\u00fcr Konto Teilhafter 2079": {}, - "Anteil f\u00fcr Konto Vollhafter 0060": {}, - "Anteil f\u00fcr Konto Vollhafter 0061": {}, - "Anteil f\u00fcr Konto Vollhafter 0062": {}, - "Anteil f\u00fcr Konto Vollhafter 0063": {}, - "Anteil f\u00fcr Konto Vollhafter 0064": {}, - "Anteil f\u00fcr Konto Vollhafter 0065": {}, - "Anteil f\u00fcr Konto Vollhafter 0066": {}, - "Anteil f\u00fcr Konto Vollhafter 0067": {}, - "Anteil f\u00fcr Konto Vollhafter 0068": {}, - "Anteil f\u00fcr Konto Vollhafter 0069": {}, - "Anteil f\u00fcr Konto Vollhafter 2000": {}, - "Anteil f\u00fcr Konto Vollhafter 2001": {}, - "Anteil f\u00fcr Konto Vollhafter 2002": {}, - "Anteil f\u00fcr Konto Vollhafter 2003": {}, - "Anteil f\u00fcr Konto Vollhafter 2004": {}, - "Anteil f\u00fcr Konto Vollhafter 2005": {}, - "Anteil f\u00fcr Konto Vollhafter 2006": {}, - "Anteil f\u00fcr Konto Vollhafter 2007": {}, - "Anteil f\u00fcr Konto Vollhafter 2008": {}, - "Anteil f\u00fcr Konto Vollhafter 2009": {}, - "Anteil f\u00fcr Konto Vollhafter 2010": {}, - "Anteil f\u00fcr Konto Vollhafter 2011": {}, - "Anteil f\u00fcr Konto Vollhafter 2012": {}, - "Anteil f\u00fcr Konto Vollhafter 2013": {}, - "Anteil f\u00fcr Konto Vollhafter 2014": {}, - "Anteil f\u00fcr Konto Vollhafter 2015": {}, - "Anteil f\u00fcr Konto Vollhafter 2016": {}, - "Anteil f\u00fcr Konto Vollhafter 2017": {}, - "Anteil f\u00fcr Konto Vollhafter 2018": {}, - "Anteil f\u00fcr Konto Vollhafter 2019": {}, - "Anteil f\u00fcr Konto Vollhafter 2020": {}, - "Anteil f\u00fcr Konto Vollhafter 2021": {}, - "Anteil f\u00fcr Konto Vollhafter 2022": {}, - "Anteil f\u00fcr Konto Vollhafter 2023": {}, - "Anteil f\u00fcr Konto Vollhafter 2024": {}, - "Anteil f\u00fcr Konto Vollhafter 2025": {}, - "Anteil f\u00fcr Konto Vollhafter 2026": {}, - "Anteil f\u00fcr Konto Vollhafter 2027": {}, - "Anteil f\u00fcr Konto Vollhafter 2028": {}, - "Anteil f\u00fcr Konto Vollhafter 2029": {}, - "Anteil f\u00fcr Konto Vollhafter 9810": {}, - "Anteil f\u00fcr Konto Vollhafter 9811": {}, - "Anteil f\u00fcr Konto Vollhafter 9812": {}, - "Anteil f\u00fcr Konto Vollhafter 9813": {}, - "Anteil f\u00fcr Konto Vollhafter 9814": {}, - "Anteil f\u00fcr Konto Vollhafter 9815": {}, - "Anteil f\u00fcr Konto Vollhafter 9816": {}, - "Anteil f\u00fcr Konto Vollhafter 9817": {}, - "Anteil f\u00fcr Konto Vollhafter 9818": {}, - "Anteil f\u00fcr Konto Vollhafter 9819": {}, - "Anteil f\u00fcr Konto Vollhafter 9820 ": {}, - "Anteil f\u00fcr Konto Vollhafter 9821": {}, - "Anteil f\u00fcr Konto Vollhafter 9822": {}, - "Anteil f\u00fcr Konto Vollhafter 9823": {}, - "Anteil f\u00fcr Konto Vollhafter 9824": {}, - "Anteil f\u00fcr Konto Vollhafter 9825": {}, - "Anteil f\u00fcr Konto Vollhafter 9826": {}, - "Anteil f\u00fcr Konto Vollhafter 9827": {}, - "Anteil f\u00fcr Konto Vollhafter 9828": {}, - "Anteil f\u00fcr Konto Vollhafter 9829": {}, - "Darlehensverzinsung Teillhafter": {}, - "Darlehensverzinsung Vollhafter": {}, - "Gebrauchs\u00fcberlassung Teillhafter": {}, - "Gebrauchs\u00fcberlassung Vollhafter": {}, - "L\u00f6sch- und Korrekturschl\u00fcssel": {}, - "Name des Gesellschafters Teillhafter": {}, - "Name des Gesellschafters Vollhafter": {}, - "Restanteil Teillhafter": {}, - "Restanteil Vollhafter": {}, - "Sonstige Verg\u00fctungen Teillhafter": {}, - "Sonstige Verg\u00fctungen Vollhafter": {}, - "Tantieme Teillhafter": {}, - "Tantieme Vollhafter": {}, - "T\u00e4tigkeitsverg\u00fctung Teillhafter": {}, - "T\u00e4tigkeitsverg\u00fctung Vollhafter": {} - }, - "Statistische Konten f\u00fcr die im Anhang anzugebenden sonstigen finanziellen Verpflichtungen": { - "Andere Verpflichtungen gem\u00e4\u00df \u00a7 285 Nr. 3 HGB": {}, - "Andere Verpflichtungen gem\u00e4\u00df \u00a7 285 Nr. 3 HGB gegen\u00fcber verbundenen Unternehmen": {}, - "Gegenkonto zu 9281-9284": {}, - "Verpflichtungen aus Miet- und Leasingsvertr\u00e4gen": {}, - "Verpflichtungen aus Miet- und Leasingsvertr\u00e4gen gegen\u00fcber verbundenen Unternehmen": {} - }, - "Statistische Konten f\u00fcr in der Bilanz auszuweisende Haftungsverh\u00e4ltnisse": { - "Gegenkonto zu 9271 - 9279 (Soll-Buchung)": {}, - "Haftung aus der Bestellung von Sicherheiten f\u00fcr fremde Verbindlichkeiten": {}, - "Haftung aus der Bestellung von Sicherheiten f\u00fcr fremde Verbindlichkeiten gegen\u00fcber verbundenen Unternehmen": {}, - "Verbindlichkeiten aus B\u00fcrgschaften- Wechsel- und Scheckb\u00fcrgschaften": {}, - "Verbindlichkeiten aus B\u00fcrgschaften- Wechsel- und Scheckb\u00fcrgschaften gegen\u00fcber verbundenen Unternehmen": {}, - "Verbindlichkeiten aus Gew\u00e4hrleistungsvertr\u00e4gen": {}, - "Verbindlichkeiten aus Gew\u00e4hrleistungsvertr\u00e4gen gegen\u00fcber verbundenen Unternehmen": {}, - "Verbindlichkeiten aus der Begebung und \u00fcbertragung von Wechseln": {}, - "Verpflichtungen aus Treuhandverm\u00f6gen": {} - }, - "Statistische Konten zu \u00a7 4 (4a) EStG": { - "Erh\u00f6hung der Entnahmen \u00a74 (4a) EStG": {}, - "Gegenkonto zur Erh\u00f6hung der Entnahmen \u00a74 (4a) EStG (Haben)": {}, - "Gegenkonto zur Minderung der Entnahmen \u00a74 (4a) EStG": {}, - "Minderung der Entnahmen \u00a74 (4a) EStG (Haben)": {} - }, - "Statistische Konten zur informativen Angabe des gezeichneten Kapitals in anderer W\u00e4hrung": { - "Gezeichnetes Kapital in DM": { - "Gezeichnetes Kapital in DM (Art. 42 Abs. 3 S. 1 EGHGB)": {} - }, - "Gezeichnetes Kapital in Euro": { - "Gegenkonto zu 9220-9221": {}, - "Gezeichnetes Kapital in Euro (Art. 42 Abs. 3 S. 2 EGHGB)": {} + "account_number": "9295" } - }, - "Statistische konten f\u00fcr Kinderbetreuungskosten": { - "Gegenkonto zu 9918 (Haben)": {}, - "Kinderbetreuungskosten (wie Betriebsausgaben steuerlich anzusetzender Betrag)": {} - }, - "Steueraufwand der Gesellschafter": { - "Gegenkonto zu 9887": {}, - "Steueraufwand der Gesellschafter 1": {} - }, - "Verrechnungskonto f\u00fcr nicht durch Verm\u00f6genseinlagen gedeckte Entnahmen": { - "Verrechnungskonto f\u00fcr nicht durch Verm\u00f6genseinlagen gedeckte Entnahmen Kommanditisten": {}, - "Verrechnungskonto f\u00fcr nicht durch Verm\u00f6genseinlagen gedeckte Entnahmen pers\u00f6nlich haftender Gesellschafter": {} - }, - "Vorsteuer-/Umsatzsteuerkonten zur Korrektur der Forderungen/ Verbindlichkeiten (E\u00fcR)": { - "Gegenkonto 9893-9894 f\u00fcr die Aufteilung der Umsatzsteuersatz (E\u00fcR)": {}, - "Gegenkonto 9896-9897 f\u00fcr die Aufteilung der Vorsteuer (E\u00fcR)": {}, - "SO Commitment": {}, - "Umsatzsteuer in den Forderungen zum allgemeinen Umsatzsteuersatz (E\u00fcR)": {}, - "Umsatzsteuer in den Forderungen zum erm\u00e4\u00dfigten Umsatzsteuersatz (E\u00fcR)": {}, - "Vorsteuer in den Verbindlichkeiten zum allgemeinen Umsatzsteuersatz (E\u00fcR)": {}, - "Vorsteuer in den Verbindlichkeiten zum erm\u00e4\u00dfigten Umsatzsteuersatz (E\u00fcR)": {} - }, - "Vortragskonten": { - "Offene Posten aus 1990": {}, - "Offene Posten aus 1991": {}, - "Offene Posten aus 1992": {}, - "Offene Posten aus 1993": {}, - "Offene Posten aus 1994": {}, - "Offene Posten aus 1995": {}, - "Offene Posten aus 1996": {}, - "Offene Posten aus 1997": {}, - "Offene Posten aus 1998": {}, - "Offene Posten aus 1999": {}, - "Offene Posten aus 2000": {}, - "Offene Posten aus 2001": {}, - "Offene Posten aus 2002": {}, - "Offene Posten aus 2003": {}, - "Offene Posten aus 2004": {}, - "Offene Posten aus 2005": {}, - "Offene Posten aus 2006": {}, - "Offene Posten aus 2007": {}, - "Offene Posten aus 2008": {}, - "Offene Posten aus 2009": {}, - "Saldenvortr\u00e4ge": {}, - "Saldenvortr\u00e4ge Debitoren": {}, - "Saldenvortr\u00e4ge Kreditoren": {}, - "Saldenvortr\u00e4ge- Sachkonten": {}, - "Summenvortragskonto": {} - }, - "root_type": "Asset" + } + }, + "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 16 % USt": { + "account_number": "4340", + "account_type": "Income Account" + }, + "Erl\u00f6se 19 % USt": { + "account_number": "4400", + "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" + }, + "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": { + "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" + } + }, + "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, + "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" + } + }, + "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)": { + "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": { + "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)": { + "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": { + "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": { + "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, + "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 (Gruppe)": { + "is_group": 1, + "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" + } + }, + "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": { + "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": { + "account_number": "6520" + }, + "Laufende Kfz-Betriebskosten": { + "account_number": "6530" + }, + "Kfz-Reparaturen": { + "account_number": "6540" + }, + "Garagenmiete": { + "account_number": "6550" + }, + "Mietleasing Kfz": { + "account_number": "6560" + }, + "Sonstige Kfz-Kosten": { + "account_number": "6570" + }, + "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 (Gruppe)": { + "is_group": 1, + "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" + } } } } 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 deleted file mode 100644 index 000ef80ee38..00000000000 --- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/de_kontenplan_SKR04_with_account_number.json +++ /dev/null @@ -1,3661 +0,0 @@ -{ - "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 mit Kontokorrent": { - "account_number": "1200", - "account_type": "Receivable", - "is_group": 1 - }, - "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, - "account_type": "Tax", - "Abziehbare Vorsteuer": { - "account_number": "1400" - }, - "Abziehbare Vorsteuer 7 %": { - "account_number": "1401", - "account_type": "Tax", - "tax_rate": 7.0 - }, - "Abziehbare Vorsteuer aus innergem. Erwerb": { - "account_number": "1402" - }, - "Abziehbare Vorsteuer aus innergem. Erwerb 19%": { - "account_number": "1404", - "account_type": "Tax", - "tax_rate": 19.0 - }, - "Abziehbare Vorsteuer 19 %": { - "account_number": "1406", - "account_type": "Tax", - "tax_rate": 19.0 - }, - "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 - Verbindlichkeiten": { - "root_type": "Liability", - "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 - Verbindlichkeiten": { - "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 mit Kontokorrent": { - "account_number": "3300", - "account_type": "Payable", - "is_group": 1, - "Wareneingangs-Verrechnungskonto" : { - "account_number": "70001", - "account_type": "Stock Received But Not Billed" - } - }, - "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", - "tax_rate": 7.0 - }, - "Umsatzsteuer aus innergem. Erwerb": { - "account_number": "3802" - }, - "Umsatzsteuer aus innergem. Erwerb 19 %": { - "account_number": "3804", - "account_type": "Tax", - "tax_rate": 19.0 - }, - "Umsatzsteuer 19 %": { - "account_number": "3806", - "account_type": "Tax", - "tax_rate": 19.0 - }, - "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 - }, - "Passiva - Eigenkapital": { - "root_type": "Equity", - "A - Eigenkapital": { - "account_type": "Equity", - "is_group": 1, - "I - Gezeichnetes Kapital": { - "account_type": "Equity", - "is_group": 1, - "Gezeichnetes Kapital": { - "account_number": "2900", - "account_type": "Equity" - }, - "Gesch\u00e4ftsguthaben der verbleibenden Mitglieder": { - "account_number": "2901" - }, - "Gesch\u00e4ftsguthaben der ausscheidenden Mitglieder": { - "account_number": "2902" - }, - "Gesch\u00e4ftsguthaben aus gek\u00fcndigten Gesch\u00e4ftsanteilen": { - "account_number": "2903" - }, - "R\u00fcckst\u00e4ndige f\u00e4llige Einzahlungen auf Gesch\u00e4ftsanteile, vermerkt": { - "account_number": "2906" - }, - "Gegenkonto R\u00fcckst\u00e4ndige f\u00e4llige Einzahlungen auf Gesch\u00e4ftsanteile, vermerkt": { - "account_number": "2907" - }, - "Kapitalerh\u00f6hung aus Gesellschaftsmitteln": { - "account_number": "2908" - }, - "Ausstehende Einlagen auf das gezeichnete Kapital, nicht eingefordert": { - "account_number": "2910" - } - }, - "II - Kapitalr\u00fccklage": { - "account_type": "Equity", - "is_group": 1, - "Kapitalr\u00fccklage": { - "account_number": "2920" - }, - "Kapitalr\u00fccklage durch Ausgabe von Anteilen \u00fcber Nennbetrag": { - "account_number": "2925" - }, - "Kapitalr\u00fccklage durch Ausgabe von Schuldverschreibungen": { - "account_number": "2926" - }, - "Kapitalr\u00fccklage durch Zuzahlungen gegen Gew\u00e4hrung eines Vorzugs": { - "account_number": "2927" - }, - "Kapitalr\u00fccklage durch Zuzahlungen in das Eigenkapital": { - "account_number": "2928" - }, - "Nachschusskapital (Gegenkonto 1299)": { - "account_number": "2929" - } - }, - "III - Gewinnr\u00fccklagen": { - "account_type": "Equity", - "1 - gesetzliche R\u00fccklage": { - "account_type": "Equity", - "is_group": 1, - "Gesetzliche R\u00fccklage": { - "account_number": "2930" - } - }, - "2 - R\u00fccklage f. Anteile an einem herrschenden oder mehrheitlich beteiligten Unternehmen": { - "account_type": "Equity", - "is_group": 1, - "R\u00fccklage f. Anteile an einem herrschenden oder mehrheitlich beteiligten Unternehmen": { - "account_number": "2935" - } - }, - "3 - satzungsm\u00e4\u00dfige R\u00fccklagen": { - "account_type": "Equity", - "is_group": 1, - "Satzungsm\u00e4\u00dfige R\u00fccklagen": { - "account_number": "2950" - } - }, - "4 - andere Gewinnr\u00fccklagen": { - "account_type": "Equity", - "is_group": 1, - "Andere Gewinnr\u00fccklagen": { - "account_number": "2960" - }, - "Andere Gewinnr\u00fccklagen aus dem Erwerb eigener Anteile": { - "account_number": "2961" - }, - "Eigenkapitalanteil von Wertaufholungen": { - "account_number": "2962" - }, - "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, - "Gewinnvortrag vor Verwendung": { - "account_number": "2970" - }, - "Verlustvortrag vor Verwendung": { - "account_number": "2978" - } - }, - "V - Jahres\u00fcberschu\u00df/Jahresfehlbetrag": { - "account_type": "Equity", - "is_group": 1 - }, - "Einlagen stiller Gesellschafter": { - "account_number": "9295" - } - } - }, - "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 16 % USt": { - "account_number": "4340", - "account_type": "Income Account" - }, - "Erl\u00f6se 19 % USt": { - "account_number": "4400", - "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" - }, - "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": { - "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" - } - }, - "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, - "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" - } - }, - "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)": { - "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": { - "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)": { - "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": { - "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": { - "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, - "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 (Gruppe)": { - "is_group": 1, - "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" - } - }, - "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": { - "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": { - "account_number": "6520" - }, - "Laufende Kfz-Betriebskosten": { - "account_number": "6530" - }, - "Kfz-Reparaturen": { - "account_number": "6540" - }, - "Garagenmiete": { - "account_number": "6550" - }, - "Mietleasing Kfz": { - "account_number": "6560" - }, - "Sonstige Kfz-Kosten": { - "account_number": "6570" - }, - "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 (Gruppe)": { - "is_group": 1, - "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" - } - } - } -} diff --git a/erpnext/accounts/doctype/allowed_to_transact_with/allowed_to_transact_with.json b/erpnext/accounts/doctype/allowed_to_transact_with/allowed_to_transact_with.json index e3f2d59c065..234ffc8a870 100644 --- a/erpnext/accounts/doctype/allowed_to_transact_with/allowed_to_transact_with.json +++ b/erpnext/accounts/doctype/allowed_to_transact_with/allowed_to_transact_with.json @@ -11,6 +11,7 @@ { "fieldname": "company", "fieldtype": "Link", + "ignore_user_permissions": 1, "in_list_view": 1, "label": "Company", "options": "Company", @@ -19,7 +20,7 @@ ], "istable": 1, "links": [], - "modified": "2020-05-01 12:32:34.044911", + "modified": "2024-01-03 11:13:02.669632", "modified_by": "Administrator", "module": "Accounts", "name": "Allowed To Transact With", @@ -28,5 +29,6 @@ "quick_entry": 1, "sort_field": "modified", "sort_order": "DESC", + "states": [], "track_changes": 1 } \ No newline at end of file diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js index d961ead642d..1f2d6ce59a8 100644 --- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js +++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js @@ -137,7 +137,7 @@ frappe.ui.form.on("Bank Reconciliation Tool", { "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.get_account_balance", args: { bank_account: frm.doc.bank_account, - till_date: frm.doc.bank_statement_from_date, + till_date: frappe.datetime.add_days(frm.doc.bank_statement_from_date, -1) }, callback: (response) => { frm.set_value("account_opening_balance", response.message); diff --git a/erpnext/accounts/doctype/bisect_accounting_statements/__init__.py b/erpnext/accounts/doctype/bisect_accounting_statements/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.js b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.js new file mode 100644 index 00000000000..ece0fb33e54 --- /dev/null +++ b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.js @@ -0,0 +1,100 @@ +// Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on("Bisect Accounting Statements", { + onload(frm) { + frm.trigger("render_heatmap"); + }, + refresh(frm) { + frm.add_custom_button(__('Bisect Left'), () => { + frm.trigger("bisect_left"); + }); + + frm.add_custom_button(__('Bisect Right'), () => { + frm.trigger("bisect_right"); + }); + + frm.add_custom_button(__('Up'), () => { + frm.trigger("move_up"); + }); + frm.add_custom_button(__('Build Tree'), () => { + frm.trigger("build_tree"); + }); + }, + render_heatmap(frm) { + let bisect_heatmap = frm.get_field("bisect_heatmap").$wrapper; + bisect_heatmap.addClass("bisect_heatmap_location"); + + // milliseconds in a day + let msiad=24*60*60*1000; + let datapoints = {}; + let fr_dt = new Date(frm.doc.from_date).getTime(); + let to_dt = new Date(frm.doc.to_date).getTime(); + let bisect_start = new Date(frm.doc.current_from_date).getTime(); + let bisect_end = new Date(frm.doc.current_to_date).getTime(); + + for(let x=fr_dt; x <= to_dt; x+=msiad){ + let epoch_in_seconds = x/1000; + if ((bisect_start <= x) && (x <= bisect_end )) { + datapoints[epoch_in_seconds] = 1.0; + } else { + datapoints[epoch_in_seconds] = 0.0; + } + } + + new frappe.Chart(".bisect_heatmap_location", { + type: "heatmap", + data: { + dataPoints: datapoints, + start: new Date(frm.doc.from_date), + end: new Date(frm.doc.to_date), + }, + countLabel: 'Bisecting', + discreteDomains: 1, + }); + }, + bisect_left(frm) { + frm.call({ + doc: frm.doc, + method: 'bisect_left', + freeze: true, + freeze_message: __("Bisecting Left ..."), + callback: (r) => { + frm.trigger("render_heatmap"); + } + }); + }, + bisect_right(frm) { + frm.call({ + doc: frm.doc, + freeze: true, + freeze_message: __("Bisecting Right ..."), + method: 'bisect_right', + callback: (r) => { + frm.trigger("render_heatmap"); + } + }); + }, + move_up(frm) { + frm.call({ + doc: frm.doc, + freeze: true, + freeze_message: __("Moving up in tree ..."), + method: 'move_up', + callback: (r) => { + frm.trigger("render_heatmap"); + } + }); + }, + build_tree(frm) { + frm.call({ + doc: frm.doc, + freeze: true, + freeze_message: __("Rebuilding BTree for period ..."), + method: 'build_tree', + callback: (r) => { + frm.trigger("render_heatmap"); + } + }); + }, +}); diff --git a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json new file mode 100644 index 00000000000..e129fa60c2c --- /dev/null +++ b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json @@ -0,0 +1,194 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2023-09-15 21:28:28.054773", + "default_view": "List", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "section_break_cvfg", + "company", + "column_break_hcam", + "from_date", + "column_break_qxbi", + "to_date", + "column_break_iwny", + "algorithm", + "section_break_8ph9", + "current_node", + "section_break_ngid", + "bisect_heatmap", + "section_break_hmsy", + "bisecting_from", + "current_from_date", + "column_break_uqyd", + "bisecting_to", + "current_to_date", + "section_break_hbyo", + "heading_cppb", + "p_l_summary", + "column_break_aivo", + "balance_sheet_summary", + "b_s_summary", + "column_break_gvwx", + "difference_heading", + "difference" + ], + "fields": [ + { + "fieldname": "column_break_qxbi", + "fieldtype": "Column Break" + }, + { + "fieldname": "from_date", + "fieldtype": "Datetime", + "label": "From Date" + }, + { + "fieldname": "to_date", + "fieldtype": "Datetime", + "label": "To Date" + }, + { + "default": "BFS", + "fieldname": "algorithm", + "fieldtype": "Select", + "label": "Algorithm", + "options": "BFS\nDFS" + }, + { + "fieldname": "column_break_iwny", + "fieldtype": "Column Break" + }, + { + "fieldname": "current_node", + "fieldtype": "Link", + "label": "Current Node", + "options": "Bisect Nodes" + }, + { + "fieldname": "section_break_hmsy", + "fieldtype": "Section Break" + }, + { + "fieldname": "current_from_date", + "fieldtype": "Datetime", + "read_only": 1 + }, + { + "fieldname": "current_to_date", + "fieldtype": "Datetime", + "read_only": 1 + }, + { + "fieldname": "column_break_uqyd", + "fieldtype": "Column Break" + }, + { + "fieldname": "section_break_hbyo", + "fieldtype": "Section Break" + }, + { + "fieldname": "p_l_summary", + "fieldtype": "Float", + "read_only": 1 + }, + { + "fieldname": "b_s_summary", + "fieldtype": "Float", + "read_only": 1 + }, + { + "fieldname": "difference", + "fieldtype": "Float", + "read_only": 1 + }, + { + "fieldname": "column_break_aivo", + "fieldtype": "Column Break" + }, + { + "fieldname": "column_break_gvwx", + "fieldtype": "Column Break" + }, + { + "fieldname": "company", + "fieldtype": "Link", + "label": "Company", + "options": "Company" + }, + { + "fieldname": "column_break_hcam", + "fieldtype": "Column Break" + }, + { + "fieldname": "section_break_ngid", + "fieldtype": "Section Break" + }, + { + "fieldname": "section_break_8ph9", + "fieldtype": "Section Break", + "hidden": 1 + }, + { + "fieldname": "bisect_heatmap", + "fieldtype": "HTML", + "label": "Heatmap" + }, + { + "fieldname": "heading_cppb", + "fieldtype": "Heading", + "label": "Profit and Loss Summary" + }, + { + "fieldname": "balance_sheet_summary", + "fieldtype": "Heading", + "label": "Balance Sheet Summary" + }, + { + "fieldname": "difference_heading", + "fieldtype": "Heading", + "label": "Difference" + }, + { + "fieldname": "bisecting_from", + "fieldtype": "Heading", + "label": "Bisecting From" + }, + { + "fieldname": "bisecting_to", + "fieldtype": "Heading", + "label": "Bisecting To" + }, + { + "fieldname": "section_break_cvfg", + "fieldtype": "Section Break" + } + ], + "hide_toolbar": 1, + "index_web_pages_for_search": 1, + "issingle": 1, + "links": [], + "modified": "2023-12-01 16:49:54.073890", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Bisect Accounting Statements", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "print": 1, + "read": 1, + "role": "Administrator", + "share": 1, + "write": 1 + } + ], + "read_only": 1, + "sort_field": "modified", + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py new file mode 100644 index 00000000000..da273b9f891 --- /dev/null +++ b/erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.py @@ -0,0 +1,226 @@ +# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +import datetime +from collections import deque +from math import floor + +import frappe +from dateutil.relativedelta import relativedelta +from frappe import _ +from frappe.model.document import Document +from frappe.utils import getdate +from frappe.utils.data import guess_date_format + + +class BisectAccountingStatements(Document): + # begin: auto-generated types + # This code is auto-generated. Do not modify anything in this block. + + from typing import TYPE_CHECKING + + if TYPE_CHECKING: + from frappe.types import DF + + algorithm: DF.Literal["BFS", "DFS"] + b_s_summary: DF.Float + company: DF.Link | None + current_from_date: DF.Datetime | None + current_node: DF.Link | None + current_to_date: DF.Datetime | None + difference: DF.Float + from_date: DF.Datetime | None + p_l_summary: DF.Float + to_date: DF.Datetime | None + # end: auto-generated types + + def validate(self): + self.validate_dates() + + def validate_dates(self): + if getdate(self.from_date) > getdate(self.to_date): + frappe.throw( + _("From Date: {0} cannot be greater than To date: {1}").format( + frappe.bold(self.from_date), frappe.bold(self.to_date) + ) + ) + + def bfs(self, from_date: datetime, to_date: datetime): + # Make Root node + node = frappe.new_doc("Bisect Nodes") + node.root = None + node.period_from_date = from_date + node.period_to_date = to_date + node.insert() + + period_queue = deque([node]) + while period_queue: + cur_node = period_queue.popleft() + delta = cur_node.period_to_date - cur_node.period_from_date + if delta.days == 0: + continue + else: + cur_floor = floor(delta.days / 2) + next_to_date = cur_node.period_from_date + relativedelta(days=+cur_floor) + left_node = frappe.new_doc("Bisect Nodes") + left_node.period_from_date = cur_node.period_from_date + left_node.period_to_date = next_to_date + left_node.root = cur_node.name + left_node.generated = False + left_node.insert() + cur_node.left_child = left_node.name + period_queue.append(left_node) + + next_from_date = cur_node.period_from_date + relativedelta(days=+(cur_floor + 1)) + right_node = frappe.new_doc("Bisect Nodes") + right_node.period_from_date = next_from_date + right_node.period_to_date = cur_node.period_to_date + right_node.root = cur_node.name + right_node.generated = False + right_node.insert() + cur_node.right_child = right_node.name + period_queue.append(right_node) + + cur_node.save() + + def dfs(self, from_date: datetime, to_date: datetime): + # Make Root node + node = frappe.new_doc("Bisect Nodes") + node.root = None + node.period_from_date = from_date + node.period_to_date = to_date + node.insert() + + period_stack = [node] + while period_stack: + cur_node = period_stack.pop() + delta = cur_node.period_to_date - cur_node.period_from_date + if delta.days == 0: + continue + else: + cur_floor = floor(delta.days / 2) + next_to_date = cur_node.period_from_date + relativedelta(days=+cur_floor) + left_node = frappe.new_doc("Bisect Nodes") + left_node.period_from_date = cur_node.period_from_date + left_node.period_to_date = next_to_date + left_node.root = cur_node.name + left_node.generated = False + left_node.insert() + cur_node.left_child = left_node.name + period_stack.append(left_node) + + next_from_date = cur_node.period_from_date + relativedelta(days=+(cur_floor + 1)) + right_node = frappe.new_doc("Bisect Nodes") + right_node.period_from_date = next_from_date + right_node.period_to_date = cur_node.period_to_date + right_node.root = cur_node.name + right_node.generated = False + right_node.insert() + cur_node.right_child = right_node.name + period_stack.append(right_node) + + cur_node.save() + + @frappe.whitelist() + def build_tree(self): + frappe.db.delete("Bisect Nodes") + + # Convert str to datetime format + dt_format = guess_date_format(self.from_date) + from_date = datetime.datetime.strptime(self.from_date, dt_format) + to_date = datetime.datetime.strptime(self.to_date, dt_format) + + if self.algorithm == "BFS": + self.bfs(from_date, to_date) + + if self.algorithm == "DFS": + self.dfs(from_date, to_date) + + # set root as current node + root = frappe.db.get_all("Bisect Nodes", filters={"root": ["is", "not set"]})[0] + self.get_report_summary() + self.current_node = root.name + self.current_from_date = self.from_date + self.current_to_date = self.to_date + self.save() + + def get_report_summary(self): + filters = { + "company": self.company, + "filter_based_on": "Date Range", + "period_start_date": self.current_from_date, + "period_end_date": self.current_to_date, + "periodicity": "Yearly", + } + pl_summary = frappe.get_doc("Report", "Profit and Loss Statement") + self.p_l_summary = pl_summary.execute_script_report(filters=filters)[5] + bs_summary = frappe.get_doc("Report", "Balance Sheet") + self.b_s_summary = bs_summary.execute_script_report(filters=filters)[5] + self.difference = abs(self.p_l_summary - self.b_s_summary) + + def update_node(self): + current_node = frappe.get_doc("Bisect Nodes", self.current_node) + current_node.balance_sheet_summary = self.b_s_summary + current_node.profit_loss_summary = self.p_l_summary + current_node.difference = self.difference + current_node.generated = True + current_node.save() + + def current_node_has_summary_info(self): + "Assertion method" + return frappe.db.get_value("Bisect Nodes", self.current_node, "generated") + + def fetch_summary_info_from_current_node(self): + current_node = frappe.get_doc("Bisect Nodes", self.current_node) + self.p_l_summary = current_node.balance_sheet_summary + self.b_s_summary = current_node.profit_loss_summary + self.difference = abs(self.p_l_summary - self.b_s_summary) + + def fetch_or_calculate(self): + if self.current_node_has_summary_info(): + self.fetch_summary_info_from_current_node() + else: + self.get_report_summary() + self.update_node() + + @frappe.whitelist() + def bisect_left(self): + if self.current_node is not None: + cur_node = frappe.get_doc("Bisect Nodes", self.current_node) + if cur_node.left_child is not None: + lft_node = frappe.get_doc("Bisect Nodes", cur_node.left_child) + self.current_node = cur_node.left_child + self.current_from_date = lft_node.period_from_date + self.current_to_date = lft_node.period_to_date + self.fetch_or_calculate() + self.save() + else: + frappe.msgprint(_("No more children on Left")) + + @frappe.whitelist() + def bisect_right(self): + if self.current_node is not None: + cur_node = frappe.get_doc("Bisect Nodes", self.current_node) + if cur_node.right_child is not None: + rgt_node = frappe.get_doc("Bisect Nodes", cur_node.right_child) + self.current_node = cur_node.right_child + self.current_from_date = rgt_node.period_from_date + self.current_to_date = rgt_node.period_to_date + self.fetch_or_calculate() + self.save() + else: + frappe.msgprint(_("No more children on Right")) + + @frappe.whitelist() + def move_up(self): + if self.current_node is not None: + cur_node = frappe.get_doc("Bisect Nodes", self.current_node) + if cur_node.root is not None: + root = frappe.get_doc("Bisect Nodes", cur_node.root) + self.current_node = cur_node.root + self.current_from_date = root.period_from_date + self.current_to_date = root.period_to_date + self.fetch_or_calculate() + self.save() + else: + frappe.msgprint(_("Reached Root")) diff --git a/erpnext/accounts/doctype/bisect_accounting_statements/test_bisect_accounting_statements.py b/erpnext/accounts/doctype/bisect_accounting_statements/test_bisect_accounting_statements.py new file mode 100644 index 00000000000..56ecc94a18e --- /dev/null +++ b/erpnext/accounts/doctype/bisect_accounting_statements/test_bisect_accounting_statements.py @@ -0,0 +1,9 @@ +# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +# import frappe +from frappe.tests.utils import FrappeTestCase + + +class TestBisectAccountingStatements(FrappeTestCase): + pass diff --git a/erpnext/accounts/doctype/bisect_nodes/__init__.py b/erpnext/accounts/doctype/bisect_nodes/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/accounts/doctype/bisect_nodes/bisect_nodes.js b/erpnext/accounts/doctype/bisect_nodes/bisect_nodes.js new file mode 100644 index 00000000000..6dea25fc924 --- /dev/null +++ b/erpnext/accounts/doctype/bisect_nodes/bisect_nodes.js @@ -0,0 +1,8 @@ +// Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +// frappe.ui.form.on("Bisect Nodes", { +// refresh(frm) { + +// }, +// }); diff --git a/erpnext/accounts/doctype/bisect_nodes/bisect_nodes.json b/erpnext/accounts/doctype/bisect_nodes/bisect_nodes.json new file mode 100644 index 00000000000..03fad261c3c --- /dev/null +++ b/erpnext/accounts/doctype/bisect_nodes/bisect_nodes.json @@ -0,0 +1,97 @@ +{ + "actions": [], + "autoname": "autoincrement", + "creation": "2023-09-27 14:56:38.112462", + "default_view": "List", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "root", + "left_child", + "right_child", + "period_from_date", + "period_to_date", + "difference", + "balance_sheet_summary", + "profit_loss_summary", + "generated" + ], + "fields": [ + { + "fieldname": "root", + "fieldtype": "Link", + "label": "Root", + "options": "Bisect Nodes" + }, + { + "fieldname": "left_child", + "fieldtype": "Link", + "label": "Left Child", + "options": "Bisect Nodes" + }, + { + "fieldname": "right_child", + "fieldtype": "Link", + "label": "Right Child", + "options": "Bisect Nodes" + }, + { + "fieldname": "period_from_date", + "fieldtype": "Datetime", + "label": "Period_from_date" + }, + { + "fieldname": "period_to_date", + "fieldtype": "Datetime", + "label": "Period To Date" + }, + { + "fieldname": "difference", + "fieldtype": "Float", + "label": "Difference" + }, + { + "fieldname": "balance_sheet_summary", + "fieldtype": "Float", + "label": "Balance Sheet Summary" + }, + { + "fieldname": "profit_loss_summary", + "fieldtype": "Float", + "label": "Profit and Loss Summary" + }, + { + "default": "0", + "fieldname": "generated", + "fieldtype": "Check", + "label": "Generated" + } + ], + "index_web_pages_for_search": 1, + "links": [], + "modified": "2023-12-01 17:46:12.437996", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Bisect Nodes", + "naming_rule": "Autoincrement", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Administrator", + "share": 1, + "write": 1 + } + ], + "read_only": 1, + "sort_field": "modified", + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/bisect_nodes/bisect_nodes.py b/erpnext/accounts/doctype/bisect_nodes/bisect_nodes.py new file mode 100644 index 00000000000..f50776641d0 --- /dev/null +++ b/erpnext/accounts/doctype/bisect_nodes/bisect_nodes.py @@ -0,0 +1,29 @@ +# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + + +class BisectNodes(Document): + # begin: auto-generated types + # This code is auto-generated. Do not modify anything in this block. + + from typing import TYPE_CHECKING + + if TYPE_CHECKING: + from frappe.types import DF + + balance_sheet_summary: DF.Float + difference: DF.Float + generated: DF.Check + left_child: DF.Link | None + name: DF.Int | None + period_from_date: DF.Datetime | None + period_to_date: DF.Datetime | None + profit_loss_summary: DF.Float + right_child: DF.Link | None + root: DF.Link | None + # end: auto-generated types + + pass diff --git a/erpnext/accounts/doctype/bisect_nodes/test_bisect_nodes.py b/erpnext/accounts/doctype/bisect_nodes/test_bisect_nodes.py new file mode 100644 index 00000000000..5399df139f1 --- /dev/null +++ b/erpnext/accounts/doctype/bisect_nodes/test_bisect_nodes.py @@ -0,0 +1,9 @@ +# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +# import frappe +from frappe.tests.utils import FrappeTestCase + + +class TestBisectNodes(FrappeTestCase): + pass diff --git a/erpnext/accounts/doctype/cashier_closing/cashier_closing.json b/erpnext/accounts/doctype/cashier_closing/cashier_closing.json index 1b38f0d36d7..051b44b5868 100644 --- a/erpnext/accounts/doctype/cashier_closing/cashier_closing.json +++ b/erpnext/accounts/doctype/cashier_closing/cashier_closing.json @@ -1,457 +1,152 @@ { - "allow_copy": 0, - "allow_events_in_timeline": 0, - "allow_guest_to_view": 0, - "allow_import": 0, - "allow_rename": 0, + "actions": [], "autoname": "naming_series:", - "beta": 0, "creation": "2018-06-18 16:51:49.994750", - "custom": 0, - "docstatus": 0, "doctype": "DocType", - "document_type": "", "editable_grid": 1, "engine": "InnoDB", + "field_order": [ + "naming_series", + "user", + "date", + "from_time", + "time", + "expense", + "custody", + "returns", + "outstanding_amount", + "payments", + "net_amount", + "amended_from" + ], "fields": [ { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, "default": "POS-CLO-", "fieldname": "naming_series", "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, "in_filter": 1, "in_global_search": 1, - "in_list_view": 0, "in_standard_filter": 1, "label": "Series", - "length": 0, - "no_copy": 0, "options": "POS-CLO-", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "read_only": 1 }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, "fieldname": "user", "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, "in_filter": 1, - "in_global_search": 0, "in_list_view": 1, "in_standard_filter": 1, "label": "User", - "length": 0, - "no_copy": 0, "options": "User", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "reqd": 1 }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, "default": "Today", "fieldname": "date", "fieldtype": "Date", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, "in_filter": 1, - "in_global_search": 0, - "in_list_view": 0, "in_standard_filter": 1, "label": "Date", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "read_only": 1 }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, "fieldname": "from_time", "fieldtype": "Time", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, "in_filter": 1, - "in_global_search": 0, - "in_list_view": 0, "in_standard_filter": 1, "label": "From Time", - "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": 1, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "reqd": 1 }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "", "fieldname": "time", "fieldtype": "Time", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, "in_filter": 1, - "in_global_search": 0, - "in_list_view": 0, "in_standard_filter": 1, "label": "To Time", - "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": 1, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "reqd": 1 }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, "default": "0.00", "fieldname": "expense", "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, "in_filter": 1, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Expense", - "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 + "label": "Expense" }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, "default": "0.00", "fieldname": "custody", "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, "in_filter": 1, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Custody", - "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 + "label": "Custody" }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, "default": "0.00", "fieldname": "returns", "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, "in_filter": 1, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, "label": "Returns", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "2", - "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, - "unique": 0 + "precision": "2" }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, "default": "0.00", "fieldname": "outstanding_amount", "fieldtype": "Float", - "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": "Outstanding Amount", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "read_only": 1 }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "0.0", "fieldname": "payments", "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, "in_filter": 1, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, "label": "Payments", - "length": 0, - "no_copy": 0, - "options": "Cashier Closing Payments", - "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 + "options": "Cashier Closing Payments" }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, "fieldname": "net_amount", "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, "in_filter": 1, - "in_global_search": 0, "in_list_view": 1, "in_standard_filter": 1, "label": "Net Amount", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "read_only": 1 }, { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, "fieldname": "amended_from", "fieldtype": "Link", - "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": "Amended From", - "length": 0, "no_copy": 1, "options": "Cashier Closing", - "permlevel": 0, "print_hide": 1, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "translatable": 0, - "unique": 0 + "read_only": 1 } ], - "has_web_view": 0, - "hide_heading": 0, - "hide_toolbar": 0, - "idx": 0, - "image_view": 0, - "in_create": 0, "is_submittable": 1, - "issingle": 0, - "istable": 0, - "max_attachments": 0, - "modified": "2019-02-19 08:35:24.157327", + "links": [], + "modified": "2023-12-28 13:15:46.858427", "modified_by": "Administrator", "module": "Accounts", "name": "Cashier Closing", - "name_case": "", + "naming_rule": "By \"Naming Series\" field", "owner": "Administrator", "permissions": [ { - "amend": 0, - "cancel": 0, "create": 1, "delete": 1, "email": 1, "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, "print": 1, "read": 1, "report": 1, "role": "System Manager", - "set_user_permissions": 0, "share": 1, "submit": 1, "write": 1 } ], - "quick_entry": 0, - "read_only": 0, - "read_only_onload": 0, - "show_name_in_global_search": 0, "sort_field": "modified", "sort_order": "DESC", - "track_changes": 1, - "track_seen": 0, - "track_views": 0 -} + "states": [], + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.json b/erpnext/accounts/doctype/gl_entry/gl_entry.json index 16df40f4354..09912e98960 100644 --- a/erpnext/accounts/doctype/gl_entry/gl_entry.json +++ b/erpnext/accounts/doctype/gl_entry/gl_entry.json @@ -23,6 +23,7 @@ "against_voucher_type", "against_voucher", "voucher_type", + "voucher_subtype", "voucher_no", "voucher_detail_no", "project", @@ -138,19 +139,19 @@ "options": "DocType" }, { - "fieldname": "against", - "fieldtype": "Text", - "in_filter": 1, - "label": "Against", - "oldfieldname": "against", - "oldfieldtype": "Text" + "fieldname": "against", + "fieldtype": "Text", + "in_filter": 1, + "label": "Against", + "oldfieldname": "against", + "oldfieldtype": "Text" }, { - "fieldname": "against_link", - "fieldtype": "Dynamic Link", - "in_filter": 1, - "label": "Against", - "options": "against_type" + "fieldname": "against_link", + "fieldtype": "Dynamic Link", + "in_filter": 1, + "label": "Against", + "options": "against_type" }, { "fieldname": "against_voucher_type", @@ -158,8 +159,7 @@ "label": "Against Voucher Type", "oldfieldname": "against_voucher_type", "oldfieldtype": "Data", - "options": "DocType", - "search_index": 1 + "options": "DocType" }, { "fieldname": "against_voucher", @@ -178,8 +178,7 @@ "label": "Voucher Type", "oldfieldname": "voucher_type", "oldfieldtype": "Select", - "options": "DocType", - "search_index": 1 + "options": "DocType" }, { "fieldname": "voucher_no", @@ -296,13 +295,18 @@ "fieldtype": "Currency", "label": "Credit Amount in Transaction Currency", "options": "transaction_currency" + }, + { + "fieldname": "voucher_subtype", + "fieldtype": "Small Text", + "label": "Voucher Subtype" } ], "icon": "fa fa-list", "idx": 1, "in_create": 1, "links": [], - "modified": "2023-11-08 12:20:23.031733", + "modified": "2023-12-18 15:38:14.006208", "modified_by": "Administrator", "module": "Accounts", "name": "GL Entry", @@ -337,4 +341,4 @@ "sort_field": "modified", "sort_order": "DESC", "states": [] -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py index f7dd29ab1c1..139f52696bc 100644 --- a/erpnext/accounts/doctype/gl_entry/gl_entry.py +++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py @@ -39,6 +39,8 @@ class GLEntry(Document): account: DF.Link | None account_currency: DF.Link | None against: DF.Text | None + against_link: DF.DynamicLink | None + against_type: DF.Link | None against_voucher: DF.DynamicLink | None against_voucher_type: DF.Link | None company: DF.Link | None @@ -66,6 +68,7 @@ class GLEntry(Document): transaction_exchange_rate: DF.Float voucher_detail_no: DF.Data | None voucher_no: DF.DynamicLink | None + voucher_subtype: DF.SmallText | None voucher_type: DF.Link | None # end: auto-generated types diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py index 79f1ab063d4..ddf64608426 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.py +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py @@ -1031,6 +1031,10 @@ class JournalEntry(AccountsController): def build_gl_map(self): gl_map = [] + conversion_rate_map = self.get_conversion_rate_map() + transaction_currency_map = self.get_transaction_currency_map() + company_currency = erpnext.get_company_currency(self.company) + self.get_against_accounts() for d in self.get("accounts"): if d.debit or d.credit or (self.voucher_type == "Exchange Gain Or Loss"): @@ -1060,6 +1064,12 @@ class JournalEntry(AccountsController): "cost_center": d.cost_center, "project": d.project, "finance_book": self.finance_book, + "conversion_rate": conversion_rate_map.get(d.against_account_link, 1) + if d.account_currency == company_currency + else 1, + "currency": transaction_currency_map.get(d.against_account_link, d.account_currency) + if d.account_currency == company_currency + else d.account_currency, }, item=d, ) @@ -1109,6 +1119,20 @@ class JournalEntry(AccountsController): return gl_map + def get_transaction_currency_map(self): + transaction_currency_map = {} + for account in self.get("accounts"): + transaction_currency_map.setdefault(account.party or account.account, account.account_currency) + + return transaction_currency_map + + def get_conversion_rate_map(self): + conversion_rate_map = {} + for account in self.get("accounts"): + conversion_rate_map.setdefault(account.party or account.account, account.exchange_rate) + + return conversion_rate_map + def make_gl_entries(self, cancel=0, adv_adj=0): from erpnext.accounts.general_ledger import make_gl_entries diff --git a/erpnext/accounts/doctype/journal_entry/test_records.json b/erpnext/accounts/doctype/journal_entry/test_records.json index dafcf56abdb..717c579c7a3 100644 --- a/erpnext/accounts/doctype/journal_entry/test_records.json +++ b/erpnext/accounts/doctype/journal_entry/test_records.json @@ -1,97 +1,94 @@ [ - { - "cheque_date": "2013-03-14", - "cheque_no": "33", - "company": "_Test Company", - "doctype": "Journal Entry", - "accounts": [ - { - "account": "Debtors - _TC", - "party_type": "Customer", - "party": "_Test Customer", - "credit_in_account_currency": 400.0, - "debit_in_account_currency": 0.0, - "doctype": "Journal Entry Account", - "parentfield": "accounts", - "cost_center": "_Test Cost Center - _TC" - }, - { - "account": "_Test Bank - _TC", - "credit_in_account_currency": 0.0, - "debit_in_account_currency": 400.0, - "doctype": "Journal Entry Account", - "parentfield": "accounts", - "cost_center": "_Test Cost Center - _TC" - } - ], - "naming_series": "_T-Journal Entry-", - "posting_date": "2013-02-14", - "user_remark": "test", - "voucher_type": "Bank Entry" - }, - - - { - "cheque_date": "2013-02-14", - "cheque_no": "33", - "company": "_Test Company", - "doctype": "Journal Entry", - "accounts": [ - { - "account": "_Test Payable - _TC", - "party_type": "Supplier", - "party": "_Test Supplier", - "credit_in_account_currency": 0.0, - "debit_in_account_currency": 400.0, - "doctype": "Journal Entry Account", - "parentfield": "accounts", - "cost_center": "_Test Cost Center - _TC" - }, - { - "account": "_Test Bank - _TC", - "credit_in_account_currency": 400.0, - "debit_in_account_currency": 0.0, - "doctype": "Journal Entry Account", - "parentfield": "accounts", - "cost_center": "_Test Cost Center - _TC" - } - ], - "naming_series": "_T-Journal Entry-", - "posting_date": "2013-02-14", - "user_remark": "test", - "voucher_type": "Bank Entry" - }, - - - { - "cheque_date": "2013-02-14", - "cheque_no": "33", - "company": "_Test Company", - "doctype": "Journal Entry", - "accounts": [ - { - "account": "Debtors - _TC", - "party_type": "Customer", - "party": "_Test Customer", - "credit_in_account_currency": 0.0, - "debit_in_account_currency": 400.0, - "doctype": "Journal Entry Account", - "parentfield": "accounts", - "cost_center": "_Test Cost Center - _TC" - }, - { - "account": "Sales - _TC", - "cost_center": "_Test Cost Center - _TC", - "credit_in_account_currency": 400.0, - "debit_in_account_currency": 0.0, - "doctype": "Journal Entry Account", - "parentfield": "accounts", - "cost_center": "_Test Cost Center - _TC" - } - ], - "naming_series": "_T-Journal Entry-", - "posting_date": "2013-02-14", - "user_remark": "test", - "voucher_type": "Bank Entry" - } + { + "cheque_date": "2013-03-14", + "cheque_no": "33", + "company": "_Test Company", + "doctype": "Journal Entry", + "accounts": [ + { + "account": "Debtors - _TC", + "party_type": "Customer", + "party": "_Test Customer", + "credit_in_account_currency": 400.0, + "debit_in_account_currency": 0.0, + "doctype": "Journal Entry Account", + "parentfield": "accounts", + "cost_center": "_Test Cost Center - _TC" + }, + { + "account": "_Test Bank - _TC", + "credit_in_account_currency": 0.0, + "debit_in_account_currency": 400.0, + "doctype": "Journal Entry Account", + "parentfield": "accounts", + "cost_center": "_Test Cost Center - _TC" + } + ], + "naming_series": "_T-Journal Entry-", + "posting_date": "2013-02-14", + "user_remark": "test", + "voucher_type": "Bank Entry" + }, + + { + "cheque_date": "2013-02-14", + "cheque_no": "33", + "company": "_Test Company", + "doctype": "Journal Entry", + "accounts": [ + { + "account": "_Test Payable - _TC", + "party_type": "Supplier", + "party": "_Test Supplier", + "credit_in_account_currency": 0.0, + "debit_in_account_currency": 400.0, + "doctype": "Journal Entry Account", + "parentfield": "accounts", + "cost_center": "_Test Cost Center - _TC" + }, + { + "account": "_Test Bank - _TC", + "credit_in_account_currency": 400.0, + "debit_in_account_currency": 0.0, + "doctype": "Journal Entry Account", + "parentfield": "accounts", + "cost_center": "_Test Cost Center - _TC" + } + ], + "naming_series": "_T-Journal Entry-", + "posting_date": "2013-02-14", + "user_remark": "test", + "voucher_type": "Bank Entry" + }, + + { + "cheque_date": "2013-02-14", + "cheque_no": "33", + "company": "_Test Company", + "doctype": "Journal Entry", + "accounts": [ + { + "account": "Debtors - _TC", + "party_type": "Customer", + "party": "_Test Customer", + "credit_in_account_currency": 0.0, + "debit_in_account_currency": 400.0, + "doctype": "Journal Entry Account", + "parentfield": "accounts", + "cost_center": "_Test Cost Center - _TC" + }, + { + "account": "Sales - _TC", + "credit_in_account_currency": 400.0, + "debit_in_account_currency": 0.0, + "doctype": "Journal Entry Account", + "parentfield": "accounts", + "cost_center": "_Test Cost Center - _TC" + } + ], + "naming_series": "_T-Journal Entry-", + "posting_date": "2013-02-14", + "user_remark": "test", + "voucher_type": "Bank Entry" + } ] diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py index bfb51da58b3..e542d3cc630 100644 --- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py +++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py @@ -765,7 +765,7 @@ def get_pos_reserved_qty(item_code, warehouse): reserved_qty = ( frappe.qb.from_(p_inv) .from_(p_item) - .select(Sum(p_item.qty).as_("qty")) + .select(Sum(p_item.stock_qty).as_("stock_qty")) .where( (p_inv.name == p_item.parent) & (IfNull(p_inv.consolidated_invoice, "") == "") @@ -775,7 +775,7 @@ def get_pos_reserved_qty(item_code, warehouse): ) ).run(as_dict=True) - return reserved_qty[0].qty or 0 if reserved_qty else 0 + return flt(reserved_qty[0].stock_qty) if reserved_qty else 0 @frappe.whitelist() diff --git a/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.py b/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.py index f44b14caed7..761c2bc1e3a 100644 --- a/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.py +++ b/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.py @@ -440,7 +440,7 @@ def reconcile(doc: None | str = None) -> None: # Update the parent doc about the exception frappe.db.rollback() - traceback = frappe.get_traceback() + traceback = frappe.get_traceback(with_context=True) if traceback: message = "Traceback:
" + traceback frappe.db.set_value("Process Payment Reconciliation Log", log, "error_log", message) diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js index cebd61a6f50..44d4d816434 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js @@ -35,7 +35,7 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying. super.onload(); // Ignore linked advances - this.frm.ignore_doctypes_on_cancel_all = ['Journal Entry', 'Payment Entry', 'Purchase Invoice', "Repost Payment Ledger", "Repost Accounting Ledger", "Unreconcile Payment", "Unreconcile Payment Entries"]; + this.frm.ignore_doctypes_on_cancel_all = ['Journal Entry', 'Payment Entry', 'Purchase Invoice', "Repost Payment Ledger", "Repost Accounting Ledger", "Unreconcile Payment", "Unreconcile Payment Entries", "Serial and Batch Bundle"]; if(!this.frm.doc.__islocal) { // show credit_to in print format @@ -163,6 +163,18 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying. } }) }, __("Get Items From")); + + if (!this.frm.doc.is_return) { + frappe.db.get_single_value("Buying Settings", "maintain_same_rate").then((value) => { + if (value) { + this.frm.doc.items.forEach((item) => { + this.frm.fields_dict.items.grid.update_docfield_property( + "rate", "read_only", (item.purchase_receipt && item.pr_detail) + ); + }); + } + }); + } } this.frm.toggle_reqd("supplier_warehouse", this.frm.doc.is_subcontracted); @@ -396,6 +408,8 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying. } on_submit() { + super.on_submit(); + $.each(this.frm.doc["items"] || [], function(i, row) { if(row.purchase_receipt) frappe.model.clear_doc("Purchase Receipt", row.purchase_receipt) }) diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index 931b48d9050..e676560c5c7 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -1157,11 +1157,17 @@ class PurchaseInvoice(BuyingController): ) assets = frappe.db.get_all( - "Asset", filters={"purchase_invoice": self.name, "item_code": item.item_code} + "Asset", + filters={"purchase_invoice": self.name, "item_code": item.item_code}, + fields=["name", "asset_quantity"], ) for asset in assets: - frappe.db.set_value("Asset", asset.name, "gross_purchase_amount", flt(item.valuation_rate)) - frappe.db.set_value("Asset", asset.name, "purchase_receipt_amount", flt(item.valuation_rate)) + frappe.db.set_value( + "Asset", asset.name, "gross_purchase_amount", flt(item.valuation_rate) * asset.asset_quantity + ) + frappe.db.set_value( + "Asset", asset.name, "purchase_receipt_amount", flt(item.valuation_rate) * asset.asset_quantity + ) def make_stock_adjustment_entry( self, gl_entries, item, voucher_wise_stock_value, account_currency @@ -1858,10 +1864,6 @@ def make_inter_company_sales_invoice(source_name, target_doc=None): return make_inter_company_transaction("Purchase Invoice", source_name, target_doc) -def on_doctype_update(): - frappe.db.add_index("Purchase Invoice", ["supplier", "is_return", "return_against"]) - - @frappe.whitelist() def make_purchase_receipt(source_name, target_doc=None): def update_item(obj, target, source_parent): diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py index e43ea6ecbe0..e41cec7eee3 100644 --- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py @@ -1985,6 +1985,26 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin): self.assertEqual(pi.items[0].cost_center, "_Test Cost Center Buying - _TC") + def test_debit_note_without_item(self): + pi = make_purchase_invoice(item_name="_Test Item", qty=10, do_not_submit=True) + pi.items[0].item_code = "" + pi.save() + + self.assertFalse(pi.items[0].item_code) + pi.submit() + + return_pi = make_purchase_invoice( + item_name="_Test Item", + is_return=1, + return_against=pi.name, + qty=-10, + do_not_save=True, + ) + return_pi.items[0].item_code = "" + return_pi.save() + return_pi.submit() + self.assertEqual(return_pi.docstatus, 1) + def set_advance_flag(company, flag, default_account): frappe.db.set_value( @@ -2121,6 +2141,7 @@ def make_purchase_invoice(**args): "items", { "item_code": args.item or args.item_code or "_Test Item", + "item_name": args.item_name, "warehouse": args.warehouse or "_Test Warehouse - _TC", "qty": args.qty or 5, "received_qty": args.received_qty or 0, diff --git a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json index 7cad3ae1c0a..9cf4e4fd7c5 100644 --- a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json +++ b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json @@ -288,7 +288,6 @@ "oldfieldname": "import_rate", "oldfieldtype": "Currency", "options": "currency", - "read_only_depends_on": "eval: (!parent.is_return && doc.purchase_receipt && doc.pr_detail)", "reqd": 1 }, { @@ -919,7 +918,7 @@ "idx": 1, "istable": 1, "links": [], - "modified": "2023-11-30 16:26:05.629780", + "modified": "2023-12-25 22:00:28.043555", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice Item", diff --git a/erpnext/accounts/doctype/repost_payment_ledger/repost_payment_ledger.py b/erpnext/accounts/doctype/repost_payment_ledger/repost_payment_ledger.py index 38bc1a6fb82..2d10f7c7624 100644 --- a/erpnext/accounts/doctype/repost_payment_ledger/repost_payment_ledger.py +++ b/erpnext/accounts/doctype/repost_payment_ledger/repost_payment_ledger.py @@ -43,7 +43,7 @@ def start_payment_ledger_repost(docname=None): except Exception as e: frappe.db.rollback() - traceback = frappe.get_traceback() + traceback = frappe.get_traceback(with_context=True) if traceback: message = "Traceback:
" + traceback frappe.db.set_value(repost_doc.doctype, repost_doc.name, "repost_error_log", message) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index 6763e446a5d..c8d92d0d705 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -37,7 +37,9 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends e super.onload(); this.frm.ignore_doctypes_on_cancel_all = ['POS Invoice', 'Timesheet', 'POS Invoice Merge Log', - 'POS Closing Entry', 'Journal Entry', 'Payment Entry', "Repost Payment Ledger", "Repost Accounting Ledger", "Unreconcile Payment", "Unreconcile Payment Entries"]; + 'POS Closing Entry', 'Journal Entry', 'Payment Entry', "Repost Payment Ledger", "Repost Accounting Ledger", "Unreconcile Payment", "Unreconcile Payment Entries", + 'Serial and Batch Bundle' + ]; if(!this.frm.doc.__islocal && !this.frm.doc.customer && this.frm.doc.debit_to) { // show debit_to in print format @@ -197,6 +199,7 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends e on_submit(doc, dt, dn) { var me = this; + super.on_submit(); if (frappe.get_route()[0] != 'Form') { return } diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index f2094874e0e..5e2187e91fe 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -138,6 +138,7 @@ "loyalty_amount", "column_break_77", "loyalty_program", + "dont_create_loyalty_points", "loyalty_redemption_account", "loyalty_redemption_cost_center", "contact_and_address_tab", @@ -1041,8 +1042,7 @@ "label": "Loyalty Program", "no_copy": 1, "options": "Loyalty Program", - "print_hide": 1, - "read_only": 1 + "print_hide": 1 }, { "allow_on_submit": 1, @@ -2162,6 +2162,14 @@ "fieldname": "update_billed_amount_in_delivery_note", "fieldtype": "Check", "label": "Update Billed Amount in Delivery Note" + }, + { + "default": "0", + "depends_on": "loyalty_program", + "fieldname": "dont_create_loyalty_points", + "fieldtype": "Check", + "label": "Don't Create Loyalty Points", + "no_copy": 1 } ], "icon": "fa fa-file-text", @@ -2174,7 +2182,7 @@ "link_fieldname": "consolidated_invoice" } ], - "modified": "2023-11-23 16:56:29.679499", + "modified": "2024-01-02 17:25:46.027523", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice", diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index c0228e6b0ba..8da45054c2f 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -117,6 +117,7 @@ class SalesInvoice(SellingController): discount_amount: DF.Currency dispatch_address: DF.SmallText | None dispatch_address_name: DF.Link | None + dont_create_loyalty_points: DF.Check due_date: DF.Date | None from_date: DF.Date | None grand_total: DF.Currency @@ -471,7 +472,12 @@ class SalesInvoice(SellingController): update_linked_doc(self.doctype, self.name, self.inter_company_invoice_reference) # create the loyalty point ledger entry if the customer is enrolled in any loyalty program - if not self.is_return and not self.is_consolidated and self.loyalty_program: + if ( + not self.is_return + and not self.is_consolidated + and self.loyalty_program + and not self.dont_create_loyalty_points + ): self.make_loyalty_point_entry() elif ( self.is_return and self.return_against and not self.is_consolidated and self.loyalty_program @@ -586,6 +592,8 @@ class SalesInvoice(SellingController): "Serial and Batch Bundle", ) + self.delete_auto_created_batches() + def update_status_updater_args(self): if cint(self.update_stock): self.status_updater.append( @@ -2575,10 +2583,6 @@ def get_loyalty_programs(customer): return lp_details -def on_doctype_update(): - frappe.db.add_index("Sales Invoice", ["customer", "is_return", "return_against"]) - - @frappe.whitelist() def create_invoice_discounting(source_name, target_doc=None): invoice = frappe.get_doc("Sales Invoice", source_name) diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py index 6163749c4fd..1fc3f795b89 100644 --- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py @@ -1414,10 +1414,11 @@ class TestSalesInvoice(FrappeTestCase): def test_serialized_cancel(self): si = self.test_serialized() - si.cancel() - + si.reload() serial_nos = get_serial_nos_from_bundle(si.get("items")[0].serial_and_batch_bundle) + si.cancel() + self.assertEqual( frappe.db.get_value("Serial No", serial_nos[0], "warehouse"), "_Test Warehouse - _TC" ) diff --git a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json index a403b14c54c..ec9e792d7d4 100644 --- a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json +++ b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json @@ -81,6 +81,7 @@ "warehouse", "target_warehouse", "quality_inspection", + "pick_serial_and_batch", "serial_and_batch_bundle", "batch_no", "incoming_rate", @@ -897,12 +898,18 @@ "options": "Serial and Batch Bundle", "print_hide": 1, "search_index": 1 + }, + { + "depends_on": "eval:parent.update_stock === 1", + "fieldname": "pick_serial_and_batch", + "fieldtype": "Button", + "label": "Pick Serial / Batch No" } ], "idx": 1, "istable": 1, "links": [], - "modified": "2023-11-14 18:34:10.479329", + "modified": "2023-12-29 13:03:14.121298", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice Item", diff --git a/erpnext/accounts/doctype/subscription/subscription.json b/erpnext/accounts/doctype/subscription/subscription.json index 187b7abce18..97fd4d040f1 100644 --- a/erpnext/accounts/doctype/subscription/subscription.json +++ b/erpnext/accounts/doctype/subscription/subscription.json @@ -148,13 +148,13 @@ { "fieldname": "additional_discount_percentage", "fieldtype": "Percent", - "label": "Additional DIscount Percentage" + "label": "Additional Discount Percentage" }, { "collapsible": 1, "fieldname": "additional_discount_amount", "fieldtype": "Currency", - "label": "Additional DIscount Amount" + "label": "Additional Discount Amount" }, { "collapsible": 1, @@ -267,7 +267,7 @@ "link_fieldname": "subscription" } ], - "modified": "2023-09-18 17:48:21.900252", + "modified": "2023-12-28 17:20:42.687789", "modified_by": "Administrator", "module": "Accounts", "name": "Subscription", diff --git a/erpnext/accounts/doctype/subscription/subscription.py b/erpnext/accounts/doctype/subscription/subscription.py index aba1b649301..72e574c299a 100644 --- a/erpnext/accounts/doctype/subscription/subscription.py +++ b/erpnext/accounts/doctype/subscription/subscription.py @@ -356,18 +356,20 @@ class Subscription(Document): self, from_date: Optional[Union[str, datetime.date]] = None, to_date: Optional[Union[str, datetime.date]] = None, + posting_date: Optional[Union[str, datetime.date]] = None, ) -> Document: """ Creates a `Invoice` for the `Subscription`, updates `self.invoices` and saves the `Subscription`. Backwards compatibility """ - return self.create_invoice(from_date=from_date, to_date=to_date) + return self.create_invoice(from_date=from_date, to_date=to_date, posting_date=posting_date) def create_invoice( self, from_date: Optional[Union[str, datetime.date]] = None, to_date: Optional[Union[str, datetime.date]] = None, + posting_date: Optional[Union[str, datetime.date]] = None, ) -> Document: """ Creates a `Invoice`, submits it and returns it @@ -385,11 +387,13 @@ class Subscription(Document): invoice = frappe.new_doc(self.invoice_document_type) invoice.company = company invoice.set_posting_time = 1 - invoice.posting_date = ( - self.current_invoice_start - if self.generate_invoice_at == "Beginning of the current subscription period" - else self.current_invoice_end - ) + + if self.generate_invoice_at == "Beginning of the current subscription period": + invoice.posting_date = self.current_invoice_start + elif self.generate_invoice_at == "Days before the current subscription period": + invoice.posting_date = posting_date or self.current_invoice_start + else: + invoice.posting_date = self.current_invoice_end invoice.cost_center = self.cost_center @@ -413,6 +417,7 @@ class Subscription(Document): # Subscription is better suited for service items. I won't update `update_stock` # for that reason items_list = self.get_items_from_plans(self.plans, is_prorate()) + for item in items_list: item["cost_center"] = self.cost_center invoice.append("items", item) @@ -556,7 +561,7 @@ class Subscription(Document): if not self.is_current_invoice_generated( self.current_invoice_start, self.current_invoice_end ) and self.can_generate_new_invoice(posting_date): - self.generate_invoice() + self.generate_invoice(posting_date=posting_date) self.update_subscription_period(add_days(self.current_invoice_end, 1)) if self.cancel_at_period_end and ( diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index 008614e6d3f..fc9034b2ee5 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -114,14 +114,12 @@ def _get_party_details( set_account_and_due_date(party, account, party_type, company, posting_date, bill_date, doctype) ) party = party_details[party_type.lower()] - - if not ignore_permissions and not ( - frappe.has_permission(party_type, "read", party) - or frappe.has_permission(party_type, "select", party) - ): - frappe.throw(_("Not permitted for {0}").format(party), frappe.PermissionError) - party = frappe.get_doc(party_type, party) + + if not ignore_permissions: + ptype = "select" if frappe.only_has_select_perm(party_type) else "read" + frappe.has_permission(party_type, ptype, party, throw=True) + currency = party.get("default_currency") or currency or get_company_currency(company) party_address, shipping_address = set_address_details( @@ -637,9 +635,7 @@ def get_due_date_from_template(template_name, posting_date, bill_date): return due_date -def validate_due_date( - posting_date, due_date, party_type, party, company=None, bill_date=None, template_name=None -): +def validate_due_date(posting_date, due_date, bill_date=None, template_name=None): if getdate(due_date) < getdate(posting_date): frappe.throw(_("Due Date cannot be before Posting / Supplier Invoice Date")) else: diff --git a/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.js b/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.js index 5f78b779342..06fa9f3175d 100644 --- a/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.js +++ b/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.js @@ -25,11 +25,26 @@ frappe.query_reports["Asset Depreciations and Balances"] = { "default": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2], "reqd": 1 }, + { + "fieldname":"group_by", + "label": __("Group By"), + "fieldtype": "Select", + "options": ["Asset Category", "Asset"], + "default": "Asset Category", + }, { "fieldname":"asset_category", "label": __("Asset Category"), "fieldtype": "Link", - "options": "Asset Category" - } + "options": "Asset Category", + "depends_on": "eval: doc.group_by == 'Asset Category'", + }, + { + "fieldname":"asset", + "label": __("Asset"), + "fieldtype": "Link", + "options": "Asset", + "depends_on": "eval: doc.group_by == 'Asset'", + }, ] } diff --git a/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.py b/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.py index bdc8d8504f8..48da17ab625 100644 --- a/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.py +++ b/erpnext/accounts/report/asset_depreciations_and_balances/asset_depreciations_and_balances.py @@ -14,10 +14,17 @@ def execute(filters=None): def get_data(filters): + if filters.get("group_by") == "Asset Category": + return get_group_by_asset_category_data(filters) + elif filters.get("group_by") == "Asset": + return get_group_by_asset_data(filters) + + +def get_group_by_asset_category_data(filters): data = [] - asset_categories = get_asset_categories(filters) - assets = get_assets(filters) + asset_categories = get_asset_categories_for_grouped_by_category(filters) + assets = get_assets_for_grouped_by_category(filters) for asset_category in asset_categories: row = frappe._dict() @@ -38,6 +45,7 @@ def get_data(filters): if asset["asset_category"] == asset_category.get("asset_category", "") ) ) + row.accumulated_depreciation_as_on_to_date = ( flt(row.accumulated_depreciation_as_on_from_date) + flt(row.depreciation_amount_during_the_period) @@ -57,7 +65,7 @@ def get_data(filters): return data -def get_asset_categories(filters): +def get_asset_categories_for_grouped_by_category(filters): condition = "" if filters.get("asset_category"): condition += " and asset_category = %(asset_category)s" @@ -116,7 +124,105 @@ def get_asset_categories(filters): ) -def get_assets(filters): +def get_asset_details_for_grouped_by_category(filters): + condition = "" + if filters.get("asset"): + condition += " and name = %(asset)s" + return frappe.db.sql( + """ + SELECT name, + ifnull(sum(case when purchase_date < %(from_date)s then + case when ifnull(disposal_date, 0) = 0 or disposal_date >= %(from_date)s then + gross_purchase_amount + else + 0 + end + else + 0 + end), 0) as cost_as_on_from_date, + ifnull(sum(case when purchase_date >= %(from_date)s then + gross_purchase_amount + else + 0 + end), 0) as cost_of_new_purchase, + ifnull(sum(case when ifnull(disposal_date, 0) != 0 + and disposal_date >= %(from_date)s + and disposal_date <= %(to_date)s then + case when status = "Sold" then + gross_purchase_amount + else + 0 + end + else + 0 + end), 0) as cost_of_sold_asset, + ifnull(sum(case when ifnull(disposal_date, 0) != 0 + and disposal_date >= %(from_date)s + and disposal_date <= %(to_date)s then + case when status = "Scrapped" then + gross_purchase_amount + else + 0 + end + else + 0 + end), 0) as cost_of_scrapped_asset + from `tabAsset` + where docstatus=1 and company=%(company)s and purchase_date <= %(to_date)s {} + group by name + """.format( + condition + ), + { + "to_date": filters.to_date, + "from_date": filters.from_date, + "company": filters.company, + "asset": filters.get("asset"), + }, + as_dict=1, + ) + + +def get_group_by_asset_data(filters): + data = [] + + asset_details = get_asset_details_for_grouped_by_category(filters) + assets = get_assets_for_grouped_by_asset(filters) + + for asset_detail in asset_details: + row = frappe._dict() + # row.asset_category = asset_category + row.update(asset_detail) + + row.cost_as_on_to_date = ( + flt(row.cost_as_on_from_date) + + flt(row.cost_of_new_purchase) + - flt(row.cost_of_sold_asset) + - flt(row.cost_of_scrapped_asset) + ) + + row.update(next(asset for asset in assets if asset["asset"] == asset_detail.get("name", ""))) + + row.accumulated_depreciation_as_on_to_date = ( + flt(row.accumulated_depreciation_as_on_from_date) + + flt(row.depreciation_amount_during_the_period) + - flt(row.depreciation_eliminated_during_the_period) + ) + + row.net_asset_value_as_on_from_date = flt(row.cost_as_on_from_date) - flt( + row.accumulated_depreciation_as_on_from_date + ) + + row.net_asset_value_as_on_to_date = flt(row.cost_as_on_to_date) - flt( + row.accumulated_depreciation_as_on_to_date + ) + + data.append(row) + + return data + + +def get_assets_for_grouped_by_category(filters): condition = "" if filters.get("asset_category"): condition = " and a.asset_category = '{}'".format(filters.get("asset_category")) @@ -178,15 +284,93 @@ def get_assets(filters): ) +def get_assets_for_grouped_by_asset(filters): + condition = "" + if filters.get("asset"): + condition = " and a.name = '{}'".format(filters.get("asset")) + return frappe.db.sql( + """ + SELECT results.name as asset, + sum(results.accumulated_depreciation_as_on_from_date) as accumulated_depreciation_as_on_from_date, + sum(results.depreciation_eliminated_during_the_period) as depreciation_eliminated_during_the_period, + sum(results.depreciation_amount_during_the_period) as depreciation_amount_during_the_period + from (SELECT a.name as name, + ifnull(sum(case when gle.posting_date < %(from_date)s and (ifnull(a.disposal_date, 0) = 0 or a.disposal_date >= %(from_date)s) then + gle.debit + else + 0 + end), 0) as accumulated_depreciation_as_on_from_date, + ifnull(sum(case when ifnull(a.disposal_date, 0) != 0 and a.disposal_date >= %(from_date)s + and a.disposal_date <= %(to_date)s and gle.posting_date <= a.disposal_date then + gle.debit + else + 0 + end), 0) as depreciation_eliminated_during_the_period, + ifnull(sum(case when gle.posting_date >= %(from_date)s and gle.posting_date <= %(to_date)s + and (ifnull(a.disposal_date, 0) = 0 or gle.posting_date <= a.disposal_date) then + gle.debit + else + 0 + end), 0) as depreciation_amount_during_the_period + from `tabGL Entry` gle + join `tabAsset` a on + gle.against_voucher = a.name + join `tabAsset Category Account` aca on + aca.parent = a.asset_category and aca.company_name = %(company)s + join `tabCompany` company on + company.name = %(company)s + where a.docstatus=1 and a.company=%(company)s and a.purchase_date <= %(to_date)s and gle.debit != 0 and gle.is_cancelled = 0 and gle.account = ifnull(aca.depreciation_expense_account, company.depreciation_expense_account) {0} + group by a.name + union + SELECT a.name as name, + ifnull(sum(case when ifnull(a.disposal_date, 0) != 0 and (a.disposal_date < %(from_date)s or a.disposal_date > %(to_date)s) then + 0 + else + a.opening_accumulated_depreciation + end), 0) as accumulated_depreciation_as_on_from_date, + ifnull(sum(case when a.disposal_date >= %(from_date)s and a.disposal_date <= %(to_date)s then + a.opening_accumulated_depreciation + else + 0 + end), 0) as depreciation_eliminated_during_the_period, + 0 as depreciation_amount_during_the_period + from `tabAsset` a + where a.docstatus=1 and a.company=%(company)s and a.purchase_date <= %(to_date)s {0} + group by a.name) as results + group by results.name + """.format( + condition + ), + {"to_date": filters.to_date, "from_date": filters.from_date, "company": filters.company}, + as_dict=1, + ) + + def get_columns(filters): - return [ - { - "label": _("Asset Category"), - "fieldname": "asset_category", - "fieldtype": "Link", - "options": "Asset Category", - "width": 120, - }, + columns = [] + + if filters.get("group_by") == "Asset Category": + columns.append( + { + "label": _("Asset Category"), + "fieldname": "asset_category", + "fieldtype": "Link", + "options": "Asset Category", + "width": 120, + } + ) + elif filters.get("group_by") == "Asset": + columns.append( + { + "label": _("Asset"), + "fieldname": "asset", + "fieldtype": "Link", + "options": "Asset", + "width": 120, + } + ) + + columns += [ { "label": _("Cost as on") + " " + formatdate(filters.day_before_from_date), "fieldname": "cost_as_on_from_date", @@ -254,3 +438,5 @@ def get_columns(filters): "width": 200, }, ] + + return columns diff --git a/erpnext/accounts/report/balance_sheet/balance_sheet.py b/erpnext/accounts/report/balance_sheet/balance_sheet.py index b225aac7b56..5d6ca23a6b2 100644 --- a/erpnext/accounts/report/balance_sheet/balance_sheet.py +++ b/erpnext/accounts/report/balance_sheet/balance_sheet.py @@ -97,11 +97,11 @@ def execute(filters=None): chart = get_chart_data(filters, columns, asset, liability, equity) - report_summary = get_report_summary( + report_summary, primitive_summary = get_report_summary( period_list, asset, liability, equity, provisional_profit_loss, currency, filters ) - return columns, data, message, chart, report_summary + return columns, data, message, chart, report_summary, primitive_summary def get_provisional_profit_loss( @@ -217,7 +217,7 @@ def get_report_summary( "datatype": "Currency", "currency": currency, }, - ] + ], (net_asset - net_liability + net_equity) def get_chart_data(filters, columns, asset, liability, equity): diff --git a/erpnext/accounts/report/budget_variance_report/budget_variance_report.js b/erpnext/accounts/report/budget_variance_report/budget_variance_report.js index 15aa265b56a..9c356bf28ea 100644 --- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.js +++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.js @@ -2,7 +2,44 @@ // License: GNU General Public License v3. See license.txt frappe.query_reports["Budget Variance Report"] = { - "filters": [ + "filters": get_filters(), + "formatter": function (value, row, column, data, default_formatter) { + value = default_formatter(value, row, column, data); + + if (column.fieldname.includes(__("variance"))) { + + if (data[column.fieldname] < 0) { + value = "" + value + ""; + } + else if (data[column.fieldname] > 0) { + value = "" + value + ""; + } + } + + return value; + } +} +function get_filters() { + function get_dimensions() { + let result = []; + frappe.call({ + method: "erpnext.accounts.doctype.accounting_dimension.accounting_dimension.get_dimensions", + args: { + 'with_cost_center_and_project': true + }, + async: false, + callback: function(r) { + if(!r.exc) { + result = r.message[0].map(elem => elem.document_type); + } + } + }); + return result; + } + + let budget_against_options = get_dimensions(); + + let filters = [ { fieldname: "from_fiscal_year", label: __("From Fiscal Year"), @@ -44,9 +81,13 @@ frappe.query_reports["Budget Variance Report"] = { fieldname: "budget_against", label: __("Budget Against"), fieldtype: "Select", - options: ["Cost Center", "Project"], + options: budget_against_options, default: "Cost Center", reqd: 1, + get_data: function() { + console.log(this.options); + return ["Emacs", "Rocks"]; + }, on_change: function() { frappe.query_report.set_filter_value("budget_against_filter", []); frappe.query_report.refresh(); @@ -71,24 +112,8 @@ frappe.query_reports["Budget Variance Report"] = { fieldtype: "Check", default: 0, }, - ], - "formatter": function (value, row, column, data, default_formatter) { - value = default_formatter(value, row, column, data); + ] - if (column.fieldname.includes(__("variance"))) { - - if (data[column.fieldname] < 0) { - value = "" + value + ""; - } - else if (data[column.fieldname] > 0) { - value = "" + value + ""; - } - } - - return value; - } + return filters; } -erpnext.dimension_filters.forEach((dimension) => { - frappe.query_reports["Budget Variance Report"].filters[4].options.push(dimension["document_type"]); -}); 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 4765e3b318a..0464f99d200 100644 --- a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py +++ b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py @@ -3,7 +3,7 @@ import frappe -from frappe import _, scrub +from frappe import _, qb, scrub from frappe.utils import getdate, nowdate @@ -38,7 +38,6 @@ class PartyLedgerSummaryReport(object): """ Additional Columns for 'User Permission' based access control """ - from frappe import qb if self.filters.party_type == "Customer": self.territories = frappe._dict({}) @@ -365,13 +364,29 @@ class PartyLedgerSummaryReport(object): def get_party_adjustment_amounts(self): conditions = self.prepare_conditions() - income_or_expense = ( - "Expense Account" if self.filters.party_type == "Customer" else "Income Account" + account_type = "Expense Account" if self.filters.party_type == "Customer" else "Income Account" + income_or_expense_accounts = frappe.db.get_all( + "Account", filters={"account_type": account_type, "company": self.filters.company}, pluck="name" ) invoice_dr_or_cr = "debit" if self.filters.party_type == "Customer" else "credit" reverse_dr_or_cr = "credit" if self.filters.party_type == "Customer" else "debit" round_off_account = frappe.get_cached_value("Company", self.filters.company, "round_off_account") + gl = qb.DocType("GL Entry") + if not income_or_expense_accounts: + # prevent empty 'in' condition + income_or_expense_accounts.append("") + + accounts_query = ( + qb.from_(gl) + .select(gl.voucher_type, gl.voucher_no) + .where( + (gl.account.isin(income_or_expense_accounts)) + & (gl.posting_date.gte(self.filters.from_date)) + & (gl.posting_date.lte(self.filters.to_date)) + ) + ) + gl_entries = frappe.db.sql( """ select @@ -381,16 +396,15 @@ class PartyLedgerSummaryReport(object): where docstatus < 2 and is_cancelled = 0 and (voucher_type, voucher_no) in ( - select voucher_type, voucher_no from `tabGL Entry` gle, `tabAccount` acc - where acc.name = gle.account and acc.account_type = '{income_or_expense}' - and gle.posting_date between %(from_date)s and %(to_date)s and gle.docstatus < 2 + {accounts_query} ) and (voucher_type, voucher_no) in ( select voucher_type, voucher_no from `tabGL Entry` gle where gle.party_type=%(party_type)s and ifnull(party, '') != '' and gle.posting_date between %(from_date)s and %(to_date)s and gle.docstatus < 2 {conditions} ) - """.format( - conditions=conditions, income_or_expense=income_or_expense + """.format( + accounts_query=accounts_query, + conditions=conditions, ), self.filters, as_dict=True, @@ -414,7 +428,7 @@ class PartyLedgerSummaryReport(object): elif gle.party: parties.setdefault(gle.party, 0) parties[gle.party] += gle.get(reverse_dr_or_cr) - gle.get(invoice_dr_or_cr) - elif frappe.get_cached_value("Account", gle.account, "account_type") == income_or_expense: + elif frappe.get_cached_value("Account", gle.account, "account_type") == account_type: accounts.setdefault(gle.account, 0) accounts[gle.account] += gle.get(invoice_dr_or_cr) - gle.get(reverse_dr_or_cr) else: diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py index 7355c4b8a16..004a9299ea2 100644 --- a/erpnext/accounts/report/financial_statements.py +++ b/erpnext/accounts/report/financial_statements.py @@ -211,7 +211,13 @@ def get_data( ignore_accumulated_values_for_fy, ) accumulate_values_into_parents(accounts, accounts_by_name, period_list) - out = prepare_data(accounts, balance_must_be, period_list, company_currency) + out = prepare_data( + accounts, + balance_must_be, + period_list, + company_currency, + accumulated_values=filters.accumulated_values, + ) out = filter_out_zero_value_rows(out, parent_children_map) if out and total: @@ -270,7 +276,7 @@ def accumulate_values_into_parents(accounts, accounts_by_name, period_list): ) + d.get("opening_balance", 0.0) -def prepare_data(accounts, balance_must_be, period_list, company_currency): +def prepare_data(accounts, balance_must_be, period_list, company_currency, accumulated_values): data = [] year_start_date = period_list[0]["year_start_date"].strftime("%Y-%m-%d") year_end_date = period_list[-1]["year_end_date"].strftime("%Y-%m-%d") @@ -310,8 +316,14 @@ def prepare_data(accounts, balance_must_be, period_list, company_currency): has_value = True total += flt(row[period.key]) - row["has_value"] = has_value - row["total"] = total + if accumulated_values: + # when 'accumulated_values' is enabled, periods have running balance. + # so, last period will have the net amount. + row["has_value"] = has_value + row["total"] = flt(d.get(period_list[-1].key, 0.0), 3) + else: + row["has_value"] = has_value + row["total"] = total data.append(row) return data diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js index 4cb443cf920..79b5e4d9ec8 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.js +++ b/erpnext/accounts/report/general_ledger/general_ledger.js @@ -52,6 +52,11 @@ frappe.query_reports["General Ledger"] = { frappe.query_report.set_filter_value('group_by', "Group by Voucher (Consolidated)"); } }, + { + "fieldname":"against_voucher_no", + "label": __("Against Voucher No"), + "fieldtype": "Data", + }, { "fieldtype": "Break", }, diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py index b45ff60f1be..6636b8e042d 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.py +++ b/erpnext/accounts/report/general_ledger/general_ledger.py @@ -200,7 +200,7 @@ def get_gl_entries(filters, accounting_dimensions): """ select name as gl_entry, posting_date, account, party_type, party, - voucher_type, voucher_no, {dimension_fields} + voucher_type, voucher_subtype, voucher_no, {dimension_fields} cost_center, project, {transaction_currency_fields} against_voucher_type, against_voucher, account_currency, against_link, against, is_opening, creation {select_fields} @@ -238,6 +238,9 @@ def get_conditions(filters): if filters.get("voucher_no"): conditions.append("voucher_no=%(voucher_no)s") + if filters.get("against_voucher_no"): + conditions.append("against_voucher=%(against_voucher_no)s") + if filters.get("voucher_no_not_in"): conditions.append("voucher_no not in %(voucher_no_not_in)s") @@ -609,6 +612,12 @@ def get_columns(filters): columns += [ {"label": _("Voucher Type"), "fieldname": "voucher_type", "width": 120}, + { + "label": _("Voucher Subtype"), + "fieldname": "voucher_subtype", + "fieldtype": "Data", + "width": 180, + }, { "label": _("Voucher No"), "fieldname": "voucher_no", diff --git a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py index 66353358a06..12a855457ed 100644 --- a/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py +++ b/erpnext/accounts/report/profit_and_loss_statement/profit_and_loss_statement.py @@ -66,11 +66,11 @@ def execute(filters=None): currency = filters.presentation_currency or frappe.get_cached_value( "Company", filters.company, "default_currency" ) - report_summary = get_report_summary( + report_summary, primitive_summary = get_report_summary( period_list, filters.periodicity, income, expense, net_profit_loss, currency, filters ) - return columns, data, None, chart, report_summary + return columns, data, None, chart, report_summary, primitive_summary def get_report_summary( @@ -82,14 +82,25 @@ def get_report_summary( if filters.get("accumulated_in_group_company"): period_list = get_filtered_list_for_consolidated_report(filters, period_list) - for period in period_list: - key = period if consolidated else period.key + if filters.accumulated_values: + # when 'accumulated_values' is enabled, periods have running balance. + # so, last period will have the net amount. + key = period_list[-1].key if income: - net_income += income[-2].get(key) + net_income = income[-2].get(key) if expense: - net_expense += expense[-2].get(key) + net_expense = expense[-2].get(key) if net_profit_loss: - net_profit += net_profit_loss.get(key) + net_profit = net_profit_loss.get(key) + else: + for period in period_list: + key = period if consolidated else period.key + if income: + net_income += income[-2].get(key) + if expense: + net_expense += expense[-2].get(key) + if net_profit_loss: + net_profit += net_profit_loss.get(key) if len(period_list) == 1 and periodicity == "Yearly": profit_label = _("Profit This Year") @@ -112,7 +123,7 @@ def get_report_summary( "datatype": "Currency", "currency": currency, }, - ] + ], net_profit def get_net_profit_loss(income, expense, period_list, company, currency=None, consolidated=False): diff --git a/erpnext/accounts/report/profit_and_loss_statement/test_profit_and_loss_statement.py b/erpnext/accounts/report/profit_and_loss_statement/test_profit_and_loss_statement.py new file mode 100644 index 00000000000..b4423abc7ff --- /dev/null +++ b/erpnext/accounts/report/profit_and_loss_statement/test_profit_and_loss_statement.py @@ -0,0 +1,94 @@ +# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors +# MIT License. See license.txt + +import frappe +from frappe.tests.utils import FrappeTestCase +from frappe.utils import add_days, getdate, today + +from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice +from erpnext.accounts.report.financial_statements import get_period_list +from erpnext.accounts.report.profit_and_loss_statement.profit_and_loss_statement import execute +from erpnext.accounts.test.accounts_mixin import AccountsTestMixin + + +class TestProfitAndLossStatement(AccountsTestMixin, FrappeTestCase): + def setUp(self): + self.create_company() + self.create_customer() + self.create_item() + + def tearDown(self): + frappe.db.rollback() + + def create_sales_invoice(self, qty=1, rate=150, no_payment_schedule=False, do_not_submit=False): + frappe.set_user("Administrator") + si = create_sales_invoice( + item=self.item, + company=self.company, + customer=self.customer, + debit_to=self.debit_to, + posting_date=today(), + parent_cost_center=self.cost_center, + cost_center=self.cost_center, + rate=rate, + price_list_rate=rate, + qty=qty, + do_not_save=1, + ) + si = si.save() + if not do_not_submit: + si = si.submit() + return si + + def get_fiscal_year(self): + active_fy = frappe.db.get_all( + "Fiscal Year", + filters={"disabled": 0, "year_start_date": ("<=", today()), "year_end_date": (">=", today())}, + )[0] + return frappe.get_doc("Fiscal Year", active_fy.name) + + def get_report_filters(self): + fy = self.get_fiscal_year() + return frappe._dict( + company=self.company, + from_fiscal_year=fy.name, + to_fiscal_year=fy.name, + period_start_date=fy.year_start_date, + period_end_date=fy.year_end_date, + filter_based_on="Fiscal Year", + periodicity="Monthly", + accumulated_vallues=True, + ) + + def test_profit_and_loss_output_and_summary(self): + si = self.create_sales_invoice(qty=1, rate=150) + + filters = self.get_report_filters() + period_list = get_period_list( + filters.from_fiscal_year, + filters.to_fiscal_year, + filters.period_start_date, + filters.period_end_date, + filters.filter_based_on, + filters.periodicity, + company=filters.company, + ) + + result = execute(filters)[1] + current_period = [x for x in period_list if x.from_date <= getdate() and x.to_date >= getdate()][ + 0 + ] + current_period_key = current_period.key + without_current_period = [x for x in period_list if x.key != current_period.key] + # all period except current period(whence invoice was posted), should be '0' + for acc in result: + if acc: + with self.subTest(acc=acc): + for period in without_current_period: + self.assertEqual(acc[period.key], 0) + + for acc in result: + if acc: + with self.subTest(current_period_key=current_period_key): + self.assertEqual(acc[current_period_key], 150) + self.assertEqual(acc["total"], 150) diff --git a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js index b6bbd979ed9..5dd3617a926 100644 --- a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js +++ b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js @@ -117,8 +117,3 @@ frappe.query_reports["Profitability Analysis"] = { "parent_field": "parent_account", "initial_depth": 3 } - -erpnext.dimension_filters.forEach((dimension) => { - frappe.query_reports["Profitability Analysis"].filters[1].options.push(dimension["document_type"]); -}); - diff --git a/erpnext/accounts/report/utils.py b/erpnext/accounts/report/utils.py index 9f96449ba7c..0912c7270de 100644 --- a/erpnext/accounts/report/utils.py +++ b/erpnext/accounts/report/utils.py @@ -251,6 +251,7 @@ def get_journal_entries(filters, args): ) .where( (je.voucher_type == "Journal Entry") + & (je.docstatus == 1) & (journal_account.party == filters.get(args.party)) & (journal_account.account.isin(args.party_account)) ) @@ -281,7 +282,9 @@ def get_payment_entries(filters, args): pe.cost_center, ) .where( - (pe.party == filters.get(args.party)) & (pe[args.account_fieldname].isin(args.party_account)) + (pe.docstatus == 1) + & (pe.party == filters.get(args.party)) + & (pe[args.account_fieldname].isin(args.party_account)) ) .orderby(pe.posting_date, pe.name, order=Order.desc) ) diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index adec0ab4e0a..f9208f051ed 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -1116,12 +1116,16 @@ def get_companies(): @frappe.whitelist() -def get_children(doctype, parent, company, is_root=False): +def get_children(doctype, parent, company, is_root=False, include_disabled=False): + if isinstance(include_disabled, str): + include_disabled = frappe.json.loads(include_disabled) from erpnext.accounts.report.financial_statements import sort_accounts parent_fieldname = "parent_" + doctype.lower().replace(" ", "_") fields = ["name as value", "is_group as expandable"] filters = [["docstatus", "<", 2]] + if frappe.db.has_column(doctype, "disabled") and not include_disabled: + filters.append(["disabled", "=", False]) filters.append(['ifnull(`{0}`,"")'.format(parent_fieldname), "=", "" if is_root else parent]) diff --git a/erpnext/accounts/workspace/accounting/accounting.json b/erpnext/accounts/workspace/accounting/accounting.json index dfdae1dec69..f4aced2f9d7 100644 --- a/erpnext/accounts/workspace/accounting/accounting.json +++ b/erpnext/accounts/workspace/accounting/accounting.json @@ -5,7 +5,7 @@ "label": "Profit and Loss" } ], - "content": "[{\"id\":\"MmUf9abwxg\",\"type\":\"onboarding\",\"data\":{\"onboarding_name\":\"Accounts\",\"col\":12}},{\"id\":\"VVvJ1lUcfc\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Total Outgoing Bills\",\"col\":3}},{\"id\":\"Vlj2FZtlHV\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Total Incoming Bills\",\"col\":3}},{\"id\":\"VVVjQVAhPf\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Total Incoming Payment\",\"col\":3}},{\"id\":\"DySNdlysIW\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Total Outgoing Payment\",\"col\":3}},{\"id\":\"i0EtSjDAXq\",\"type\":\"chart\",\"data\":{\"chart_name\":\"Profit and Loss\",\"col\":12}},{\"id\":\"X78jcbq1u3\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"vikWSkNm6_\",\"type\":\"header\",\"data\":{\"text\":\"Your Shortcuts\",\"col\":12}},{\"id\":\"pMywM0nhlj\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Chart of Accounts\",\"col\":3}},{\"id\":\"_pRdD6kqUG\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Sales Invoice\",\"col\":3}},{\"id\":\"G984SgVRJN\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Purchase Invoice\",\"col\":3}},{\"id\":\"1ArNvt9qhz\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Journal Entry\",\"col\":3}},{\"id\":\"F9f4I1viNr\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Payment Entry\",\"col\":3}},{\"id\":\"4IBBOIxfqW\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Accounts Receivable\",\"col\":3}},{\"id\":\"El2anpPaFY\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"General Ledger\",\"col\":3}},{\"id\":\"1nwcM9upJo\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Trial Balance\",\"col\":3}},{\"id\":\"OF9WOi1Ppc\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Dashboard\",\"col\":3}},{\"id\":\"iAwpe-Chra\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Learn Accounting\",\"col\":3}},{\"id\":\"B7-uxs8tkU\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"tHb3yxthkR\",\"type\":\"header\",\"data\":{\"text\":\"Reports & Masters\",\"col\":12}},{\"id\":\"DnNtsmxpty\",\"type\":\"card\",\"data\":{\"card_name\":\"Accounting Masters\",\"col\":4}},{\"id\":\"nKKr6fjgjb\",\"type\":\"card\",\"data\":{\"card_name\":\"General Ledger\",\"col\":4}},{\"id\":\"xOHTyD8b5l\",\"type\":\"card\",\"data\":{\"card_name\":\"Accounts Receivable\",\"col\":4}},{\"id\":\"_Cb7C8XdJJ\",\"type\":\"card\",\"data\":{\"card_name\":\"Accounts Payable\",\"col\":4}},{\"id\":\"p7NY6MHe2Y\",\"type\":\"card\",\"data\":{\"card_name\":\"Financial Statements\",\"col\":4}},{\"id\":\"KlqilF5R_V\",\"type\":\"card\",\"data\":{\"card_name\":\"Taxes\",\"col\":4}},{\"id\":\"jTUy8LB0uw\",\"type\":\"card\",\"data\":{\"card_name\":\"Cost Center and Budgeting\",\"col\":4}},{\"id\":\"Wn2lhs7WLn\",\"type\":\"card\",\"data\":{\"card_name\":\"Multi Currency\",\"col\":4}},{\"id\":\"PAQMqqNkBM\",\"type\":\"card\",\"data\":{\"card_name\":\"Bank Statement\",\"col\":4}},{\"id\":\"Q_hBCnSeJY\",\"type\":\"card\",\"data\":{\"card_name\":\"Reports\",\"col\":4}},{\"id\":\"3AK1Zf0oew\",\"type\":\"card\",\"data\":{\"card_name\":\"Profitability\",\"col\":4}},{\"id\":\"kxhoaiqdLq\",\"type\":\"card\",\"data\":{\"card_name\":\"Opening and Closing\",\"col\":4}},{\"id\":\"q0MAlU2j_Z\",\"type\":\"card\",\"data\":{\"card_name\":\"Subscription Management\",\"col\":4}},{\"id\":\"ptm7T6Hwu-\",\"type\":\"card\",\"data\":{\"card_name\":\"Share Management\",\"col\":4}},{\"id\":\"OX7lZHbiTr\",\"type\":\"card\",\"data\":{\"card_name\":\"Settings\",\"col\":4}}]", + "content": "[{\"id\":\"MmUf9abwxg\",\"type\":\"onboarding\",\"data\":{\"onboarding_name\":\"Accounts\",\"col\":12}},{\"id\":\"VVvJ1lUcfc\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Total Outgoing Bills\",\"col\":3}},{\"id\":\"Vlj2FZtlHV\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Total Incoming Bills\",\"col\":3}},{\"id\":\"VVVjQVAhPf\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Total Incoming Payment\",\"col\":3}},{\"id\":\"DySNdlysIW\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Total Outgoing Payment\",\"col\":3}},{\"id\":\"i0EtSjDAXq\",\"type\":\"chart\",\"data\":{\"chart_name\":\"Profit and Loss\",\"col\":12}},{\"id\":\"X78jcbq1u3\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"vikWSkNm6_\",\"type\":\"header\",\"data\":{\"text\":\"Your Shortcuts\",\"col\":12}},{\"id\":\"pMywM0nhlj\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Chart of Accounts\",\"col\":3}},{\"id\":\"_pRdD6kqUG\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Sales Invoice\",\"col\":3}},{\"id\":\"G984SgVRJN\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Purchase Invoice\",\"col\":3}},{\"id\":\"1ArNvt9qhz\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Journal Entry\",\"col\":3}},{\"id\":\"F9f4I1viNr\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Payment Entry\",\"col\":3}},{\"id\":\"4IBBOIxfqW\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Accounts Receivable\",\"col\":3}},{\"id\":\"El2anpPaFY\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"General Ledger\",\"col\":3}},{\"id\":\"1nwcM9upJo\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Trial Balance\",\"col\":3}},{\"id\":\"OF9WOi1Ppc\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Dashboard\",\"col\":3}},{\"id\":\"iAwpe-Chra\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Learn Accounting\",\"col\":3}},{\"id\":\"B7-uxs8tkU\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"tHb3yxthkR\",\"type\":\"header\",\"data\":{\"text\":\"Reports & Masters\",\"col\":12}},{\"id\":\"DnNtsmxpty\",\"type\":\"card\",\"data\":{\"card_name\":\"Accounting Masters\",\"col\":4}},{\"id\":\"nKKr6fjgjb\",\"type\":\"card\",\"data\":{\"card_name\":\"General Ledger\",\"col\":4}},{\"id\":\"xOHTyD8b5l\",\"type\":\"card\",\"data\":{\"card_name\":\"Accounts Receivable\",\"col\":4}},{\"id\":\"_Cb7C8XdJJ\",\"type\":\"card\",\"data\":{\"card_name\":\"Accounts Payable\",\"col\":4}},{\"id\":\"p7NY6MHe2Y\",\"type\":\"card\",\"data\":{\"card_name\":\"Financial Statements\",\"col\":4}},{\"id\":\"KlqilF5R_V\",\"type\":\"card\",\"data\":{\"card_name\":\"Taxes\",\"col\":4}},{\"id\":\"jTUy8LB0uw\",\"type\":\"card\",\"data\":{\"card_name\":\"Cost Center and Budgeting\",\"col\":4}},{\"id\":\"Wn2lhs7WLn\",\"type\":\"card\",\"data\":{\"card_name\":\"Multi Currency\",\"col\":4}},{\"id\":\"PAQMqqNkBM\",\"type\":\"card\",\"data\":{\"card_name\":\"Banking\",\"col\":4}},{\"id\":\"Q_hBCnSeJY\",\"type\":\"card\",\"data\":{\"card_name\":\"Reports\",\"col\":4}},{\"id\":\"3AK1Zf0oew\",\"type\":\"card\",\"data\":{\"card_name\":\"Profitability\",\"col\":4}},{\"id\":\"kxhoaiqdLq\",\"type\":\"card\",\"data\":{\"card_name\":\"Opening and Closing\",\"col\":4}},{\"id\":\"q0MAlU2j_Z\",\"type\":\"card\",\"data\":{\"card_name\":\"Subscription Management\",\"col\":4}},{\"id\":\"ptm7T6Hwu-\",\"type\":\"card\",\"data\":{\"card_name\":\"Share Management\",\"col\":4}},{\"id\":\"OX7lZHbiTr\",\"type\":\"card\",\"data\":{\"card_name\":\"Settings\",\"col\":4}}]", "creation": "2020-03-02 15:41:59.515192", "custom_blocks": [], "docstatus": 0, @@ -652,14 +652,6 @@ "onboard": 0, "type": "Link" }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Bank Statement", - "link_count": 0, - "onboard": 0, - "type": "Card Break" - }, { "dependencies": "", "hidden": 0, @@ -1059,9 +1051,83 @@ "link_type": "Report", "onboard": 0, "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Banking", + "link_count": 6, + "link_type": "DocType", + "onboard": 0, + "type": "Card Break" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Bank", + "link_count": 0, + "link_to": "Bank", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Bank Account", + "link_count": 0, + "link_to": "Bank Account", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Bank Clearance", + "link_count": 0, + "link_to": "Bank Clearance", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Bank Reconciliation Tool", + "link_count": 0, + "link_to": "Bank Reconciliation Tool", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "GL Entry", + "hidden": 0, + "is_query_report": 1, + "label": "Bank Reconciliation Statement", + "link_count": 0, + "link_to": "Bank Reconciliation Statement", + "link_type": "Report", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Plaid Settings", + "link_count": 0, + "link_to": "Plaid Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" } ], - "modified": "2023-08-10 17:41:14.059005", + "modified": "2024-01-02 15:21:09.895531", "modified_by": "Administrator", "module": "Accounts", "name": "Accounting", diff --git a/erpnext/assets/doctype/asset/asset.json b/erpnext/assets/doctype/asset/asset.json index 540a4f5549f..ac712d44316 100644 --- a/erpnext/assets/doctype/asset/asset.json +++ b/erpnext/assets/doctype/asset/asset.json @@ -35,6 +35,8 @@ "purchase_receipt", "purchase_invoice", "available_for_use_date", + "total_asset_cost", + "additional_asset_cost", "column_break_23", "gross_purchase_amount", "asset_quantity", @@ -529,6 +531,22 @@ "label": "Capitalized In", "options": "Asset Capitalization", "read_only": 1 + }, + { + "depends_on": "eval:doc.docstatus > 0", + "fieldname": "total_asset_cost", + "fieldtype": "Currency", + "label": "Total Asset Cost", + "options": "Company:company:default_currency", + "read_only": 1 + }, + { + "depends_on": "eval:doc.docstatus > 0", + "fieldname": "additional_asset_cost", + "fieldtype": "Currency", + "label": "Additional Asset Cost", + "options": "Company:company:default_currency", + "read_only": 1 } ], "idx": 72, @@ -572,7 +590,7 @@ "link_fieldname": "target_asset" } ], - "modified": "2023-11-20 20:57:37.010467", + "modified": "2023-12-21 16:46:20.732869", "modified_by": "Administrator", "module": "Assets", "name": "Asset", diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py index 3b3ed0ac756..dd341893916 100644 --- a/erpnext/assets/doctype/asset/asset.py +++ b/erpnext/assets/doctype/asset/asset.py @@ -50,6 +50,7 @@ class Asset(AccountsController): from erpnext.assets.doctype.asset_finance_book.asset_finance_book import AssetFinanceBook + additional_asset_cost: DF.Currency amended_from: DF.Link | None asset_category: DF.Link | None asset_name: DF.Data @@ -111,6 +112,7 @@ class Asset(AccountsController): "Decapitalized", ] supplier: DF.Link | None + total_asset_cost: DF.Currency total_number_of_depreciations: DF.Int value_after_depreciation: DF.Currency # end: auto-generated types @@ -144,6 +146,7 @@ class Asset(AccountsController): ).format(asset_depr_schedules_links) ) + self.total_asset_cost = self.gross_purchase_amount self.status = self.get_status() def on_submit(self): diff --git a/erpnext/assets/doctype/asset_activity/asset_activity.py b/erpnext/assets/doctype/asset_activity/asset_activity.py index a64cb1aba3d..7177223b4f6 100644 --- a/erpnext/assets/doctype/asset_activity/asset_activity.py +++ b/erpnext/assets/doctype/asset_activity/asset_activity.py @@ -3,6 +3,7 @@ import frappe from frappe.model.document import Document +from frappe.utils import now_datetime class AssetActivity(Document): @@ -30,5 +31,6 @@ def add_asset_activity(asset, subject): "asset": asset, "subject": subject, "user": frappe.session.user, + "date": now_datetime(), } ).insert(ignore_permissions=True, ignore_links=True) diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py index 31dd63d2f81..bb627d408c2 100644 --- a/erpnext/assets/doctype/asset_repair/asset_repair.py +++ b/erpnext/assets/doctype/asset_repair/asset_repair.py @@ -93,6 +93,10 @@ class AssetRepair(AccountsController): self.increase_asset_value() + if self.capitalize_repair_cost: + self.asset_doc.total_asset_cost += self.repair_cost + self.asset_doc.additional_asset_cost += self.repair_cost + if self.get("stock_consumption"): self.check_for_stock_items_and_warehouse() self.decrease_stock_quantity() @@ -128,6 +132,10 @@ class AssetRepair(AccountsController): self.decrease_asset_value() + if self.capitalize_repair_cost: + self.asset_doc.total_asset_cost -= self.repair_cost + self.asset_doc.additional_asset_cost -= self.repair_cost + if self.get("stock_consumption"): self.increase_stock_quantity() if self.get("capitalize_repair_cost"): diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index e57896ddbd2..fcdc87de1c1 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -452,6 +452,7 @@ class PurchaseOrder(BuyingController): self.update_requested_qty() self.update_ordered_qty() self.update_reserved_qty_for_subcontract() + self.update_subcontracting_order_status() self.notify_update() clear_doctype_notifications(self) @@ -630,6 +631,17 @@ class PurchaseOrder(BuyingController): if frappe.db.get_single_value("Buying Settings", "auto_create_subcontracting_order"): make_subcontracting_order(self.name, save=True, notify=True) + def update_subcontracting_order_status(self): + from erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order import ( + update_subcontracting_order_status as update_sco_status, + ) + + if self.is_subcontracted and not self.is_old_subcontracting_flow: + sco = frappe.db.get_value("Subcontracting Order", {"purchase_order": self.name, "docstatus": 1}) + + if sco: + update_sco_status(sco, "Closed" if self.status == "Closed" else None) + def item_last_purchase_rate(name, conversion_rate, item_code, conversion_factor=1.0): """get last purchase rate for an item""" diff --git a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json index 98c1b388c14..5a24cc2e92d 100644 --- a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json +++ b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json @@ -123,8 +123,7 @@ "oldfieldname": "item_code", "oldfieldtype": "Link", "options": "Item", - "reqd": 1, - "search_index": 1 + "reqd": 1 }, { "fieldname": "supplier_part_no", diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 21c1af34828..95003d209fd 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -129,6 +129,17 @@ class AccountsController(TransactionBase): if self.doctype in relevant_docs: self.set_payment_schedule() + def remove_bundle_for_non_stock_invoices(self): + has_sabb = False + if self.doctype in ("Sales Invoice", "Purchase Invoice") and not self.update_stock: + for item in self.get("items"): + if item.serial_and_batch_bundle: + item.serial_and_batch_bundle = None + has_sabb = True + + if has_sabb: + self.remove_serial_and_batch_bundle() + def ensure_supplier_is_not_blocked(self): is_supplier_payment = self.doctype == "Payment Entry" and self.party_type == "Supplier" is_buying_invoice = self.doctype in ["Purchase Invoice", "Purchase Order"] @@ -156,6 +167,9 @@ class AccountsController(TransactionBase): if self.get("_action") and self._action != "update_after_submit": self.set_missing_values(for_validate=True) + if self.get("_action") == "submit": + self.remove_bundle_for_non_stock_invoices() + self.ensure_supplier_is_not_blocked() self.validate_date_with_fiscal_year() @@ -225,6 +239,11 @@ class AccountsController(TransactionBase): apply_pricing_rule_on_transaction(self) self.set_total_in_words() + self.set_default_letter_head() + + def set_default_letter_head(self): + if hasattr(self, "letter_head") and not self.letter_head: + self.letter_head = frappe.db.get_value("Company", self.company, "default_letter_head") def init_internal_values(self): # init all the internal values as 0 on sa @@ -556,18 +575,12 @@ class AccountsController(TransactionBase): validate_due_date( self.posting_date, self.due_date, - "Customer", - self.customer, - self.company, self.payment_terms_template, ) elif self.doctype == "Purchase Invoice": validate_due_date( self.bill_date or self.posting_date, self.due_date, - "Supplier", - self.supplier, - self.company, self.bill_date, self.payment_terms_template, ) @@ -874,6 +887,7 @@ class AccountsController(TransactionBase): "project": self.get("project"), "post_net_value": args.get("post_net_value"), "voucher_detail_no": args.get("voucher_detail_no"), + "voucher_subtype": self.get_voucher_subtype(), } ) @@ -916,7 +930,7 @@ class AccountsController(TransactionBase): # Update details in transaction currency gl_dict.update( { - "transaction_currency": self.get("currency") or self.company_currency, + "transaction_currency": args.get("currency") or self.get("currency") or self.company_currency, "transaction_exchange_rate": self.get("conversion_rate", 1), "debit_in_transaction_currency": self.get_value_in_transaction_currency( account_currency, args, "debit" @@ -927,13 +941,38 @@ class AccountsController(TransactionBase): } ) + if not args.get("against_voucher_type") and self.get("against_voucher_type"): + gl_dict.update({"against_voucher_type": self.get("against_voucher_type")}) + + if not args.get("against_voucher") and self.get("against_voucher"): + gl_dict.update({"against_voucher": self.get("against_voucher")}) + return gl_dict + def get_voucher_subtype(self): + voucher_subtypes = { + "Journal Entry": "voucher_type", + "Payment Entry": "payment_type", + "Stock Entry": "stock_entry_type", + "Asset Capitalization": "entry_type", + } + if self.doctype in voucher_subtypes: + return self.get(voucher_subtypes[self.doctype]) + elif self.doctype == "Purchase Receipt" and self.is_return: + return "Purchase Return" + elif self.doctype == "Delivery Note" and self.is_return: + return "Sales Return" + elif (self.doctype == "Sales Invoice" and self.is_return) or self.doctype == "Purchase Invoice": + return "Credit Note" + elif (self.doctype == "Purchase Invoice" and self.is_return) or self.doctype == "Sales Invoice": + return "Debit Note" + return self.doctype + def get_value_in_transaction_currency(self, account_currency, args, field): - if account_currency == self.get("currency"): + if account_currency == args.get("currency") or self.get("currency"): return args.get(field + "_in_account_currency") else: - return flt(args.get(field, 0) / self.get("conversion_rate", 1)) + return flt(args.get(field, 0) / (args.get("conversion_rate") or self.get("conversion_rate", 1))) def validate_qty_is_not_zero(self): if self.doctype == "Purchase Receipt": @@ -2412,6 +2451,7 @@ def validate_taxes_and_charges(tax): def validate_account_head(idx, account, company, context=""): account_company = frappe.get_cached_value("Account", account, "company") + is_group = frappe.get_cached_value("Account", account, "is_group") if account_company != company: frappe.throw( @@ -2421,6 +2461,12 @@ def validate_account_head(idx, account, company, context=""): title=_("Invalid Account"), ) + if is_group: + frappe.throw( + _("Row {0}: Account {1} is a Group Account").format(idx, frappe.bold(account)), + title=_("Invalid Account"), + ) + def validate_cost_center(tax, doc): if not tax.cost_center: diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py index 63dca630c7f..2650753275c 100644 --- a/erpnext/controllers/queries.py +++ b/erpnext/controllers/queries.py @@ -896,3 +896,31 @@ def get_payment_terms_for_references(doctype, txt, searchfield, start, page_len, as_list=1, ) return terms + + +@frappe.whitelist() +@frappe.validate_and_sanitize_search_inputs +def get_filtered_child_rows(doctype, txt, searchfield, start, page_len, filters) -> list: + table = frappe.qb.DocType(doctype) + query = ( + frappe.qb.from_(table) + .select( + table.name, + Concat("#", table.idx, ", ", table.item_code), + ) + .orderby(table.idx) + .offset(start) + .limit(page_len) + ) + + if filters: + for field, value in filters.items(): + query = query.where(table[field] == value) + + if txt: + txt += "%" + query = query.where( + ((table.idx.like(txt.replace("#", ""))) | (table.item_code.like(txt))) | (table.name.like(txt)) + ) + + return query.run(as_dict=False) diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py index 81080f02665..e7bd2a7265c 100644 --- a/erpnext/controllers/sales_and_purchase_return.py +++ b/erpnext/controllers/sales_and_purchase_return.py @@ -562,16 +562,17 @@ def make_return_doc( if default_warehouse_for_sales_return: target_doc.warehouse = default_warehouse_for_sales_return - item_details = frappe.get_cached_value( - "Item", source_doc.item_code, ["has_batch_no", "has_serial_no"], as_dict=1 - ) + if source_doc.item_code: + item_details = frappe.get_cached_value( + "Item", source_doc.item_code, ["has_batch_no", "has_serial_no"], as_dict=1 + ) - if not item_details.has_batch_no and not item_details.has_serial_no: - return + if not item_details.has_batch_no and not item_details.has_serial_no: + return - for qty_field in ["stock_qty", "rejected_qty"]: - if target_doc.get(qty_field): - update_serial_batch_no(source_doc, target_doc, source_parent, item_details, qty_field) + for qty_field in ["stock_qty", "rejected_qty"]: + if target_doc.get(qty_field): + update_serial_batch_no(source_doc, target_doc, source_parent, item_details, qty_field) def update_terms(source_doc, target_doc, source_parent): target_doc.payment_amount = -source_doc.payment_amount diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py index 4489d601316..22b0d08c92a 100644 --- a/erpnext/controllers/selling_controller.py +++ b/erpnext/controllers/selling_controller.py @@ -432,13 +432,18 @@ class SellingController(StockController): items = self.get("items") + (self.get("packed_items") or []) for d in items: + if not frappe.get_cached_value("Item", d.item_code, "is_stock_item"): + continue + if not self.get("return_against") or ( get_valuation_method(d.item_code) == "Moving Average" and self.get("is_return") ): # Get incoming rate based on original item cost based on valuation method qty = flt(d.get("stock_qty") or d.get("actual_qty")) - if not d.incoming_rate: + if not d.incoming_rate or ( + get_valuation_method(d.item_code) == "Moving Average" and self.get("is_return") + ): d.incoming_rate = get_incoming_rate( { "item_code": d.item_code, diff --git a/erpnext/erpnext_integrations/workspace/erpnext_integrations/erpnext_integrations.json b/erpnext/erpnext_integrations/workspace/erpnext_integrations/erpnext_integrations.json deleted file mode 100644 index dfef223c432..00000000000 --- a/erpnext/erpnext_integrations/workspace/erpnext_integrations/erpnext_integrations.json +++ /dev/null @@ -1,228 +0,0 @@ -{ - "charts": [], - "content": "[{\"id\":\"e88ADOJ7WC\",\"type\":\"header\",\"data\":{\"text\":\"Integrations\",\"col\":12}},{\"id\":\"pZEYOOCdB0\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Browse Apps\",\"col\":3}},{\"id\":\"St7AHbhVOr\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"nu4oSjH5Rd\",\"type\":\"card\",\"data\":{\"card_name\":\"Authentication\",\"col\":4}},{\"id\":\"G0tyx9WOfm\",\"type\":\"card\",\"data\":{\"card_name\":\"Backup\",\"col\":4}},{\"id\":\"nG8cdkpzoc\",\"type\":\"card\",\"data\":{\"card_name\":\"Google Services\",\"col\":4}},{\"id\":\"4hwuQn6E95\",\"type\":\"card\",\"data\":{\"card_name\":\"Communication Channels\",\"col\":4}},{\"id\":\"sEGAzTJRmq\",\"type\":\"card\",\"data\":{\"card_name\":\"Payments\",\"col\":4}}]", - "creation": "2020-08-20 19:30:48.138801", - "custom_blocks": [], - "docstatus": 0, - "doctype": "Workspace", - "for_user": "", - "hide_custom": 0, - "icon": "integration", - "idx": 0, - "is_hidden": 0, - "label": "ERPNext Integrations", - "links": [ - { - "hidden": 0, - "is_query_report": 0, - "label": "Backup", - "link_count": 3, - "onboard": 0, - "type": "Card Break" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Dropbox Settings", - "link_count": 0, - "link_to": "Dropbox Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "S3 Backup Settings", - "link_count": 0, - "link_to": "S3 Backup Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Google Drive", - "link_count": 0, - "link_to": "Google Drive", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Authentication", - "link_count": 4, - "onboard": 0, - "type": "Card Break" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Social Login", - "link_count": 0, - "link_to": "Social Login Key", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "LDAP Settings", - "link_count": 0, - "link_to": "LDAP Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "OAuth Client", - "link_count": 0, - "link_to": "OAuth Client", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "OAuth Provider Settings", - "link_count": 0, - "link_to": "OAuth Provider Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Communication Channels", - "link_count": 3, - "onboard": 0, - "type": "Card Break" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Webhook", - "link_count": 0, - "link_to": "Webhook", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "SMS Settings", - "link_count": 0, - "link_to": "SMS Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Slack Webhook URL", - "link_count": 0, - "link_to": "Slack Webhook URL", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Google Services", - "link_count": 4, - "onboard": 0, - "type": "Card Break" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Google Settings", - "link_count": 0, - "link_to": "Google Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Google Contacts", - "link_count": 0, - "link_to": "Google Contacts", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Google Calendar", - "link_count": 0, - "link_to": "Google Calendar", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Google Drive", - "link_count": 0, - "link_to": "Google Drive", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Payments", - "link_count": 3, - "onboard": 0, - "type": "Card Break" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Plaid Settings", - "link_count": 0, - "link_to": "Plaid Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - } - ], - "modified": "2023-10-31 19:57:32.748726", - "modified_by": "Administrator", - "module": "ERPNext Integrations", - "name": "ERPNext Integrations", - "number_cards": [], - "owner": "Administrator", - "parent_page": "", - "public": 1, - "quick_lists": [], - "restrict_to_domain": "", - "roles": [], - "sequence_id": 21.0, - "shortcuts": [ - { - "color": "Grey", - "doc_view": "List", - "label": "Browse Apps", - "type": "URL", - "url": "https://frappecloud.com/marketplace" - } - ], - "title": "ERPNext Integrations" -} \ No newline at end of file diff --git a/erpnext/hooks.py b/erpnext/hooks.py index f6b6802d581..0f80d5ee88e 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -37,6 +37,7 @@ welcome_email = "erpnext.setup.utils.welcome_email" # setup wizard setup_wizard_requires = "assets/erpnext/js/setup_wizard.js" setup_wizard_stages = "erpnext.setup.setup_wizard.setup_wizard.get_setup_stages" +setup_wizard_complete = "erpnext.setup.setup_wizard.setup_wizard.setup_demo" setup_wizard_test = "erpnext.setup.setup_wizard.test_setup_wizard.run_setup_wizard_test" before_install = [ @@ -257,11 +258,6 @@ standard_portal_menu_items = [ {"title": "Appointment Booking", "route": "/book_appointment"}, ] -default_roles = [ - {"role": "Customer", "doctype": "Contact", "email_field": "email_id"}, - {"role": "Supplier", "doctype": "Contact", "email_field": "email_id"}, -] - sounds = [ {"name": "incoming-call", "src": "/assets/erpnext/sounds/incoming-call.mp3", "volume": 0.2}, {"name": "call-disconnect", "src": "/assets/erpnext/sounds/call-disconnect.mp3", "volume": 0.2}, diff --git a/erpnext/manufacturing/doctype/bom/bom.json b/erpnext/manufacturing/doctype/bom/bom.json index e8d35428353..50838736816 100644 --- a/erpnext/manufacturing/doctype/bom/bom.json +++ b/erpnext/manufacturing/doctype/bom/bom.json @@ -218,6 +218,7 @@ "options": "\nWork Order\nJob Card" }, { + "default": "1", "fieldname": "conversion_rate", "fieldtype": "Float", "label": "Conversion Rate", @@ -636,7 +637,7 @@ "image_field": "image", "is_submittable": 1, "links": [], - "modified": "2023-08-07 11:38:08.152294", + "modified": "2023-12-26 19:34:08.159312", "modified_by": "Administrator", "module": "Manufacturing", "name": "BOM", diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py index 762747645bc..f034ed2b1a3 100644 --- a/erpnext/manufacturing/doctype/bom/bom.py +++ b/erpnext/manufacturing/doctype/bom/bom.py @@ -744,6 +744,9 @@ class BOM(WebsiteGenerator): base_total_rm_cost = 0 for d in self.get("items"): + if not d.is_stock_item and self.rm_cost_as_per == "Valuation Rate": + continue + old_rate = d.rate if self.rm_cost_as_per != "Manual": d.rate = self.get_rm_rate( @@ -1488,3 +1491,47 @@ def make_variant_bom(source_name, bom_no, item, variant_items, target_doc=None): ) return doc + + +def get_op_cost_from_sub_assemblies(bom_no, op_cost=0): + # Get operating cost from sub-assemblies + + bom_items = frappe.get_all( + "BOM Item", filters={"parent": bom_no, "docstatus": 1}, fields=["bom_no"], order_by="idx asc" + ) + + for row in bom_items: + if not row.bom_no: + continue + + if cost := frappe.get_cached_value("BOM", row.bom_no, "operating_cost_per_bom_quantity"): + op_cost += flt(cost) + get_op_cost_from_sub_assemblies(row.bom_no, op_cost) + + return op_cost + + +def get_scrap_items_from_sub_assemblies(bom_no, company, qty, scrap_items=None): + if not scrap_items: + scrap_items = {} + + bom_items = frappe.get_all( + "BOM Item", + filters={"parent": bom_no, "docstatus": 1}, + fields=["bom_no", "qty"], + order_by="idx asc", + ) + + for row in bom_items: + if not row.bom_no: + continue + + qty = flt(row.qty) * flt(qty) + items = get_bom_items_as_dict( + row.bom_no, company, qty=qty, fetch_exploded=0, fetch_scrap_items=1 + ) + scrap_items.update(items) + + get_scrap_items_from_sub_assemblies(row.bom_no, company, qty, scrap_items) + + return scrap_items diff --git a/erpnext/manufacturing/doctype/bom/test_bom.py b/erpnext/manufacturing/doctype/bom/test_bom.py index 051b475bcc3..2debf9191ef 100644 --- a/erpnext/manufacturing/doctype/bom/test_bom.py +++ b/erpnext/manufacturing/doctype/bom/test_bom.py @@ -698,6 +698,35 @@ class TestBOM(FrappeTestCase): bom.update_cost() self.assertFalse(bom.flags.cost_updated) + def test_bom_with_service_item_cost(self): + from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry + + rm_item = make_item(properties={"is_stock_item": 1, "valuation_rate": 1000.0}).name + + service_item = make_item(properties={"is_stock_item": 0}).name + + fg_item = make_item(properties={"is_stock_item": 1}).name + + from erpnext.manufacturing.doctype.production_plan.test_production_plan import make_bom + + bom = make_bom(item=fg_item, raw_materials=[rm_item, service_item], do_not_save=True) + bom.rm_cost_as_per = "Valuation Rate" + + for row in bom.items: + if row.item_code == service_item: + row.rate = 566.00 + else: + row.rate = 800.00 + + bom.save() + + for row in bom.items: + if row.item_code == service_item: + self.assertEqual(row.is_stock_item, 0) + self.assertEqual(row.rate, 566.00) + else: + self.assertEqual(row.is_stock_item, 1) + def test_do_not_include_manufacturing_and_fixed_items(self): from erpnext.manufacturing.doctype.bom.bom import item_query diff --git a/erpnext/manufacturing/doctype/bom_creator/bom_creator.py b/erpnext/manufacturing/doctype/bom_creator/bom_creator.py index bd010d9f9a6..1709a1f71af 100644 --- a/erpnext/manufacturing/doctype/bom_creator/bom_creator.py +++ b/erpnext/manufacturing/doctype/bom_creator/bom_creator.py @@ -251,7 +251,7 @@ class BOMCreator(Document): frappe.msgprint(_("BOMs created successfully")) except Exception: - traceback = frappe.get_traceback() + traceback = frappe.get_traceback(with_context=True) self.db_set( { "status": "Failed", diff --git a/erpnext/manufacturing/doctype/bom_explosion_item/bom_explosion_item.json b/erpnext/manufacturing/doctype/bom_explosion_item/bom_explosion_item.json index c75ac32cd12..27ecd57b873 100644 --- a/erpnext/manufacturing/doctype/bom_explosion_item/bom_explosion_item.json +++ b/erpnext/manufacturing/doctype/bom_explosion_item/bom_explosion_item.json @@ -37,7 +37,8 @@ "oldfieldname": "item_code", "oldfieldtype": "Link", "options": "Item", - "read_only": 1 + "read_only": 1, + "search_index": 1 }, { "fieldname": "item_name", @@ -170,7 +171,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-11-14 18:35:40.856895", + "modified": "2024-01-02 13:49:36.211586", "modified_by": "Administrator", "module": "Manufacturing", "name": "BOM Explosion Item", diff --git a/erpnext/manufacturing/doctype/bom_item/bom_item.json b/erpnext/manufacturing/doctype/bom_item/bom_item.json index cb58af1f29a..dfd66120984 100644 --- a/erpnext/manufacturing/doctype/bom_item/bom_item.json +++ b/erpnext/manufacturing/doctype/bom_item/bom_item.json @@ -14,6 +14,7 @@ "bom_no", "source_warehouse", "allow_alternative_item", + "is_stock_item", "section_break_5", "description", "col_break1", @@ -185,7 +186,7 @@ "in_list_view": 1, "label": "Rate", "options": "currency", - "read_only": 1, + "read_only_depends_on": "eval:doc.is_stock_item == 1", "reqd": 1 }, { @@ -284,13 +285,21 @@ "fieldname": "do_not_explode", "fieldtype": "Check", "label": "Do Not Explode" + }, + { + "default": "0", + "fetch_from": "item_code.is_stock_item", + "fieldname": "is_stock_item", + "fieldtype": "Check", + "label": "Is Stock Item", + "read_only": 1 } ], "idx": 1, "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-11-14 18:35:51.378513", + "modified": "2023-12-20 16:21:55.477883", "modified_by": "Administrator", "module": "Manufacturing", "name": "BOM Item", diff --git a/erpnext/manufacturing/doctype/job_card/job_card.py b/erpnext/manufacturing/doctype/job_card/job_card.py index d696cc4082f..23650b68736 100644 --- a/erpnext/manufacturing/doctype/job_card/job_card.py +++ b/erpnext/manufacturing/doctype/job_card/job_card.py @@ -273,35 +273,39 @@ class JobCard(Document): def has_overlap(self, production_capacity, time_logs): overlap = False - if production_capacity == 1 and len(time_logs) > 0: + if production_capacity == 1 and len(time_logs) >= 1: return True + if not len(time_logs): + return False - # Check overlap exists or not between the overlapping time logs with the current Job Card - for row in time_logs: - count = 1 - for next_row in time_logs: - if row.name == next_row.name: - continue - - if ( - ( - get_datetime(next_row.from_time) >= get_datetime(row.from_time) - and get_datetime(next_row.from_time) <= get_datetime(row.to_time) - ) - or ( - get_datetime(next_row.to_time) >= get_datetime(row.from_time) - and get_datetime(next_row.to_time) <= get_datetime(row.to_time) - ) - or ( - get_datetime(next_row.from_time) <= get_datetime(row.from_time) - and get_datetime(next_row.to_time) >= get_datetime(row.to_time) - ) - ): - count += 1 - - if count > production_capacity: - return True - + # sorting overlapping job cards as per from_time + time_logs = sorted(time_logs, key=lambda x: x.get("from_time")) + # alloted_capacity has key number starting from 1. Key number will increment by 1 if non sequential job card found + # if key number reaches/crosses to production_capacity means capacity is full and overlap error generated + # this will store last to_time of sequential job cards + alloted_capacity = {1: time_logs[0]["to_time"]} + # flag for sequential Job card found + sequential_job_card_found = False + for i in range(1, len(time_logs)): + # scanning for all Existing keys + for key in alloted_capacity.keys(): + # if current Job Card from time is greater than last to_time in that key means these job card are sequential + if alloted_capacity[key] <= time_logs[i]["from_time"]: + # So update key's value with last to_time + alloted_capacity[key] = time_logs[i]["to_time"] + # flag is true as we get sequential Job Card for that key + sequential_job_card_found = True + # Immediately break so that job card to time is not added with any other key except this + break + # if sequential job card not found above means it is overlapping so increment key number to alloted_capacity + if not sequential_job_card_found: + # increment key number + key = key + 1 + # for that key last to time is assigned. + alloted_capacity[key] = time_logs[i]["to_time"] + if len(alloted_capacity) >= production_capacity: + # if number of keys greater or equal to production caoacity means full capacity is utilized and we should throw overlap error + return True return overlap def get_time_logs(self, args, doctype, check_next_available_slot=False): diff --git a/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json b/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json index 01647d56c91..d3ad51f7236 100644 --- a/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json +++ b/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json @@ -31,6 +31,7 @@ "job_card_excess_transfer", "other_settings_section", "update_bom_costs_automatically", + "set_op_cost_and_scrape_from_sub_assemblies", "column_break_23", "make_serial_no_batch_from_work_order" ], @@ -194,13 +195,20 @@ "fieldname": "job_card_excess_transfer", "fieldtype": "Check", "label": "Allow Excess Material Transfer" + }, + { + "default": "0", + "description": "In the case of 'Use Multi-Level BOM' in a work order, if the user wishes to add sub-assembly costs to Finished Goods items without using a job card as well the scrap items, then this option needs to be enable.", + "fieldname": "set_op_cost_and_scrape_from_sub_assemblies", + "fieldtype": "Check", + "label": "Set Operating Cost / Scrape Items From Sub-assemblies" } ], "icon": "icon-wrench", "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2021-09-13 22:09:09.401559", + "modified": "2023-12-28 16:37:44.874096", "modified_by": "Administrator", "module": "Manufacturing", "name": "Manufacturing Settings", @@ -216,5 +224,6 @@ ], "sort_field": "modified", "sort_order": "DESC", + "states": [], "track_changes": 1 } \ No newline at end of file diff --git a/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.py b/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.py index bfc8f4e9150..463ba9fe4bf 100644 --- a/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.py +++ b/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.py @@ -32,6 +32,7 @@ class ManufacturingSettings(Document): mins_between_operations: DF.Int overproduction_percentage_for_sales_order: DF.Percent overproduction_percentage_for_work_order: DF.Percent + set_op_cost_and_scrape_from_sub_assemblies: DF.Check update_bom_costs_automatically: DF.Check # end: auto-generated types diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.js b/erpnext/manufacturing/doctype/production_plan/production_plan.js index dd102b0fae0..cd92263543b 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.js +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.js @@ -305,6 +305,8 @@ frappe.ui.form.on('Production Plan', { frappe.throw(__("Select the Warehouse")); } + frm.set_value("consider_minimum_order_qty", 0); + if (frm.doc.ignore_existing_ordered_qty) { frm.events.get_items_for_material_requests(frm); } else { diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.json b/erpnext/manufacturing/doctype/production_plan/production_plan.json index 49386c4ebc4..257b60c4869 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.json +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.json @@ -48,6 +48,7 @@ "material_request_planning", "include_non_stock_items", "include_subcontracted_items", + "consider_minimum_order_qty", "include_safety_stock", "ignore_existing_ordered_qty", "column_break_25", @@ -423,13 +424,19 @@ "fieldtype": "Link", "label": "Sub Assembly Warehouse", "options": "Warehouse" + }, + { + "default": "0", + "fieldname": "consider_minimum_order_qty", + "fieldtype": "Check", + "label": "Consider Minimum Order Qty" } ], "icon": "fa fa-calendar", "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2023-11-03 14:08:11.928027", + "modified": "2023-12-26 16:31:13.740777", "modified_by": "Administrator", "module": "Manufacturing", "name": "Production Plan", diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py index 4b72a83b055..2bfd4be53a9 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py @@ -67,6 +67,7 @@ class ProductionPlan(Document): combine_items: DF.Check combine_sub_items: DF.Check company: DF.Link + consider_minimum_order_qty: DF.Check customer: DF.Link | None for_warehouse: DF.Link | None from_date: DF.Date | None @@ -1211,7 +1212,14 @@ def get_subitems( def get_material_request_items( - row, sales_order, company, ignore_existing_ordered_qty, include_safety_stock, warehouse, bin_dict + doc, + row, + sales_order, + company, + ignore_existing_ordered_qty, + include_safety_stock, + warehouse, + bin_dict, ): total_qty = row["qty"] @@ -1220,8 +1228,14 @@ def get_material_request_items( required_qty = total_qty elif total_qty > bin_dict.get("projected_qty", 0): required_qty = total_qty - bin_dict.get("projected_qty", 0) - if required_qty > 0 and required_qty < row["min_order_qty"]: + + if ( + doc.get("consider_minimum_order_qty") + and required_qty > 0 + and required_qty < row["min_order_qty"] + ): required_qty = row["min_order_qty"] + item_group_defaults = get_item_group_defaults(row.item_code, company) if not row["purchase_uom"]: @@ -1559,6 +1573,7 @@ def get_items_for_material_requests(doc, warehouses=None, get_parent_warehouse_d if details.qty > 0: items = get_material_request_items( + doc, details, sales_order, company, diff --git a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py index f86725d601a..f6dfaa50586 100644 --- a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py @@ -1499,6 +1499,29 @@ class TestProductionPlan(FrappeTestCase): after_qty = flt(frappe.db.get_value("Bin", bin_name, "reserved_qty_for_production_plan")) self.assertAlmostEqual(after_qty, before_qty) + def test_min_order_qty_in_pp(self): + from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse + from erpnext.stock.utils import get_or_make_bin + + fg_item = make_item(properties={"is_stock_item": 1}).name + rm_item = make_item(properties={"is_stock_item": 1, "min_order_qty": 1000}).name + + rm_warehouse = create_warehouse("RM Warehouse", company="_Test Company") + + make_bom(item=fg_item, raw_materials=[rm_item], source_warehouse="_Test Warehouse - _TC") + + pln = create_production_plan(item_code=fg_item, planned_qty=10, do_not_submit=1) + + pln.for_warehouse = rm_warehouse + mr_items = get_items_for_material_requests(pln.as_dict()) + for d in mr_items: + self.assertEqual(d.get("quantity"), 10.0) + + pln.consider_minimum_order_qty = 1 + mr_items = get_items_for_material_requests(pln.as_dict()) + for d in mr_items: + self.assertEqual(d.get("quantity"), 1000.0) + def create_production_plan(**args): """ @@ -1579,6 +1602,10 @@ def make_bom(**args): } ) + if args.operating_cost_per_bom_quantity: + bom.fg_based_operating_cost = 1 + bom.operating_cost_per_bom_quantity = args.operating_cost_per_bom_quantity + for item in args.raw_materials: item_doc = frappe.get_doc("Item", item) bom.append( diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py index e2c8f079805..aa5db57fa8c 100644 --- a/erpnext/manufacturing/doctype/work_order/test_work_order.py +++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py @@ -921,11 +921,9 @@ class TestWorkOrder(FrappeTestCase): "Test RM Item 2 for Scrap Item Test", ] - from_time = add_days(now(), -1) job_cards = frappe.get_all( "Job Card Time Log", fields=["distinct parent as name", "docstatus"], - filters={"from_time": (">", from_time)}, order_by="creation asc", ) @@ -1732,6 +1730,93 @@ class TestWorkOrder(FrappeTestCase): job_card2.time_logs = [] job_card2.save() + def test_op_cost_and_scrap_based_on_sub_assemblies(self): + # Make Sub Assembly BOM 1 + + frappe.db.set_single_value( + "Manufacturing Settings", "set_op_cost_and_scrape_from_sub_assemblies", 1 + ) + + items = { + "Test Final FG Item": 0, + "Test Final SF Item 1": 0, + "Test Final SF Item 2": 0, + "Test Final RM Item 1": 100, + "Test Final RM Item 2": 200, + "Test Final Scrap Item 1": 50, + "Test Final Scrap Item 2": 60, + } + + for item in items: + if not frappe.db.exists("Item", item): + item_properties = {"is_stock_item": 1, "valuation_rate": items[item]} + + make_item(item_code=item, properties=item_properties), + + prepare_boms_for_sub_assembly_test() + + wo_order = make_wo_order_test_record( + production_item="Test Final FG Item", + qty=10, + use_multi_level_bom=1, + skip_transfer=1, + from_wip_warehouse=1, + ) + + se_doc = frappe.get_doc(make_stock_entry(wo_order.name, "Manufacture", 10)) + se_doc.save() + + self.assertTrue(se_doc.additional_costs) + scrap_items = [] + for item in se_doc.items: + if item.is_scrap_item: + scrap_items.append(item.item_code) + + self.assertEqual( + sorted(scrap_items), sorted(["Test Final Scrap Item 1", "Test Final Scrap Item 2"]) + ) + for row in se_doc.additional_costs: + self.assertEqual(row.amount, 3000) + + frappe.db.set_single_value( + "Manufacturing Settings", "set_op_cost_and_scrape_from_sub_assemblies", 0 + ) + + +def prepare_boms_for_sub_assembly_test(): + if not frappe.db.exists("BOM", {"item": "Test Final SF Item 1"}): + bom = make_bom( + item="Test Final SF Item 1", + source_warehouse="Stores - _TC", + raw_materials=["Test Final RM Item 1"], + operating_cost_per_bom_quantity=100, + do_not_submit=True, + ) + + bom.append("scrap_items", {"item_code": "Test Final Scrap Item 1", "qty": 1}) + + bom.submit() + + if not frappe.db.exists("BOM", {"item": "Test Final SF Item 2"}): + bom = make_bom( + item="Test Final SF Item 2", + source_warehouse="Stores - _TC", + raw_materials=["Test Final RM Item 2"], + operating_cost_per_bom_quantity=200, + do_not_submit=True, + ) + + bom.append("scrap_items", {"item_code": "Test Final Scrap Item 2", "qty": 1}) + + bom.submit() + + if not frappe.db.exists("BOM", {"item": "Test Final FG Item"}): + bom = make_bom( + item="Test Final FG Item", + source_warehouse="Stores - _TC", + raw_materials=["Test Final SF Item 1", "Test Final SF Item 2"], + ) + def prepare_data_for_workstation_type_check(): from erpnext.manufacturing.doctype.operation.test_operation import make_operation @@ -1978,6 +2063,7 @@ def make_wo_order_test_record(**args): wo_order.sales_order = args.sales_order or None wo_order.planned_start_date = args.planned_start_date or now() wo_order.transfer_material_against = args.transfer_material_against or "Work Order" + wo_order.from_wip_warehouse = args.from_wip_warehouse or 0 if args.source_warehouse: for item in wo_order.get("required_items"): diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 2bfd1350ff6..290476e205d 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -352,7 +352,9 @@ erpnext.patches.v14_0.create_accounting_dimensions_in_supplier_quotation erpnext.patches.v14_0.update_zero_asset_quantity_field execute:frappe.db.set_single_value("Buying Settings", "project_update_frequency", "Each Transaction") execute:frappe.db.set_default("date_format", frappe.db.get_single_value("System Settings", "date_format")) +erpnext.patches.v14_0.update_total_asset_cost_field erpnext.patches.v15_0.create_advance_payment_status # below migration patch should always run last erpnext.patches.v14_0.migrate_gl_to_payment_ledger -erpnext.stock.doctype.delivery_note.patches.drop_unused_return_against_index +erpnext.stock.doctype.delivery_note.patches.drop_unused_return_against_index # 2023-12-20 +erpnext.patches.v14_0.set_maintain_stock_for_bom_item diff --git a/erpnext/patches/v11_0/create_department_records_for_each_company.py b/erpnext/patches/v11_0/create_department_records_for_each_company.py index 84be2bee9dc..7a0641d7c80 100644 --- a/erpnext/patches/v11_0/create_department_records_for_each_company.py +++ b/erpnext/patches/v11_0/create_department_records_for_each_company.py @@ -35,7 +35,7 @@ def execute(): # append list of new department for each company comp_dict[company.name][department.name] = copy_doc.name - rebuild_tree("Department", "parent_department") + rebuild_tree("Department") doctypes = ["Asset", "Employee", "Payroll Entry", "Staffing Plan", "Job Opening"] for d in doctypes: diff --git a/erpnext/patches/v11_0/make_location_from_warehouse.py b/erpnext/patches/v11_0/make_location_from_warehouse.py index c863bb7ecf7..8d9c8d8ef6c 100644 --- a/erpnext/patches/v11_0/make_location_from_warehouse.py +++ b/erpnext/patches/v11_0/make_location_from_warehouse.py @@ -27,7 +27,7 @@ def execute(): except frappe.DuplicateEntryError: continue - rebuild_tree("Location", "parent_location") + rebuild_tree("Location") def get_parent_warehouse_name(warehouse): diff --git a/erpnext/patches/v11_0/rebuild_tree_for_company.py b/erpnext/patches/v11_0/rebuild_tree_for_company.py index fc06c5d30d9..a9b23445e9f 100644 --- a/erpnext/patches/v11_0/rebuild_tree_for_company.py +++ b/erpnext/patches/v11_0/rebuild_tree_for_company.py @@ -4,4 +4,4 @@ from frappe.utils.nestedset import rebuild_tree def execute(): frappe.reload_doc("setup", "doctype", "company") - rebuild_tree("Company", "parent_company") + rebuild_tree("Company") diff --git a/erpnext/patches/v11_0/rename_supplier_type_to_supplier_group.py b/erpnext/patches/v11_0/rename_supplier_type_to_supplier_group.py index 96daba7d368..67eb9159026 100644 --- a/erpnext/patches/v11_0/rename_supplier_type_to_supplier_group.py +++ b/erpnext/patches/v11_0/rename_supplier_type_to_supplier_group.py @@ -41,4 +41,4 @@ def build_tree(): } ).insert(ignore_permissions=True) - rebuild_tree("Supplier Group", "parent_supplier_group") + rebuild_tree("Supplier Group") diff --git a/erpnext/patches/v11_0/update_department_lft_rgt.py b/erpnext/patches/v11_0/update_department_lft_rgt.py index 778392ec5fc..380ca4d47ab 100644 --- a/erpnext/patches/v11_0/update_department_lft_rgt.py +++ b/erpnext/patches/v11_0/update_department_lft_rgt.py @@ -18,4 +18,4 @@ def execute(): ) ) - rebuild_tree("Department", "parent_department") + rebuild_tree("Department") diff --git a/erpnext/patches/v14_0/set_maintain_stock_for_bom_item.py b/erpnext/patches/v14_0/set_maintain_stock_for_bom_item.py new file mode 100644 index 00000000000..f0b618f32d4 --- /dev/null +++ b/erpnext/patches/v14_0/set_maintain_stock_for_bom_item.py @@ -0,0 +1,19 @@ +import frappe + + +def execute(): + if not frappe.db.exists("BOM", {"docstatus": 1}): + return + + # Added is_stock_item to handle Read Only based on condition for the rate field + frappe.db.sql( + """ + UPDATE + `tabBOM Item` boi, + `tabItem` i + SET + boi.is_stock_item = i.is_stock_item + WHERE + boi.item_code = i.name + """ + ) diff --git a/erpnext/patches/v14_0/update_invoicing_period_in_subscription.py b/erpnext/patches/v14_0/update_invoicing_period_in_subscription.py index 2879e57e1a2..b70548ccb7f 100644 --- a/erpnext/patches/v14_0/update_invoicing_period_in_subscription.py +++ b/erpnext/patches/v14_0/update_invoicing_period_in_subscription.py @@ -4,5 +4,5 @@ import frappe def execute(): subscription = frappe.qb.DocType("Subscription") frappe.qb.update(subscription).set( - subscription.generate_invoice_at, "Beginning of the currency subscription period" + subscription.generate_invoice_at, "Beginning of the current subscription period" ).where(subscription.generate_invoice_at_period_start == 1).run() diff --git a/erpnext/patches/v14_0/update_total_asset_cost_field.py b/erpnext/patches/v14_0/update_total_asset_cost_field.py new file mode 100644 index 00000000000..57cf71b6134 --- /dev/null +++ b/erpnext/patches/v14_0/update_total_asset_cost_field.py @@ -0,0 +1,17 @@ +import frappe + + +def execute(): + asset = frappe.qb.DocType("Asset") + frappe.qb.update(asset).set(asset.total_asset_cost, asset.gross_purchase_amount).run() + + asset_repair_list = frappe.db.get_all( + "Asset Repair", + filters={"docstatus": 1, "repair_status": "Completed", "capitalize_repair_cost": 1}, + fields=["asset", "repair_cost"], + ) + + for asset_repair in asset_repair_list: + frappe.qb.update(asset).set( + asset.total_asset_cost, asset.total_asset_cost + asset_repair.repair_cost + ).where(asset.name == asset_repair.asset).run() diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 39357834ed7..4d8f6839b4d 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -454,7 +454,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe item.weight_uom = ''; item.conversion_factor = 0; - if(['Sales Invoice'].includes(this.frm.doc.doctype)) { + if(['Sales Invoice', 'Purchase Invoice'].includes(this.frm.doc.doctype)) { update_stock = cint(me.frm.doc.update_stock); show_batch_dialog = update_stock; @@ -545,7 +545,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe }, () => me.toggle_conversion_factor(item), () => { - if (show_batch_dialog) + if (show_batch_dialog && !frappe.flags.trigger_from_barcode_scanner) return frappe.db.get_value("Item", item.item_code, ["has_batch_no", "has_serial_no"]) .then((r) => { if (r.message && @@ -715,6 +715,11 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe } on_submit() { + if (in_list(["Purchase Invoice", "Sales Invoice"], this.frm.doc.doctype) + && !this.frm.doc.update_stock) { + return; + } + this.refresh_serial_batch_bundle_field(); } @@ -1234,6 +1239,20 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe } } + sync_bundle_data() { + let doctypes = ["Sales Invoice", "Purchase Invoice", "Delivery Note", "Purchase Receipt"]; + + if (this.frm.is_new() && doctypes.includes(this.frm.doc.doctype)) { + const barcode_scanner = new erpnext.utils.BarcodeScanner({frm:this.frm}); + barcode_scanner.sync_bundle_data(); + barcode_scanner.remove_item_from_localstorage(); + } + } + + before_save(doc) { + this.sync_bundle_data(); + } + service_start_date(frm, cdt, cdn) { var child = locals[cdt][cdn]; @@ -1571,6 +1590,18 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe return item_list; } + items_delete() { + this.update_localstorage_scanned_data(); + } + + update_localstorage_scanned_data() { + let doctypes = ["Sales Invoice", "Purchase Invoice", "Delivery Note", "Purchase Receipt"]; + if (this.frm.is_new() && doctypes.includes(this.frm.doc.doctype)) { + const barcode_scanner = new erpnext.utils.BarcodeScanner({frm:this.frm}); + barcode_scanner.update_localstorage_scanned_data(); + } + } + _set_values_for_item_list(children) { const items_rule_dict = {}; diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js index b0ea56833b7..598167b3370 100755 --- a/erpnext/public/js/utils.js +++ b/erpnext/public/js/utils.js @@ -843,7 +843,7 @@ erpnext.utils.map_current_doc = function(opts) { freeze_message: __("Mapping {0} ...", [opts.source_doctype]), callback: function(r) { if(!r.exc) { - var doc = frappe.model.sync(r.message); + frappe.model.sync(r.message); cur_frm.dirty(); cur_frm.refresh(); } @@ -865,11 +865,20 @@ erpnext.utils.map_current_doc = function(opts) { } if (opts.source_doctype) { + let data_fields = []; + if(opts.source_doctype == "Purchase Receipt") { + data_fields.push({ + fieldname: 'merge_taxes', + fieldtype: 'Check', + label: __('Merge taxes from multiple documents'), + }); + } const d = new frappe.ui.form.MultiSelectDialog({ doctype: opts.source_doctype, target: opts.target, date_field: opts.date_field || undefined, setters: opts.setters, + data_fields: data_fields, get_query: opts.get_query, add_filters_group: 1, allow_child_item_selection: opts.allow_child_item_selection, @@ -883,7 +892,7 @@ erpnext.utils.map_current_doc = function(opts) { return; } opts.source_name = values; - if (opts.allow_child_item_selection) { + if (opts.allow_child_item_selection || opts.source_doctype == "Purchase Receipt") { // args contains filtered child docnames opts.args = args; } diff --git a/erpnext/public/js/utils/barcode_scanner.js b/erpnext/public/js/utils/barcode_scanner.js index a1ebfe9aa4a..cf7fab89ffb 100644 --- a/erpnext/public/js/utils/barcode_scanner.js +++ b/erpnext/public/js/utils/barcode_scanner.js @@ -7,8 +7,6 @@ erpnext.utils.BarcodeScanner = class BarcodeScanner { this.scan_barcode_field = this.frm.fields_dict[this.scan_field_name]; this.barcode_field = opts.barcode_field || "barcode"; - this.serial_no_field = opts.serial_no_field || "serial_no"; - this.batch_no_field = opts.batch_no_field || "batch_no"; this.uom_field = opts.uom_field || "uom"; this.qty_field = opts.qty_field || "qty"; // field name on row which defines max quantity to be scanned e.g. picklist @@ -84,6 +82,7 @@ erpnext.utils.BarcodeScanner = class BarcodeScanner { update_table(data) { return new Promise((resolve, reject) => { let cur_grid = this.frm.fields_dict[this.items_table_name].grid; + frappe.flags.trigger_from_barcode_scanner = true; const {item_code, barcode, batch_no, serial_no, uom} = data; @@ -106,50 +105,38 @@ erpnext.utils.BarcodeScanner = class BarcodeScanner { this.frm.has_items = false; } - if (this.is_duplicate_serial_no(row, serial_no)) { + if (serial_no && this.is_duplicate_serial_no(row, item_code, serial_no)) { this.clean_up(); reject(); return; } frappe.run_serially([ - () => this.set_selector_trigger_flag(data), - () => this.set_serial_no(row, serial_no), - () => this.set_batch_no(row, batch_no), + () => this.set_serial_and_batch(row, item_code, serial_no, batch_no), () => this.set_barcode(row, barcode), () => this.set_item(row, item_code, barcode, batch_no, serial_no).then(qty => { this.show_scan_message(row.idx, row.item_code, qty); }), () => this.set_barcode_uom(row, uom), () => this.clean_up(), - () => this.revert_selector_flag(), - () => resolve(row) + () => resolve(row), + () => { + if (row.serial_and_batch_bundle && !this.frm.is_new()) { + this.frm.save(); + } + + frappe.flags.trigger_from_barcode_scanner = false; + } ]); }); } - // batch and serial selector is reduandant when all info can be added by scan - // this flag on item row is used by transaction.js to avoid triggering selector - set_selector_trigger_flag(data) { - const {has_batch_no, has_serial_no} = data; - - const require_selecting_batch = has_batch_no; - const require_selecting_serial = has_serial_no; - - if (!(require_selecting_batch || require_selecting_serial)) { - frappe.flags.hide_serial_batch_dialog = true; - } - } - - revert_selector_flag() { - frappe.flags.hide_serial_batch_dialog = false; - } - set_item(row, item_code, barcode, batch_no, serial_no) { return new Promise(resolve => { const increment = async (value = 1) => { const item_data = {item_code: item_code}; item_data[this.qty_field] = Number((row[this.qty_field] || 0)) + Number(value); + frappe.flags.trigger_from_barcode_scanner = true; await frappe.model.set_value(row.doctype, row.name, item_data); return value; }; @@ -158,8 +145,6 @@ erpnext.utils.BarcodeScanner = class BarcodeScanner { frappe.prompt(__("Please enter quantity for item {0}", [item_code]), ({value}) => { increment(value).then((value) => resolve(value)); }); - } else if (this.frm.has_items) { - this.prepare_item_for_scan(row, item_code, barcode, batch_no, serial_no); } else { increment().then((value) => resolve(value)); } @@ -182,9 +167,8 @@ erpnext.utils.BarcodeScanner = class BarcodeScanner { frappe.model.set_value(row.doctype, row.name, item_data); frappe.run_serially([ - () => this.set_batch_no(row, this.dialog.get_value("batch_no")), () => this.set_barcode(row, this.dialog.get_value("barcode")), - () => this.set_serial_no(row, this.dialog.get_value("serial_no")), + () => this.set_serial_and_batch(row, item_code, this.dialog.get_value("serial_no"), this.dialog.get_value("batch_no")), () => this.add_child_for_remaining_qty(row), () => this.clean_up() ]); @@ -338,32 +322,144 @@ erpnext.utils.BarcodeScanner = class BarcodeScanner { } } - async set_serial_no(row, serial_no) { - if (serial_no && frappe.meta.has_field(row.doctype, this.serial_no_field)) { - const existing_serial_nos = row[this.serial_no_field]; - let new_serial_nos = ""; - - if (!!existing_serial_nos) { - new_serial_nos = existing_serial_nos + "\n" + serial_no; - } else { - new_serial_nos = serial_no; - } - await frappe.model.set_value(row.doctype, row.name, this.serial_no_field, new_serial_nos); + async set_serial_and_batch(row, item_code, serial_no, batch_no) { + if (this.frm.is_new() || !row.serial_and_batch_bundle) { + this.set_bundle_in_localstorage(row, item_code, serial_no, batch_no); + } else if(row.serial_and_batch_bundle) { + frappe.call({ + method: "erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle.update_serial_or_batch", + args: { + bundle_id: row.serial_and_batch_bundle, + serial_no: serial_no, + batch_no: batch_no, + }, + }) } } + get_key_for_localstorage() { + let parts = this.frm.doc.name.split("-"); + return parts[parts.length - 1] + this.frm.doc.doctype; + } + + update_localstorage_scanned_data() { + let docname = this.frm.doc.name + if (localStorage[docname]) { + let items = JSON.parse(localStorage[docname]); + let existing_items = this.frm.doc.items.map(d => d.item_code); + if (!existing_items.length) { + localStorage.removeItem(docname); + return; + } + + for (let item_code in items) { + if (!existing_items.includes(item_code)) { + delete items[item_code]; + } + } + + localStorage[docname] = JSON.stringify(items); + } + } + + async set_bundle_in_localstorage(row, item_code, serial_no, batch_no) { + let docname = this.frm.doc.name + + let entries = JSON.parse(localStorage.getItem(docname)); + if (!entries) { + entries = {}; + } + + let key = item_code; + if (!entries[key]) { + entries[key] = []; + } + + let existing_row = []; + if (!serial_no && batch_no) { + existing_row = entries[key].filter((e) => e.batch_no === batch_no); + if (existing_row.length) { + existing_row[0].qty += 1; + } + } else if (serial_no) { + existing_row = entries[key].filter((e) => e.serial_no === serial_no); + if (existing_row.length) { + frappe.throw(__("Serial No {0} has already scanned.", [serial_no])); + } + } + + if (!existing_row.length) { + entries[key].push({ + "serial_no": serial_no, + "batch_no": batch_no, + "qty": 1 + }); + } + + localStorage.setItem(docname, JSON.stringify(entries)); + + // Auto remove from localstorage after 1 hour + setTimeout(() => { + localStorage.removeItem(docname); + }, 3600000) + } + + remove_item_from_localstorage() { + let docname = this.frm.doc.name; + if (localStorage[docname]) { + localStorage.removeItem(docname); + } + } + + async sync_bundle_data() { + let docname = this.frm.doc.name; + + if (localStorage[docname]) { + let entries = JSON.parse(localStorage[docname]); + if (entries) { + for (let entry in entries) { + let row = this.frm.doc.items.filter((item) => { + if (item.item_code === entry) { + return true; + } + })[0]; + + if (row) { + this.create_serial_and_batch_bundle(row, entries, entry) + .then(() => { + if (!entries) { + localStorage.removeItem(docname); + } + }); + } + } + } + } + } + + async create_serial_and_batch_bundle(row, entries, key) { + frappe.call({ + method: "erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle.add_serial_batch_ledgers", + args: { + entries: entries[key], + child_row: row, + doc: this.frm.doc, + warehouse: row.warehouse, + do_not_save: 1 + }, + callback: function(r) { + row.serial_and_batch_bundle = r.message.name; + delete entries[key]; + } + }) + } + async set_barcode_uom(row, uom) { if (uom && frappe.meta.has_field(row.doctype, this.uom_field)) { await frappe.model.set_value(row.doctype, row.name, this.uom_field, uom); } } - async set_batch_no(row, batch_no) { - if (batch_no && frappe.meta.has_field(row.doctype, this.batch_no_field)) { - await frappe.model.set_value(row.doctype, row.name, this.batch_no_field, batch_no); - } - } - async set_barcode(row, barcode) { if (barcode && frappe.meta.has_field(row.doctype, this.barcode_field)) { await frappe.model.set_value(row.doctype, row.name, this.barcode_field, barcode); @@ -379,13 +475,52 @@ erpnext.utils.BarcodeScanner = class BarcodeScanner { } } - is_duplicate_serial_no(row, serial_no) { - const is_duplicate = row[this.serial_no_field]?.includes(serial_no); + is_duplicate_serial_no(row, item_code, serial_no) { + if (this.frm.is_new() || !row.serial_and_batch_bundle) { + let is_duplicate = this.check_duplicate_serial_no_in_localstorage(item_code, serial_no); + if (is_duplicate) { + this.show_alert(__("Serial No {0} is already added", [serial_no]), "orange"); + } - if (is_duplicate) { - this.show_alert(__("Serial No {0} is already added", [serial_no]), "orange"); + return is_duplicate; + } else if (row.serial_and_batch_bundle) { + this.check_duplicate_serial_no_in_db(row, serial_no, (r) => { + if (r.message) { + this.show_alert(__("Serial No {0} is already added", [serial_no]), "orange"); + } + + return r.message; + }) } - return is_duplicate; + } + + async check_duplicate_serial_no_in_db(row, serial_no, response) { + frappe.call({ + method: "erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle.is_duplicate_serial_no", + args: { + serial_no: serial_no, + bundle_id: row.serial_and_batch_bundle + }, + callback(r) { + response(r); + } + }) + } + + check_duplicate_serial_no_in_localstorage(item_code, serial_no) { + let docname = this.frm.doc.name + let entries = JSON.parse(localStorage.getItem(docname)); + + if (!entries) { + return false; + } + + let existing_row = []; + if (entries[item_code]) { + existing_row = entries[item_code].filter((e) => e.serial_no === serial_no); + } + + return existing_row.length; } get_row_to_modify_on_scan(item_code, batch_no, uom, barcode) { diff --git a/erpnext/public/js/utils/sales_common.js b/erpnext/public/js/utils/sales_common.js index 084cca7db5f..b92b02e8269 100644 --- a/erpnext/public/js/utils/sales_common.js +++ b/erpnext/public/js/utils/sales_common.js @@ -184,6 +184,12 @@ erpnext.sales_common = { refresh_field("incentives",row.name,row.parentfield); } + warehouse(doc, cdt, cdn) { + if (doc.docstatus === 0 && doc.is_return && !doc.return_against) { + frappe.model.set_value(cdt, cdn, "incoming_rate", 0.0); + } + } + toggle_editable_price_list_rate() { var df = frappe.meta.get_docfield(this.frm.doc.doctype + " Item", "price_list_rate", this.frm.doc.name); var editable_price_list_rate = cint(frappe.defaults.get_default("editable_price_list_rate")); diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js index 4abc8fa3951..bf362e338e4 100644 --- a/erpnext/public/js/utils/serial_no_batch_selector.js +++ b/erpnext/public/js/utils/serial_no_batch_selector.js @@ -337,16 +337,18 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { } get_auto_data() { + let { qty, based_on } = this.dialog.get_values(); + if (this.item.serial_and_batch_bundle || this.item.rejected_serial_and_batch_bundle) { - return; + if (qty === this.qty) { + return; + } } if (this.item.serial_no || this.item.batch_no) { return; } - let { qty, based_on } = this.dialog.get_values(); - if (!based_on) { based_on = 'FIFO'; } @@ -502,6 +504,7 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { set_data(data) { data.forEach(d => { + d.qty = Math.abs(d.qty); this.dialog.fields_dict.entries.df.data.push(d); }); diff --git a/erpnext/regional/united_arab_emirates/utils.py b/erpnext/regional/united_arab_emirates/utils.py index 250a4b14956..3e9f76132ce 100644 --- a/erpnext/regional/united_arab_emirates/utils.py +++ b/erpnext/regional/united_arab_emirates/utils.py @@ -25,7 +25,7 @@ def update_itemised_tax_data(doc): # dont even bother checking in item tax template as it contains both input and output accounts - double the tax rate item_code = row.item_code or row.item_name if itemised_tax.get(item_code): - for tax in itemised_tax.get(row.item_code).values(): + for tax in itemised_tax.get(item_code).values(): _tax_rate = flt(tax.get("tax_rate", 0), row.precision("tax_rate")) tax_amount += flt((row.net_amount * _tax_rate) / 100, row.precision("tax_amount")) tax_rate += _tax_rate diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json index 31bbbcf51b8..db712d96b50 100644 --- a/erpnext/selling/doctype/customer/customer.json +++ b/erpnext/selling/doctype/customer/customer.json @@ -448,7 +448,6 @@ "report_hide": 1 }, { - "default": "0", "fieldname": "credit_limits", "fieldtype": "Table", "label": "Credit Limit", @@ -584,7 +583,7 @@ "link_fieldname": "party" } ], - "modified": "2023-10-19 16:56:27.327035", + "modified": "2023-12-28 13:15:36.298369", "modified_by": "Administrator", "module": "Selling", "name": "Customer", diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index 97b214e33e5..b206e3fe336 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -182,7 +182,7 @@ frappe.ui.form.on("Sales Order", { create_stock_reservation_entries(frm) { const dialog = new frappe.ui.Dialog({ title: __("Stock Reservation"), - size: "large", + size: "extra-large", fields: [ { fieldname: "set_warehouse", @@ -207,6 +207,50 @@ frappe.ui.form.on("Sales Order", { }, }, {fieldtype: "Column Break"}, + { + fieldname: "add_item", + fieldtype: "Link", + label: __("Add Item"), + options: "Sales Order Item", + get_query: () => { + return { + query: "erpnext.controllers.queries.get_filtered_child_rows", + filters: { + "parenttype": frm.doc.doctype, + "parent": frm.doc.name, + "reserve_stock": 1, + } + } + }, + onchange: () => { + let sales_order_item = dialog.get_value("add_item"); + + if (sales_order_item) { + frm.doc.items.forEach(item => { + if (item.name === sales_order_item) { + let unreserved_qty = (flt(item.stock_qty) - (item.stock_reserved_qty ? flt(item.stock_reserved_qty) : (flt(item.delivered_qty) * flt(item.conversion_factor)))) / flt(item.conversion_factor); + + if (unreserved_qty > 0) { + dialog.fields_dict.items.df.data.forEach((row) => { + if (row.sales_order_item === sales_order_item) { + unreserved_qty -= row.qty_to_reserve; + } + }); + } + + dialog.fields_dict.items.df.data.push({ + 'sales_order_item': item.name, + 'item_code': item.item_code, + 'warehouse': dialog.get_value("set_warehouse") || item.warehouse, + 'qty_to_reserve': Math.max(unreserved_qty, 0) + }); + dialog.fields_dict.items.grid.refresh(); + dialog.set_value("add_item", undefined); + } + }); + } + }, + }, {fieldtype: "Section Break"}, { fieldname: "items", @@ -218,10 +262,34 @@ frappe.ui.form.on("Sales Order", { fields: [ { fieldname: "sales_order_item", - fieldtype: "Data", + fieldtype: "Link", label: __("Sales Order Item"), + options: "Sales Order Item", reqd: 1, - read_only: 1, + in_list_view: 1, + get_query: () => { + return { + query: "erpnext.controllers.queries.get_filtered_child_rows", + filters: { + "parenttype": frm.doc.doctype, + "parent": frm.doc.name, + "reserve_stock": 1, + } + } + }, + onchange: (event) => { + if (event) { + let name = $(event.currentTarget).closest(".grid-row").attr("data-name"); + let item_row = dialog.fields_dict.items.grid.grid_rows_by_docname[name].doc; + + frm.doc.items.forEach(item => { + if (item.name === item_row.sales_order_item) { + item_row.item_code = item.item_code; + } + }); + dialog.fields_dict.items.grid.refresh(); + } + } }, { fieldname: "item_code", @@ -284,14 +352,14 @@ frappe.ui.form.on("Sales Order", { frm.doc.items.forEach(item => { if (item.reserve_stock) { - let unreserved_qty = (flt(item.stock_qty) - (item.stock_reserved_qty ? flt(item.stock_reserved_qty) : (flt(item.delivered_qty) * flt(item.conversion_factor)))) + let unreserved_qty = (flt(item.stock_qty) - (item.stock_reserved_qty ? flt(item.stock_reserved_qty) : (flt(item.delivered_qty) * flt(item.conversion_factor)))) / flt(item.conversion_factor); if (unreserved_qty > 0) { dialog.fields_dict.items.df.data.push({ 'sales_order_item': item.name, 'item_code': item.item_code, 'warehouse': item.warehouse, - 'qty_to_reserve': (unreserved_qty / flt(item.conversion_factor)) + 'qty_to_reserve': unreserved_qty }); } } diff --git a/erpnext/selling/page/point_of_sale/pos_item_cart.js b/erpnext/selling/page/point_of_sale/pos_item_cart.js index 193048f6769..bd8579203c0 100644 --- a/erpnext/selling/page/point_of_sale/pos_item_cart.js +++ b/erpnext/selling/page/point_of_sale/pos_item_cart.js @@ -520,7 +520,7 @@ erpnext.PointOfSale.ItemCart = class { } render_taxes(taxes) { - if (taxes.length) { + if (taxes && taxes.length) { const currency = this.events.get_frm().doc.currency; const taxes_html = taxes.map(t => { if (t.tax_amount_after_discount_amount == 0.0) return; diff --git a/erpnext/selling/report/customer_wise_item_price/customer_wise_item_price.py b/erpnext/selling/report/customer_wise_item_price/customer_wise_item_price.py index a58f40362ba..40aa9acc3c6 100644 --- a/erpnext/selling/report/customer_wise_item_price/customer_wise_item_price.py +++ b/erpnext/selling/report/customer_wise_item_price/customer_wise_item_price.py @@ -3,11 +3,11 @@ import frappe -from frappe import _ +from frappe import _, qb +from frappe.query_builder import Criterion from erpnext import get_default_company from erpnext.accounts.party import get_party_details -from erpnext.stock.get_item_details import get_price_list_rate_for def execute(filters=None): @@ -50,6 +50,42 @@ def get_columns(filters=None): ] +def fetch_item_prices( + customer: str = None, price_list: str = None, selling_price_list: str = None, items: list = None +): + price_list_map = frappe._dict() + ip = qb.DocType("Item Price") + and_conditions = [] + or_conditions = [] + if items: + and_conditions.append(ip.item_code.isin([x.item_code for x in items])) + and_conditions.append(ip.selling == True) + + or_conditions.append(ip.customer == None) + or_conditions.append(ip.price_list == None) + + if customer: + or_conditions.append(ip.customer == customer) + + if price_list: + or_conditions.append(ip.price_list == price_list) + + if selling_price_list: + or_conditions.append(ip.price_list == selling_price_list) + + res = ( + qb.from_(ip) + .select(ip.item_code, ip.price_list, ip.price_list_rate) + .where(Criterion.all(and_conditions)) + .where(Criterion.any(or_conditions)) + .run(as_dict=True) + ) + for x in res: + price_list_map.update({(x.item_code, x.price_list): x.price_list_rate}) + + return price_list_map + + def get_data(filters=None): data = [] customer_details = get_customer_details(filters) @@ -59,9 +95,17 @@ def get_data(filters=None): "Bin", fields=["item_code", "sum(actual_qty) AS available"], group_by="item_code" ) item_stock_map = {item.item_code: item.available for item in item_stock_map} + price_list_map = fetch_item_prices( + customer_details.customer, + customer_details.price_list, + customer_details.selling_price_list, + items, + ) for item in items: - price_list_rate = get_price_list_rate_for(customer_details, item.item_code) or 0.0 + price_list_rate = price_list_map.get( + (item.item_code, customer_details.price_list or customer_details.selling_price_list), 0.0 + ) available_stock = item_stock_map.get(item.item_code) data.append( diff --git a/erpnext/setup/demo.py b/erpnext/setup/demo.py index 4bc98b91bd3..df2c49b2b62 100644 --- a/erpnext/setup/demo.py +++ b/erpnext/setup/demo.py @@ -149,6 +149,11 @@ def convert_order_to_invoices(): invoice.set_posting_time = 1 invoice.posting_date = order.transaction_date invoice.due_date = order.transaction_date + invoice.bill_date = order.transaction_date + + if invoice.get("payment_schedule"): + invoice.payment_schedule[0].due_date = order.transaction_date + invoice.update_stock = 1 invoice.submit() diff --git a/erpnext/setup/demo_data/journal_entry.json b/erpnext/setup/demo_data/journal_entry.json index b751c7cf244..a681be4f5b7 100644 --- a/erpnext/setup/demo_data/journal_entry.json +++ b/erpnext/setup/demo_data/journal_entry.json @@ -4,22 +4,22 @@ "cheque_no": "33", "doctype": "Journal Entry", "accounts": [ - { - "party_type": "Customer", - "party": "ABC Enterprises", - "credit_in_account_currency": 40000.0, - "debit_in_account_currency": 0.0, - "doctype": "Journal Entry Account", - "parentfield": "accounts", - }, - { - "credit_in_account_currency": 0.0, - "debit_in_account_currency": 40000.0, - "doctype": "Journal Entry Account", - "parentfield": "accounts", - } + { + "party_type": "Customer", + "party": "ABC Enterprises", + "credit_in_account_currency": 40000.0, + "debit_in_account_currency": 0.0, + "doctype": "Journal Entry Account", + "parentfield": "accounts" + }, + { + "credit_in_account_currency": 0.0, + "debit_in_account_currency": 40000.0, + "doctype": "Journal Entry Account", + "parentfield": "accounts" + } ], "user_remark": "test", "voucher_type": "Bank Entry" } -] \ No newline at end of file +] diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index 0e8ee2dda4f..ec953b885ee 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -249,7 +249,7 @@ class Company(NestedSet): if frappe.flags.parent_company_changed: from frappe.utils.nestedset import rebuild_tree - rebuild_tree("Company", "parent_company") + rebuild_tree("Company") frappe.clear_cache() @@ -274,7 +274,7 @@ class Company(NestedSet): "parent_warehouse": "{0} - {1}".format(_("All Warehouses"), self.abbr) if not wh_detail["is_group"] else "", - "warehouse_type": wh_detail["warehouse_type"] if "warehouse_type" in wh_detail else None, + "warehouse_type": wh_detail.get("warehouse_type"), } ) warehouse.flags.ignore_permissions = True @@ -397,7 +397,7 @@ class Company(NestedSet): frappe.local.flags.ignore_update_nsm = True make_records(records) frappe.local.flags.ignore_update_nsm = False - rebuild_tree("Department", "parent_department") + rebuild_tree("Department") def validate_coa_input(self): if self.create_chart_of_accounts_based_on == "Existing Company": diff --git a/erpnext/setup/doctype/department/department.py b/erpnext/setup/doctype/department/department.py index 16f6fbfba4b..b36f032d4c9 100644 --- a/erpnext/setup/doctype/department/department.py +++ b/erpnext/setup/doctype/department/department.py @@ -69,7 +69,9 @@ def get_abbreviated_name(name, company): @frappe.whitelist() -def get_children(doctype, parent=None, company=None, is_root=False): +def get_children(doctype, parent=None, company=None, is_root=False, include_disabled=False): + if isinstance(include_disabled, str): + include_disabled = frappe.json.loads(include_disabled) fields = ["name as value", "is_group as expandable"] filters = {} @@ -81,6 +83,9 @@ def get_children(doctype, parent=None, company=None, is_root=False): else: filters["parent_department"] = parent + if frappe.db.has_column(doctype, "disabled") and not include_disabled: + filters["disabled"] = False + return frappe.get_all("Department", fields=fields, filters=filters, order_by="name") diff --git a/erpnext/setup/doctype/employee/employee.json b/erpnext/setup/doctype/employee/employee.json index 1143ccb7b10..daf2df5a590 100644 --- a/erpnext/setup/doctype/employee/employee.json +++ b/erpnext/setup/doctype/employee/employee.json @@ -616,8 +616,8 @@ "fieldname": "relieving_date", "fieldtype": "Date", "label": "Relieving Date", - "no_copy": 1, "mandatory_depends_on": "eval:doc.status == \"Left\"", + "no_copy": 1, "oldfieldname": "relieving_date", "oldfieldtype": "Date" }, @@ -822,12 +822,14 @@ "icon": "fa fa-user", "idx": 24, "image_field": "image", + "is_tree": 1, "links": [], - "modified": "2023-10-04 10:57:05.174592", + "modified": "2024-01-03 17:36:20.984421", "modified_by": "Administrator", "module": "Setup", "name": "Employee", "naming_rule": "By \"Naming Series\" field", + "nsm_parent_field": "reports_to", "owner": "Administrator", "permissions": [ { @@ -860,7 +862,6 @@ "read": 1, "report": 1, "role": "HR Manager", - "set_user_permissions": 1, "share": 1, "write": 1 } @@ -871,4 +872,4 @@ "sort_order": "DESC", "states": [], "title_field": "employee_name" -} +} \ No newline at end of file diff --git a/erpnext/setup/doctype/item_group/test_item_group.py b/erpnext/setup/doctype/item_group/test_item_group.py index 11bc9b92c12..d95199d1513 100644 --- a/erpnext/setup/doctype/item_group/test_item_group.py +++ b/erpnext/setup/doctype/item_group/test_item_group.py @@ -79,7 +79,7 @@ class TestItem(unittest.TestCase): group_b.save() def test_rebuild_tree(self): - rebuild_tree("Item Group", "parent_item_group") + rebuild_tree("Item Group") self.test_basic_tree() def move_it_back(self): diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py index 7a1d5e284ef..6239864c230 100644 --- a/erpnext/setup/install.py +++ b/erpnext/setup/install.py @@ -31,7 +31,6 @@ def after_install(): add_company_to_session_defaults() add_standard_navbar_items() add_app_name() - hide_workspaces() update_roles() frappe.db.commit() @@ -218,11 +217,6 @@ def add_app_name(): frappe.db.set_single_value("System Settings", "app_name", "ERPNext") -def hide_workspaces(): - for ws in ["Integration", "Settings"]: - frappe.db.set_value("Workspace", ws, "public", 0) - - def update_roles(): website_user_roles = ("Customer", "Supplier") for role in website_user_roles: diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py index 2da107e4e94..9a49af2b10e 100644 --- a/erpnext/setup/setup_wizard/setup_wizard.py +++ b/erpnext/setup/setup_wizard/setup_wizard.py @@ -37,11 +37,6 @@ def get_setup_stages(args=None): {"fn": setup_defaults, "args": args, "fail_msg": _("Failed to setup defaults")}, ], }, - { - "status": _("Setting up demo data"), - "fail_msg": _("Failed to setup demo data"), - "tasks": [{"fn": setup_demo, "args": args, "fail_msg": _("Failed to setup demo data")}], - }, { "status": _("Wrapping up"), "fail_msg": _("Failed to login"), diff --git a/erpnext/setup/workspace/erpnext_settings/erpnext_settings.json b/erpnext/setup/workspace/erpnext_settings/erpnext_settings.json deleted file mode 100644 index 2f9cec40b0f..00000000000 --- a/erpnext/setup/workspace/erpnext_settings/erpnext_settings.json +++ /dev/null @@ -1,500 +0,0 @@ -{ - "charts": [], - "content": "[{\"id\":\"NO5yYHJopc\",\"type\":\"header\",\"data\":{\"text\":\"Your Shortcuts\\n\\t\\t\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\",\"col\":12}},{\"id\":\"CDxIM-WuZ9\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"System Settings\",\"col\":3}},{\"id\":\"-Uh7DKJNJX\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Accounts Settings\",\"col\":3}},{\"id\":\"K9ST9xcDXh\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Stock Settings\",\"col\":3}},{\"id\":\"27IdVHVQMb\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Selling Settings\",\"col\":3}},{\"id\":\"Rwp5zff88b\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Buying Settings\",\"col\":3}},{\"id\":\"hkfnQ2sevf\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Global Defaults\",\"col\":3}},{\"id\":\"jjxI_PDawD\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Print Settings\",\"col\":3}},{\"id\":\"R3CoYYFXye\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"yynbm1J_VO\",\"type\":\"header\",\"data\":{\"text\":\"Settings\",\"col\":12}},{\"id\":\"KDCv2MvSg3\",\"type\":\"card\",\"data\":{\"card_name\":\"Module Settings\",\"col\":4}},{\"id\":\"Q0_bqT7cxQ\",\"type\":\"card\",\"data\":{\"card_name\":\"Email / Notifications\",\"col\":4}},{\"id\":\"UnqK5haBnh\",\"type\":\"card\",\"data\":{\"card_name\":\"Website\",\"col\":4}},{\"id\":\"kp7u1H5hCd\",\"type\":\"card\",\"data\":{\"card_name\":\"Core\",\"col\":4}},{\"id\":\"Ufc3jycgy9\",\"type\":\"card\",\"data\":{\"card_name\":\"Printing\",\"col\":4}},{\"id\":\"89bSNzv3Yh\",\"type\":\"card\",\"data\":{\"card_name\":\"Workflow\",\"col\":4}}]", - "creation": "2022-01-27 13:14:47.349433", - "custom_blocks": [], - "docstatus": 0, - "doctype": "Workspace", - "for_user": "", - "hide_custom": 0, - "icon": "setting", - "idx": 0, - "is_hidden": 0, - "label": "ERPNext Settings", - "links": [ - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Import Data", - "link_count": 0, - "link_to": "Data Import", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Export Data", - "link_count": 0, - "link_to": "Data Export", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Bulk Update", - "link_count": 0, - "link_to": "Bulk Update", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Download Backups", - "link_count": 0, - "link_to": "backups", - "link_type": "Page", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Deleted Documents", - "link_count": 0, - "link_to": "Deleted Document", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Email / Notifications", - "link_count": 0, - "onboard": 0, - "type": "Card Break" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Email Account", - "link_count": 0, - "link_to": "Email Account", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Email Domain", - "link_count": 0, - "link_to": "Email Domain", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Notification", - "link_count": 0, - "link_to": "Notification", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Email Template", - "link_count": 0, - "link_to": "Email Template", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Auto Email Report", - "link_count": 0, - "link_to": "Auto Email Report", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Newsletter", - "link_count": 0, - "link_to": "Newsletter", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Notification Settings", - "link_count": 0, - "link_to": "Notification Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Website", - "link_count": 0, - "onboard": 0, - "type": "Card Break" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Website Settings", - "link_count": 0, - "link_to": "Website Settings", - "link_type": "DocType", - "onboard": 1, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Website Theme", - "link_count": 0, - "link_to": "Website Theme", - "link_type": "DocType", - "onboard": 1, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Website Script", - "link_count": 0, - "link_to": "Website Script", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "About Us Settings", - "link_count": 0, - "link_to": "About Us Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Contact Us Settings", - "link_count": 0, - "link_to": "Contact Us Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Printing", - "link_count": 0, - "onboard": 0, - "type": "Card Break" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Print Format Builder", - "link_count": 0, - "link_to": "print-format-builder", - "link_type": "Page", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Print Settings", - "link_count": 0, - "link_to": "Print Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Print Format", - "link_count": 0, - "link_to": "Print Format", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Print Style", - "link_count": 0, - "link_to": "Print Style", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Workflow", - "link_count": 0, - "onboard": 0, - "type": "Card Break" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Workflow", - "link_count": 0, - "link_to": "Workflow", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Workflow State", - "link_count": 0, - "link_to": "Workflow State", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Workflow Action", - "link_count": 0, - "link_to": "Workflow Action", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Core", - "link_count": 3, - "onboard": 0, - "type": "Card Break" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "System Settings", - "link_count": 0, - "link_to": "System Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Domain Settings", - "link_count": 0, - "link_to": "Domain Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Global Defaults", - "link_count": 0, - "link_to": "Global Defaults", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Module Settings", - "link_count": 8, - "onboard": 0, - "type": "Card Break" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Accounts Settings", - "link_count": 0, - "link_to": "Accounts Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Stock Settings", - "link_count": 0, - "link_to": "Stock Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Selling Settings", - "link_count": 0, - "link_to": "Selling Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Buying Settings", - "link_count": 0, - "link_to": "Buying Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Manufacturing Settings", - "link_count": 0, - "link_to": "Manufacturing Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "CRM Settings", - "link_count": 0, - "link_to": "CRM Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Projects Settings", - "link_count": 0, - "link_to": "Projects Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Support Settings", - "link_count": 0, - "link_to": "Support Settings", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - } - ], - "modified": "2023-05-24 14:47:25.356531", - "modified_by": "Administrator", - "module": "Setup", - "name": "ERPNext Settings", - "number_cards": [], - "owner": "Administrator", - "parent_page": "", - "public": 1, - "quick_lists": [], - "restrict_to_domain": "", - "roles": [], - "sequence_id": 19.0, - "shortcuts": [ - { - "color": "Grey", - "doc_view": "List", - "label": "Print Settings", - "link_to": "Print Settings", - "type": "DocType" - }, - { - "color": "Grey", - "doc_view": "List", - "label": "System Settings", - "link_to": "System Settings", - "type": "DocType" - }, - { - "icon": "accounting", - "label": "Accounts Settings", - "link_to": "Accounts Settings", - "type": "DocType" - }, - { - "color": "Grey", - "doc_view": "List", - "label": "Global Defaults", - "link_to": "Global Defaults", - "type": "DocType" - }, - { - "icon": "stock", - "label": "Stock Settings", - "link_to": "Stock Settings", - "type": "DocType" - }, - { - "icon": "sell", - "label": "Selling Settings", - "link_to": "Selling Settings", - "type": "DocType" - }, - { - "icon": "buying", - "label": "Buying Settings", - "link_to": "Buying Settings", - "type": "DocType" - } - ], - "title": "ERPNext Settings" - } \ No newline at end of file diff --git a/erpnext/setup/workspace/settings/settings.json b/erpnext/setup/workspace/settings/settings.json new file mode 100644 index 00000000000..5d95ee5efb6 --- /dev/null +++ b/erpnext/setup/workspace/settings/settings.json @@ -0,0 +1,500 @@ +{ + "charts": [], + "content": "[{\"id\":\"NO5yYHJopc\",\"type\":\"header\",\"data\":{\"text\":\"Your Shortcuts\\n\\t\\t\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\",\"col\":12}},{\"id\":\"CDxIM-WuZ9\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"System Settings\",\"col\":3}},{\"id\":\"-Uh7DKJNJX\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Accounts Settings\",\"col\":3}},{\"id\":\"K9ST9xcDXh\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Stock Settings\",\"col\":3}},{\"id\":\"27IdVHVQMb\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Selling Settings\",\"col\":3}},{\"id\":\"Rwp5zff88b\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Buying Settings\",\"col\":3}},{\"id\":\"hkfnQ2sevf\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Global Defaults\",\"col\":3}},{\"id\":\"jjxI_PDawD\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Print Settings\",\"col\":3}},{\"id\":\"R3CoYYFXye\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"yynbm1J_VO\",\"type\":\"header\",\"data\":{\"text\":\"Settings\",\"col\":12}},{\"id\":\"KDCv2MvSg3\",\"type\":\"card\",\"data\":{\"card_name\":\"Module Settings\",\"col\":4}},{\"id\":\"Q0_bqT7cxQ\",\"type\":\"card\",\"data\":{\"card_name\":\"Email / Notifications\",\"col\":4}},{\"id\":\"UnqK5haBnh\",\"type\":\"card\",\"data\":{\"card_name\":\"Website\",\"col\":4}},{\"id\":\"kp7u1H5hCd\",\"type\":\"card\",\"data\":{\"card_name\":\"Core\",\"col\":4}},{\"id\":\"Ufc3jycgy9\",\"type\":\"card\",\"data\":{\"card_name\":\"Printing\",\"col\":4}},{\"id\":\"89bSNzv3Yh\",\"type\":\"card\",\"data\":{\"card_name\":\"Workflow\",\"col\":4}}]", + "creation": "2022-01-27 13:14:47.349433", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "setting", + "idx": 0, + "is_hidden": 0, + "label": "Settings", + "links": [ + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Import Data", + "link_count": 0, + "link_to": "Data Import", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Export Data", + "link_count": 0, + "link_to": "Data Export", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Bulk Update", + "link_count": 0, + "link_to": "Bulk Update", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Download Backups", + "link_count": 0, + "link_to": "backups", + "link_type": "Page", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Deleted Documents", + "link_count": 0, + "link_to": "Deleted Document", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Email / Notifications", + "link_count": 0, + "onboard": 0, + "type": "Card Break" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Email Account", + "link_count": 0, + "link_to": "Email Account", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Email Domain", + "link_count": 0, + "link_to": "Email Domain", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Notification", + "link_count": 0, + "link_to": "Notification", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Email Template", + "link_count": 0, + "link_to": "Email Template", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Auto Email Report", + "link_count": 0, + "link_to": "Auto Email Report", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Newsletter", + "link_count": 0, + "link_to": "Newsletter", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Notification Settings", + "link_count": 0, + "link_to": "Notification Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Website", + "link_count": 0, + "onboard": 0, + "type": "Card Break" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Website Settings", + "link_count": 0, + "link_to": "Website Settings", + "link_type": "DocType", + "onboard": 1, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Website Theme", + "link_count": 0, + "link_to": "Website Theme", + "link_type": "DocType", + "onboard": 1, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Website Script", + "link_count": 0, + "link_to": "Website Script", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "About Us Settings", + "link_count": 0, + "link_to": "About Us Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Contact Us Settings", + "link_count": 0, + "link_to": "Contact Us Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Printing", + "link_count": 0, + "onboard": 0, + "type": "Card Break" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Print Format Builder", + "link_count": 0, + "link_to": "print-format-builder", + "link_type": "Page", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Print Settings", + "link_count": 0, + "link_to": "Print Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Print Format", + "link_count": 0, + "link_to": "Print Format", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Print Style", + "link_count": 0, + "link_to": "Print Style", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Workflow", + "link_count": 0, + "onboard": 0, + "type": "Card Break" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Workflow", + "link_count": 0, + "link_to": "Workflow", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Workflow State", + "link_count": 0, + "link_to": "Workflow State", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Workflow Action", + "link_count": 0, + "link_to": "Workflow Action", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Core", + "link_count": 3, + "onboard": 0, + "type": "Card Break" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "System Settings", + "link_count": 0, + "link_to": "System Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Domain Settings", + "link_count": 0, + "link_to": "Domain Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Global Defaults", + "link_count": 0, + "link_to": "Global Defaults", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Module Settings", + "link_count": 8, + "onboard": 0, + "type": "Card Break" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Accounts Settings", + "link_count": 0, + "link_to": "Accounts Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Stock Settings", + "link_count": 0, + "link_to": "Stock Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Selling Settings", + "link_count": 0, + "link_to": "Selling Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Buying Settings", + "link_count": 0, + "link_to": "Buying Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Manufacturing Settings", + "link_count": 0, + "link_to": "Manufacturing Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "CRM Settings", + "link_count": 0, + "link_to": "CRM Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Projects Settings", + "link_count": 0, + "link_to": "Projects Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Support Settings", + "link_count": 0, + "link_to": "Support Settings", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + } + ], + "modified": "2024-01-02 15:17:30.421357", + "modified_by": "Administrator", + "module": "Setup", + "name": "Settings", + "number_cards": [], + "owner": "Administrator", + "parent_page": "", + "public": 1, + "quick_lists": [], + "restrict_to_domain": "", + "roles": [], + "sequence_id": 19.0, + "shortcuts": [ + { + "color": "Grey", + "doc_view": "List", + "label": "Print Settings", + "link_to": "Print Settings", + "type": "DocType" + }, + { + "color": "Grey", + "doc_view": "List", + "label": "System Settings", + "link_to": "System Settings", + "type": "DocType" + }, + { + "icon": "accounting", + "label": "Accounts Settings", + "link_to": "Accounts Settings", + "type": "DocType" + }, + { + "color": "Grey", + "doc_view": "List", + "label": "Global Defaults", + "link_to": "Global Defaults", + "type": "DocType" + }, + { + "icon": "stock", + "label": "Stock Settings", + "link_to": "Stock Settings", + "type": "DocType" + }, + { + "icon": "sell", + "label": "Selling Settings", + "link_to": "Selling Settings", + "type": "DocType" + }, + { + "icon": "buying", + "label": "Buying Settings", + "link_to": "Buying Settings", + "type": "DocType" + } + ], + "title": "Settings" +} \ No newline at end of file diff --git a/erpnext/stock/__init__.py b/erpnext/stock/__init__.py index 45bf012be85..bd16d69df73 100644 --- a/erpnext/stock/__init__.py +++ b/erpnext/stock/__init__.py @@ -59,7 +59,7 @@ def get_warehouse_account(warehouse, warehouse_account=None): else: from frappe.utils.nestedset import rebuild_tree - rebuild_tree("Warehouse", "parent_warehouse") + rebuild_tree("Warehouse") else: account = frappe.db.sql( """ diff --git a/erpnext/stock/doctype/bin/bin.json b/erpnext/stock/doctype/bin/bin.json index 312470d50ea..10d95113574 100644 --- a/erpnext/stock/doctype/bin/bin.json +++ b/erpnext/stock/doctype/bin/bin.json @@ -52,8 +52,7 @@ "oldfieldtype": "Link", "options": "Item", "read_only": 1, - "reqd": 1, - "search_index": 1 + "reqd": 1 }, { "default": "0.00", diff --git a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py index 7db8522f639..f71d21dd0b8 100644 --- a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py +++ b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py @@ -149,6 +149,4 @@ def prepare_closing_stock_balance(name): doc.db_set("status", "Completed") except Exception as e: doc.db_set("status", "Failed") - traceback = frappe.get_traceback() - - frappe.log_error("Closing Stock Balance Failed", traceback, doc.doctype, doc.name) + doc.log_error(title="Closing Stock Balance Failed") diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index 675f8e9158a..7d7b0cd4769 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -311,11 +311,13 @@ class DeliveryNote(SellingController): ) def set_serial_and_batch_bundle_from_pick_list(self): + from erpnext.stock.serial_batch_bundle import SerialBatchCreation + if not self.pick_list: return for item in self.items: - if item.pick_list_item: + if item.pick_list_item and not item.serial_and_batch_bundle: filters = { "item_code": item.item_code, "voucher_type": "Pick List", @@ -326,7 +328,17 @@ class DeliveryNote(SellingController): bundle_id = frappe.db.get_value("Serial and Batch Bundle", filters, "name") if bundle_id: - item.serial_and_batch_bundle = bundle_id + cls_obj = SerialBatchCreation( + { + "type_of_transaction": "Outward", + "serial_and_batch_bundle": bundle_id, + "item_code": item.get("item_code"), + } + ) + + cls_obj.duplicate_package() + + item.serial_and_batch_bundle = cls_obj.serial_and_batch_bundle def validate_proj_cust(self): """check for does customer belong to same project as entered..""" @@ -408,6 +420,7 @@ class DeliveryNote(SellingController): self.update_stock_ledger() self.cancel_packing_slips() + self.update_pick_list_status() self.make_gl_entries_on_cancel() self.repost_future_sle_and_gle() @@ -418,6 +431,8 @@ class DeliveryNote(SellingController): "Serial and Batch Bundle", ) + self.delete_auto_created_batches() + def update_stock_reservation_entries(self) -> None: """Updates Delivered Qty in Stock Reservation Entries.""" diff --git a/erpnext/stock/doctype/delivery_note/patches/drop_unused_return_against_index.py b/erpnext/stock/doctype/delivery_note/patches/drop_unused_return_against_index.py index 8fe4ffb58f1..cc29e67fa7b 100644 --- a/erpnext/stock/doctype/delivery_note/patches/drop_unused_return_against_index.py +++ b/erpnext/stock/doctype/delivery_note/patches/drop_unused_return_against_index.py @@ -1,15 +1,27 @@ +import click import frappe +UNUSED_INDEXES = [ + ("Delivery Note", ["customer", "is_return", "return_against"]), + ("Sales Invoice", ["customer", "is_return", "return_against"]), + ("Purchase Invoice", ["supplier", "is_return", "return_against"]), + ("Purchase Receipt", ["supplier", "is_return", "return_against"]), +] + def execute(): - """Drop unused return_against index""" + for doctype, index_fields in UNUSED_INDEXES: + table = f"tab{doctype}" + index_name = frappe.db.get_index_name(index_fields) + drop_index_if_exists(table, index_name) + + +def drop_index_if_exists(table: str, index: str): + if not frappe.db.has_index(table, index): + return try: - frappe.db.sql_ddl( - "ALTER TABLE `tabDelivery Note` DROP INDEX `customer_is_return_return_against_index`" - ) - frappe.db.sql_ddl( - "ALTER TABLE `tabPurchase Receipt` DROP INDEX `supplier_is_return_return_against_index`" - ) + frappe.db.sql_ddl(f"ALTER TABLE `{table}` DROP INDEX `{index}`") + click.echo(f"✓ dropped {index} index from {table}") except Exception: - frappe.log_error("Failed to drop unused index") + frappe.log_error("Failed to drop index") diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py index da8ee022f9f..dae42895edb 100644 --- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py @@ -1425,6 +1425,118 @@ class TestDeliveryNote(FrappeTestCase): self.assertAlmostEqual(dn1.items[0].incoming_rate, 250.0) + def test_sales_return_valuation_for_moving_average_case2(self): + # Make DN return + # Make Bakcdated Purchase Receipt and check DN return valuation rate + # The rate should be recalculate based on the backdated purchase receipt + frappe.flags.print_debug_messages = False + item_code = make_item( + "_Test Item Sales Return with MA Case2", + {"is_stock_item": 1, "valuation_method": "Moving Average", "stock_uom": "Nos"}, + ).name + + make_stock_entry( + item_code=item_code, + target="_Test Warehouse - _TC", + qty=5, + basic_rate=100.0, + posting_date=add_days(nowdate(), -5), + ) + + dn = create_delivery_note( + item_code=item_code, + warehouse="_Test Warehouse - _TC", + qty=5, + rate=500, + posting_date=add_days(nowdate(), -4), + ) + + returned_dn = create_delivery_note( + is_return=1, + item_code=item_code, + return_against=dn.name, + qty=-5, + rate=500, + company=dn.company, + warehouse="_Test Warehouse - _TC", + expense_account="Cost of Goods Sold - _TC", + cost_center="Main - _TC", + posting_date=add_days(nowdate(), -1), + ) + + self.assertAlmostEqual(returned_dn.items[0].incoming_rate, 100.0) + + # Make backdated purchase receipt + make_stock_entry( + item_code=item_code, + target="_Test Warehouse - _TC", + qty=5, + basic_rate=200.0, + posting_date=add_days(nowdate(), -3), + ) + + returned_dn.reload() + self.assertAlmostEqual(returned_dn.items[0].incoming_rate, 200.0) + + def test_batch_with_non_stock_uom(self): + frappe.db.set_single_value( + "Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", 1 + ) + + item = make_item( + properties={ + "has_batch_no": 1, + "create_new_batch": 1, + "batch_number_series": "TESTBATCH.#####", + "stock_uom": "Nos", + } + ) + if not frappe.db.exists("UOM Conversion Detail", {"parent": item.name, "uom": "Kg"}): + item.append("uoms", {"uom": "Kg", "conversion_factor": 5.0}) + item.save() + + item_code = item.name + + make_stock_entry(item_code=item_code, target="_Test Warehouse - _TC", qty=5, basic_rate=100.0) + dn = create_delivery_note( + item_code=item_code, qty=1, rate=500, warehouse="_Test Warehouse - _TC", do_not_save=True + ) + dn.items[0].uom = "Kg" + dn.items[0].conversion_factor = 5.0 + + dn.save() + dn.submit() + + self.assertEqual(dn.items[0].stock_qty, 5.0) + voucher_detail_no = dn.items[0].name + delivered_batch_qty = frappe.db.get_value( + "Serial and Batch Bundle", {"voucher_detail_no": voucher_detail_no}, "total_qty" + ) + self.assertEqual(abs(delivered_batch_qty), 5.0) + + frappe.db.set_single_value( + "Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", 0 + ) + + def test_internal_transfer_for_non_stock_item(self): + from erpnext.selling.doctype.customer.test_customer import create_internal_customer + from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note + + item = make_item(properties={"is_stock_item": 0}).name + warehouse = "_Test Warehouse - _TC" + target = "Stores - _TC" + company = "_Test Company" + customer = create_internal_customer(represents_company=company) + rate = 100 + + so = make_sales_order(item_code=item, qty=1, rate=rate, customer=customer, warehouse=warehouse) + dn = make_delivery_note(so.name) + dn.items[0].target_warehouse = target + dn.save().submit() + + self.assertEqual(so.items[0].rate, rate) + self.assertEqual(dn.items[0].rate, so.items[0].rate) + def create_delivery_note(**args): dn = frappe.new_doc("Delivery Note") diff --git a/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py b/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py index 60624d4164b..d5eef5ad225 100644 --- a/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py +++ b/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py @@ -305,7 +305,7 @@ def get_evaluated_inventory_dimension(doc, sl_dict, parent_doc=None): dimensions = get_document_wise_inventory_dimensions(doc.doctype) filter_dimensions = [] for row in dimensions: - if row.type_of_transaction: + if row.type_of_transaction and row.type_of_transaction != "Both": if ( row.type_of_transaction == "Inward" if doc.docstatus == 1 diff --git a/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py b/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py index 33394e5a115..361c2f8cd98 100644 --- a/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py +++ b/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py @@ -429,6 +429,14 @@ class TestInventoryDimension(FrappeTestCase): ) warehouse = create_warehouse("Negative Stock Warehouse") + + doc = make_stock_entry(item_code=item_code, source=warehouse, qty=10, do_not_submit=True) + doc.items[0].inv_site = "Site 1" + self.assertRaises(frappe.ValidationError, doc.submit) + doc.reload() + if doc.docstatus == 1: + doc.cancel() + doc = make_stock_entry(item_code=item_code, target=warehouse, qty=10, do_not_submit=True) doc.items[0].to_inv_site = "Site 1" diff --git a/erpnext/stock/doctype/item/item_list.js b/erpnext/stock/doctype/item/item_list.js index 22d38e88935..1b57102d716 100644 --- a/erpnext/stock/doctype/item/item_list.js +++ b/erpnext/stock/doctype/item/item_list.js @@ -1,6 +1,6 @@ frappe.listview_settings['Item'] = { add_fields: ["item_name", "stock_uom", "item_group", "image", - "has_variants", "end_of_life", "disabled"], + "has_variants", "end_of_life", "disabled", "variant_of"], filters: [["disabled", "=", "0"]], get_indicator: function(doc) { diff --git a/erpnext/stock/doctype/pick_list/pick_list.js b/erpnext/stock/doctype/pick_list/pick_list.js index 7cd171ea92e..afd6ce81386 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.js +++ b/erpnext/stock/doctype/pick_list/pick_list.js @@ -283,6 +283,7 @@ frappe.ui.form.on('Pick List Item', { }); } }, + uom: (frm, cdt, cdn) => { let row = frappe.get_doc(cdt, cdn); if (row.uom) { @@ -291,13 +292,50 @@ frappe.ui.form.on('Pick List Item', { }); } }, + qty: (frm, cdt, cdn) => { let row = frappe.get_doc(cdt, cdn); frappe.model.set_value(cdt, cdn, 'stock_qty', row.qty * row.conversion_factor); }, + conversion_factor: (frm, cdt, cdn) => { let row = frappe.get_doc(cdt, cdn); frappe.model.set_value(cdt, cdn, 'stock_qty', row.qty * row.conversion_factor); + }, + + pick_serial_and_batch(frm, cdt, cdn) { + let item = locals[cdt][cdn]; + let path = "assets/erpnext/js/utils/serial_no_batch_selector.js"; + + frappe.db.get_value("Item", item.item_code, ["has_batch_no", "has_serial_no"]) + .then((r) => { + if (r.message && (r.message.has_batch_no || r.message.has_serial_no)) { + item.has_serial_no = r.message.has_serial_no; + item.has_batch_no = r.message.has_batch_no; + item.type_of_transaction = item.qty > 0 ? "Outward":"Inward"; + + item.title = item.has_serial_no ? + __("Select Serial No") : __("Select Batch No"); + + if (item.has_serial_no && item.has_batch_no) { + item.title = __("Select Serial and Batch"); + } + + frappe.require(path, function() { + new erpnext.SerialBatchPackageSelector( + frm, item, (r) => { + if (r) { + let qty = Math.abs(r.total_qty); + frappe.model.set_value(item.doctype, item.name, { + "serial_and_batch_bundle": r.name, + "qty": qty + }); + } + } + ); + }); + } + }); } }); diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py index 545e45f3d82..758448af797 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.py +++ b/erpnext/stock/doctype/pick_list/pick_list.py @@ -21,6 +21,7 @@ from erpnext.selling.doctype.sales_order.sales_order import ( ) from erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle import ( get_auto_batch_nos, + get_picked_serial_nos, ) from erpnext.stock.get_item_details import get_conversion_factor from erpnext.stock.serial_batch_bundle import SerialBatchCreation @@ -167,6 +168,9 @@ class PickList(Document): "Serial and Batch Bundle", row.serial_and_batch_bundle ).set_serial_and_batch_values(self, row) + def on_trash(self): + self.remove_serial_and_batch_bundle() + def remove_serial_and_batch_bundle(self): for row in self.locations: if row.serial_and_batch_bundle: @@ -723,13 +727,14 @@ def get_available_item_locations( def get_available_item_locations_for_serialized_item( item_code, from_warehouses, required_qty, company, total_picked_qty=0 ): + picked_serial_nos = get_picked_serial_nos(item_code, from_warehouses) + sn = frappe.qb.DocType("Serial No") query = ( frappe.qb.from_(sn) .select(sn.name, sn.warehouse) .where((sn.item_code == item_code) & (sn.company == company)) .orderby(sn.creation) - .limit(cint(required_qty + total_picked_qty)) ) if from_warehouses: @@ -742,6 +747,9 @@ def get_available_item_locations_for_serialized_item( warehouse_serial_nos_map = frappe._dict() picked_qty = required_qty for serial_no, warehouse in serial_nos: + if serial_no in picked_serial_nos: + continue + if picked_qty <= 0: break @@ -786,7 +794,8 @@ def get_available_item_locations_for_batched_item( { "item_code": item_code, "warehouse": from_warehouses, - "qty": required_qty + total_picked_qty, + "qty": required_qty, + "is_pick_list": True, } ) ) @@ -1050,7 +1059,7 @@ def get_pending_work_orders(doctype, txt, searchfield, start, page_length, filte @frappe.whitelist() def target_document_exists(pick_list_name, purpose): if purpose == "Delivery": - return frappe.db.exists("Delivery Note", {"pick_list": pick_list_name}) + return frappe.db.exists("Delivery Note", {"pick_list": pick_list_name, "docstatus": 1}) return stock_entry_exists(pick_list_name) diff --git a/erpnext/stock/doctype/pick_list/test_pick_list.py b/erpnext/stock/doctype/pick_list/test_pick_list.py index 56c44bfd257..322b0b46baa 100644 --- a/erpnext/stock/doctype/pick_list/test_pick_list.py +++ b/erpnext/stock/doctype/pick_list/test_pick_list.py @@ -644,6 +644,122 @@ class TestPickList(FrappeTestCase): so.reload() self.assertEqual(so.per_picked, 50) + def test_picklist_for_batch_item(self): + warehouse = "_Test Warehouse - _TC" + item = make_item( + properties={"is_stock_item": 1, "has_batch_no": 1, "batch_no_series": "PICKLT-.######"} + ).name + + # create batch + for batch_id in ["PICKLT-000001", "PICKLT-000002"]: + if not frappe.db.exists("Batch", batch_id): + frappe.get_doc( + { + "doctype": "Batch", + "batch_id": batch_id, + "item": item, + } + ).insert() + + make_stock_entry( + item=item, + to_warehouse=warehouse, + qty=50, + basic_rate=100, + batches=frappe._dict({"PICKLT-000001": 30, "PICKLT-000002": 20}), + ) + + so = make_sales_order(item_code=item, qty=25.0, rate=100) + pl = create_pick_list(so.name) + # pick half the qty + for loc in pl.locations: + self.assertEqual(loc.qty, 25.0) + self.assertTrue(loc.serial_and_batch_bundle) + + data = frappe.get_all( + "Serial and Batch Entry", + fields=["qty", "batch_no"], + filters={"parent": loc.serial_and_batch_bundle}, + ) + + for d in data: + self.assertEqual(d.batch_no, "PICKLT-000001") + self.assertEqual(d.qty, 25.0 * -1) + + pl.save() + pl.submit() + + so1 = make_sales_order(item_code=item, qty=10.0, rate=100) + pl = create_pick_list(so1.name) + # pick half the qty + for loc in pl.locations: + self.assertEqual(loc.qty, 10.0) + self.assertTrue(loc.serial_and_batch_bundle) + + data = frappe.get_all( + "Serial and Batch Entry", + fields=["qty", "batch_no"], + filters={"parent": loc.serial_and_batch_bundle}, + ) + + for d in data: + self.assertTrue(d.batch_no in ["PICKLT-000001", "PICKLT-000002"]) + if d.batch_no == "PICKLT-000001": + self.assertEqual(d.qty, 5.0 * -1) + elif d.batch_no == "PICKLT-000002": + self.assertEqual(d.qty, 5.0 * -1) + + pl.save() + pl.submit() + pl.cancel() + + def test_picklist_for_serial_item(self): + warehouse = "_Test Warehouse - _TC" + item = make_item( + properties={"is_stock_item": 1, "has_serial_no": 1, "serial_no_series": "SN-PICKLT-.######"} + ).name + + make_stock_entry(item=item, to_warehouse=warehouse, qty=50, basic_rate=100) + + so = make_sales_order(item_code=item, qty=25.0, rate=100) + pl = create_pick_list(so.name) + picked_serial_nos = [] + # pick half the qty + for loc in pl.locations: + self.assertEqual(loc.qty, 25.0) + self.assertTrue(loc.serial_and_batch_bundle) + + data = frappe.get_all( + "Serial and Batch Entry", fields=["serial_no"], filters={"parent": loc.serial_and_batch_bundle} + ) + + picked_serial_nos = [d.serial_no for d in data] + self.assertEqual(len(picked_serial_nos), 25) + + pl.save() + pl.submit() + + so1 = make_sales_order(item_code=item, qty=10.0, rate=100) + pl = create_pick_list(so1.name) + # pick half the qty + for loc in pl.locations: + self.assertEqual(loc.qty, 10.0) + self.assertTrue(loc.serial_and_batch_bundle) + + data = frappe.get_all( + "Serial and Batch Entry", + fields=["qty", "batch_no"], + filters={"parent": loc.serial_and_batch_bundle}, + ) + + self.assertEqual(len(data), 10) + for d in data: + self.assertTrue(d.serial_no not in picked_serial_nos) + + pl.save() + pl.submit() + pl.cancel() + def test_picklist_with_bundles(self): warehouse = "_Test Warehouse - _TC" @@ -732,7 +848,7 @@ class TestPickList(FrappeTestCase): dn.cancel() pl.reload() - self.assertEqual(pl.status, "Completed") + self.assertEqual(pl.status, "Open") pl.cancel() pl.reload() diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js index 6c9d3392e36..2cbccb0774c 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js @@ -88,6 +88,20 @@ frappe.ui.form.on("Purchase Receipt", { }, __('Create')); } + if (frm.doc.docstatus === 0) { + if (!frm.doc.is_return) { + frappe.db.get_single_value("Buying Settings", "maintain_same_rate").then((value) => { + if (value) { + frm.doc.items.forEach((item) => { + frm.fields_dict.items.grid.update_docfield_property( + "rate", "read_only", (item.purchase_order && item.purchase_order_item) + ); + }); + } + }); + } + } + frm.events.add_custom_buttons(frm); }, diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index 10d9eaa3dba..c7e36e9904f 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -1124,8 +1124,39 @@ def get_item_wise_returned_qty(pr_doc): ) +def merge_taxes(source_taxes, target_doc): + from erpnext.accounts.doctype.pos_invoice_merge_log.pos_invoice_merge_log import ( + update_item_wise_tax_detail, + ) + + existing_taxes = target_doc.get("taxes") or [] + idx = 1 + for tax in source_taxes: + found = False + for t in existing_taxes: + if t.account_head == tax.account_head and t.cost_center == tax.cost_center: + t.tax_amount = flt(t.tax_amount) + flt(tax.tax_amount_after_discount_amount) + t.base_tax_amount = flt(t.base_tax_amount) + flt(tax.base_tax_amount_after_discount_amount) + update_item_wise_tax_detail(t, tax) + found = True + + if not found: + tax.charge_type = "Actual" + tax.idx = idx + idx += 1 + tax.included_in_print_rate = 0 + tax.dont_recompute_tax = 1 + tax.row_id = "" + tax.tax_amount = tax.tax_amount_after_discount_amount + tax.base_tax_amount = tax.base_tax_amount_after_discount_amount + tax.item_wise_tax_detail = tax.item_wise_tax_detail + existing_taxes.append(tax) + + target_doc.set("taxes", existing_taxes) + + @frappe.whitelist() -def make_purchase_invoice(source_name, target_doc=None): +def make_purchase_invoice(source_name, target_doc=None, args=None): from erpnext.accounts.party import get_payment_terms_template doc = frappe.get_doc("Purchase Receipt", source_name) @@ -1142,6 +1173,10 @@ def make_purchase_invoice(source_name, target_doc=None): ) doc.run_method("onload") doc.run_method("set_missing_values") + + if args and args.get("merge_taxes"): + merge_taxes(source.get("taxes") or [], doc) + doc.run_method("calculate_taxes_and_totals") doc.set_payment_schedule() @@ -1205,7 +1240,11 @@ def make_purchase_invoice(source_name, target_doc=None): if not doc.get("is_return") else get_pending_qty(d)[0] > 0, }, - "Purchase Taxes and Charges": {"doctype": "Purchase Taxes and Charges", "add_if_empty": True}, + "Purchase Taxes and Charges": { + "doctype": "Purchase Taxes and Charges", + "add_if_empty": True, + "ignore": args.get("merge_taxes") if args else 0, + }, }, target_doc, set_missing_values, diff --git a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json index 7344d2a599b..9bd692ad618 100644 --- a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json +++ b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json @@ -359,7 +359,6 @@ "oldfieldtype": "Currency", "options": "currency", "print_width": "100px", - "read_only_depends_on": "eval: (!parent.is_return && doc.purchase_order && doc.purchase_order_item)", "width": "100px" }, { @@ -1104,7 +1103,7 @@ "idx": 1, "istable": 1, "links": [], - "modified": "2023-11-30 16:12:02.364608", + "modified": "2023-12-25 22:32:09.801965", "modified_by": "Administrator", "module": "Stock", "name": "Purchase Receipt Item", diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py index 97ada06e1dd..79b8ee30cfe 100644 --- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py +++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py @@ -294,7 +294,7 @@ def repost(doc): raise frappe.db.rollback() - traceback = frappe.get_traceback() + traceback = frappe.get_traceback(with_context=True) doc.log_error("Unable to repost item valuation") message = frappe.message_log.pop() if frappe.message_log else "" diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py index 37916e21c89..eede9288270 100644 --- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py +++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py @@ -85,6 +85,8 @@ class SerialandBatchBundle(Document): # end: auto-generated types def validate(self): + self.reset_serial_batch_bundle() + self.set_batch_no() self.validate_serial_and_batch_no() self.validate_duplicate_serial_and_batch_no() self.validate_voucher_no() @@ -99,6 +101,35 @@ class SerialandBatchBundle(Document): self.set_incoming_rate() self.calculate_qty_and_amount() + def reset_serial_batch_bundle(self): + if self.is_new() and self.amended_from: + for field in ["is_cancelled", "is_rejected"]: + if self.get(field): + self.set(field, 0) + + if self.voucher_detail_no: + self.voucher_detail_no = None + + def set_batch_no(self): + if self.has_serial_no and self.has_batch_no: + serial_nos = [d.serial_no for d in self.entries if d.serial_no] + has_no_batch = any(not d.batch_no for d in self.entries) + if not has_no_batch: + return + + serial_no_batch = frappe._dict( + frappe.get_all( + "Serial No", + filters={"name": ("in", serial_nos)}, + fields=["name", "batch_no"], + as_list=True, + ) + ) + + for row in self.entries: + if not row.batch_no: + row.batch_no = serial_no_batch.get(row.serial_no) + def validate_serial_nos_inventory(self): if not (self.has_serial_no and self.type_of_transaction == "Outward"): return @@ -462,7 +493,11 @@ class SerialandBatchBundle(Document): if row.get("doctype") in ["Subcontracting Receipt Supplied Item"]: qty_field = "consumed_qty" - if abs(abs(flt(self.total_qty, precision)) - abs(flt(row.get(qty_field), precision))) > 0.01: + qty = row.get(qty_field) + if qty_field == "qty" and row.get("stock_qty"): + qty = row.get("stock_qty") + + if abs(abs(flt(self.total_qty, precision)) - abs(flt(qty, precision))) > 0.01: self.throw_error_message( f"Total quantity {abs(flt(self.total_qty))} in the Serial and Batch Bundle {bold(self.name)} does not match with the quantity {abs(flt(row.get(qty_field)))} for the Item {bold(self.item_code)} in the {self.voucher_type} # {self.voucher_no}" ) @@ -694,19 +729,13 @@ class SerialandBatchBundle(Document): def before_cancel(self): self.delink_serial_and_batch_bundle() - self.clear_table() def delink_serial_and_batch_bundle(self): - self.voucher_no = None - sles = frappe.get_all("Stock Ledger Entry", filters={"serial_and_batch_bundle": self.name}) for sle in sles: frappe.db.set_value("Stock Ledger Entry", sle.name, "serial_and_batch_bundle", None) - def clear_table(self): - self.set("entries", []) - @property def child_table(self): if self.voucher_type == "Job Card": @@ -841,7 +870,6 @@ class SerialandBatchBundle(Document): self.validate_voucher_no_docstatus() self.delink_refernce_from_voucher() self.delink_reference_from_batch() - self.clear_table() @frappe.whitelist() def add_serial_batch(self, data): @@ -889,7 +917,11 @@ def upload_csv_file(item_code, file_path): def get_serial_batch_from_csv(item_code, file_path): - file_path = frappe.get_site_path() + file_path + if "private" in file_path: + file_path = frappe.get_site_path() + file_path + else: + file_path = frappe.get_site_path() + "/public" + file_path + serial_nos = [] batch_nos = [] @@ -915,7 +947,7 @@ def parse_csv_file_to_get_serial_batch(reader): if index == 0: has_serial_no = row[0] == "Serial No" has_batch_no = row[0] == "Batch No" - if not has_batch_no: + if not has_batch_no and len(row) > 1: has_batch_no = row[1] == "Batch No" continue @@ -1117,33 +1149,37 @@ def get_filters_for_bundle(item_code=None, docstatus=None, voucher_no=None, name @frappe.whitelist() -def add_serial_batch_ledgers(entries, child_row, doc, warehouse) -> object: +def add_serial_batch_ledgers(entries, child_row, doc, warehouse, do_not_save=False) -> object: if isinstance(child_row, str): child_row = frappe._dict(parse_json(child_row)) if isinstance(entries, str): entries = parse_json(entries) - if doc and isinstance(doc, str): - parent_doc = parse_json(doc) + parent_doc = doc + if parent_doc and isinstance(parent_doc, str): + parent_doc = parse_json(parent_doc) if frappe.db.exists("Serial and Batch Bundle", child_row.serial_and_batch_bundle): - doc = update_serial_batch_no_ledgers(entries, child_row, parent_doc, warehouse) + sb_doc = update_serial_batch_no_ledgers(entries, child_row, parent_doc, warehouse) else: - doc = create_serial_batch_no_ledgers(entries, child_row, parent_doc, warehouse) + sb_doc = create_serial_batch_no_ledgers( + entries, child_row, parent_doc, warehouse, do_not_save=do_not_save + ) - return doc + return sb_doc -def create_serial_batch_no_ledgers(entries, child_row, parent_doc, warehouse=None) -> object: +def create_serial_batch_no_ledgers( + entries, child_row, parent_doc, warehouse=None, do_not_save=False +) -> object: warehouse = warehouse or ( child_row.rejected_warehouse if child_row.is_rejected else child_row.warehouse ) - type_of_transaction = child_row.type_of_transaction + type_of_transaction = get_type_of_transaction(parent_doc, child_row) if parent_doc.get("doctype") == "Stock Entry": - type_of_transaction = "Outward" if child_row.s_warehouse else "Inward" warehouse = warehouse or child_row.s_warehouse or child_row.t_warehouse doc = frappe.get_doc( @@ -1156,6 +1192,7 @@ def create_serial_batch_no_ledgers(entries, child_row, parent_doc, warehouse=Non "type_of_transaction": type_of_transaction, "posting_date": parent_doc.get("posting_date"), "posting_time": parent_doc.get("posting_time"), + "company": parent_doc.get("company"), } ) @@ -1164,7 +1201,7 @@ def create_serial_batch_no_ledgers(entries, child_row, parent_doc, warehouse=Non doc.append( "entries", { - "qty": (row.qty or 1.0) * (1 if type_of_transaction == "Inward" else -1), + "qty": (flt(row.qty) or 1.0) * (1 if type_of_transaction == "Inward" else -1), "warehouse": warehouse, "batch_no": row.batch_no, "serial_no": row.serial_no, @@ -1173,13 +1210,30 @@ def create_serial_batch_no_ledgers(entries, child_row, parent_doc, warehouse=Non doc.save() - frappe.db.set_value(child_row.doctype, child_row.name, "serial_and_batch_bundle", doc.name) + if do_not_save: + frappe.db.set_value(child_row.doctype, child_row.name, "serial_and_batch_bundle", doc.name) frappe.msgprint(_("Serial and Batch Bundle created"), alert=True) return doc +def get_type_of_transaction(parent_doc, child_row): + type_of_transaction = child_row.type_of_transaction + if parent_doc.get("doctype") == "Stock Entry": + type_of_transaction = "Outward" if child_row.s_warehouse else "Inward" + + if not type_of_transaction: + type_of_transaction = "Outward" + if parent_doc.get("doctype") in ["Purchase Receipt", "Purchase Invoice"]: + type_of_transaction = "Inward" + + if parent_doc.get("is_return"): + type_of_transaction = "Inward" if type_of_transaction == "Outward" else "Outward" + + return type_of_transaction + + def update_serial_batch_no_ledgers(entries, child_row, parent_doc, warehouse=None) -> object: doc = frappe.get_doc("Serial and Batch Bundle", child_row.serial_and_batch_bundle) doc.voucher_detail_no = child_row.name @@ -1192,7 +1246,7 @@ def update_serial_batch_no_ledgers(entries, child_row, parent_doc, warehouse=Non doc.append( "entries", { - "qty": (d.get("qty") or 1.0) * (1 if doc.type_of_transaction == "Inward" else -1), + "qty": (flt(d.get("qty")) or 1.0) * (1 if doc.type_of_transaction == "Inward" else -1), "warehouse": warehouse or d.get("warehouse"), "batch_no": d.get("batch_no"), "serial_no": d.get("serial_no"), @@ -1206,6 +1260,25 @@ def update_serial_batch_no_ledgers(entries, child_row, parent_doc, warehouse=Non return doc +@frappe.whitelist() +def update_serial_or_batch(bundle_id, serial_no=None, batch_no=None): + if batch_no and not serial_no: + if qty := frappe.db.get_value( + "Serial and Batch Entry", {"parent": bundle_id, "batch_no": batch_no}, "qty" + ): + frappe.db.set_value( + "Serial and Batch Entry", {"parent": bundle_id, "batch_no": batch_no}, "qty", qty + 1 + ) + return + + doc = frappe.get_cached_doc("Serial and Batch Bundle", bundle_id) + if not serial_no and not batch_no: + return + + doc.append("entries", {"serial_no": serial_no, "batch_no": batch_no, "qty": 1}) + doc.save(ignore_permissions=True) + + def get_serial_and_batch_ledger(**kwargs): kwargs = frappe._dict(kwargs) @@ -1590,10 +1663,17 @@ def get_auto_batch_nos(kwargs): stock_ledgers_batches = get_stock_ledgers_batches(kwargs) pos_invoice_batches = get_reserved_batches_for_pos(kwargs) sre_reserved_batches = get_reserved_batches_for_sre(kwargs) + picked_batches = frappe._dict() + if kwargs.get("is_pick_list"): + picked_batches = get_picked_batches(kwargs) - if stock_ledgers_batches or pos_invoice_batches or sre_reserved_batches: + if stock_ledgers_batches or pos_invoice_batches or sre_reserved_batches or picked_batches: update_available_batches( - available_batches, stock_ledgers_batches, pos_invoice_batches, sre_reserved_batches + available_batches, + stock_ledgers_batches, + pos_invoice_batches, + sre_reserved_batches, + picked_batches, ) if not kwargs.consider_negative_batches: @@ -1750,6 +1830,102 @@ def get_voucher_wise_serial_batch_from_bundle(**kwargs) -> Dict[str, Dict]: return group_by_voucher +def get_picked_batches(kwargs) -> dict[str, dict]: + picked_batches = frappe._dict() + + table = frappe.qb.DocType("Serial and Batch Bundle") + child_table = frappe.qb.DocType("Serial and Batch Entry") + pick_list_table = frappe.qb.DocType("Pick List") + + query = ( + frappe.qb.from_(table) + .inner_join(child_table) + .on(table.name == child_table.parent) + .inner_join(pick_list_table) + .on(table.voucher_no == pick_list_table.name) + .select( + child_table.batch_no, + child_table.warehouse, + Sum(child_table.qty).as_("qty"), + ) + .where( + (table.docstatus != 2) + & (pick_list_table.status != "Completed") + & (table.type_of_transaction == "Outward") + & (table.is_cancelled == 0) + & (table.voucher_type == "Pick List") + & (table.voucher_no.isnotnull()) + ) + ) + + if kwargs.get("item_code"): + query = query.where(table.item_code == kwargs.get("item_code")) + + if kwargs.get("warehouse"): + if isinstance(kwargs.warehouse, list): + query = query.where(table.warehouse.isin(kwargs.warehouse)) + else: + query = query.where(table.warehouse == kwargs.get("warehouse")) + + data = query.run(as_dict=True) + for row in data: + if not row.qty: + continue + + key = (row.batch_no, row.warehouse) + if key not in picked_batches: + picked_batches[key] = frappe._dict( + { + "qty": row.qty, + "warehouse": row.warehouse, + } + ) + else: + picked_batches[key].qty += row.qty + + return picked_batches + + +def get_picked_serial_nos(item_code, warehouse=None) -> list[str]: + table = frappe.qb.DocType("Serial and Batch Bundle") + child_table = frappe.qb.DocType("Serial and Batch Entry") + pick_list_table = frappe.qb.DocType("Pick List") + + query = ( + frappe.qb.from_(table) + .inner_join(child_table) + .on(table.name == child_table.parent) + .inner_join(pick_list_table) + .on(table.voucher_no == pick_list_table.name) + .select( + child_table.serial_no, + ) + .where( + (table.docstatus != 2) + & (pick_list_table.status != "Completed") + & (table.type_of_transaction == "Outward") + & (table.is_cancelled == 0) + & (table.voucher_type == "Pick List") + & (table.voucher_no.isnotnull()) + ) + ) + + if item_code: + query = query.where(table.item_code == item_code) + + if warehouse: + if isinstance(warehouse, list): + query = query.where(table.warehouse.isin(warehouse)) + else: + query = query.where(table.warehouse == warehouse) + + data = query.run(as_dict=True) + if not data: + return [] + + return [row.serial_no for row in data if row.serial_no] + + def get_ledgers_from_serial_batch_bundle(**kwargs) -> List[frappe._dict]: bundle_table = frappe.qb.DocType("Serial and Batch Bundle") serial_batch_table = frappe.qb.DocType("Serial and Batch Entry") @@ -1888,3 +2064,8 @@ def get_stock_ledgers_batches(kwargs): @frappe.whitelist() def get_batch_no_from_serial_no(serial_no): return frappe.get_cached_value("Serial No", serial_no, "batch_no") + + +@frappe.whitelist() +def is_duplicate_serial_no(bundle_id, serial_no): + return frappe.db.exists("Serial and Batch Entry", {"parent": bundle_id, "serial_no": serial_no}) diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/test_serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/test_serial_and_batch_bundle.py index d74d657f385..19757479a5a 100644 --- a/erpnext/stock/doctype/serial_and_batch_bundle/test_serial_and_batch_bundle.py +++ b/erpnext/stock/doctype/serial_and_batch_bundle/test_serial_and_batch_bundle.py @@ -8,6 +8,9 @@ from frappe.tests.utils import FrappeTestCase from frappe.utils import add_days, add_to_date, flt, nowdate, nowtime, today from erpnext.stock.doctype.item.test_item import make_item +from erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle import ( + add_serial_batch_ledgers, +) from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry @@ -420,6 +423,64 @@ class TestSerialandBatchBundle(FrappeTestCase): ste.delete() self.assertFalse(frappe.db.exists("Serial and Batch Bundle", bundle_doc.name)) + def test_serial_and_batch_bundle_company(self): + from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt + + item = make_item( + "Test Serial and Batch Bundle Company Item", + properties={ + "has_serial_no": 1, + "serial_no_series": "TT-SER-VAL-.#####", + }, + ).name + + pr = make_purchase_receipt( + item_code=item, + warehouse="_Test Warehouse - _TC", + qty=3, + rate=500, + do_not_submit=True, + ) + + entries = [] + for serial_no in ["TT-SER-VAL-00001", "TT-SER-VAL-00002", "TT-SER-VAL-00003"]: + entries.append(frappe._dict({"serial_no": serial_no, "qty": 1})) + + if not frappe.db.exists("Serial No", serial_no): + frappe.get_doc( + { + "doctype": "Serial No", + "serial_no": serial_no, + "item_code": item, + } + ).insert(ignore_permissions=True) + + item_row = pr.items[0] + item_row.type_of_transaction = "Inward" + item_row.is_rejected = 0 + sn_doc = add_serial_batch_ledgers(entries, item_row, pr, "_Test Warehouse - _TC") + self.assertEqual(sn_doc.company, "_Test Company") + + def test_auto_cancel_serial_and_batch(self): + item_code = make_item( + properties={"has_serial_no": 1, "serial_no_series": "ATC-TT-SER-VAL-.#####"} + ).name + + se = make_stock_entry( + item_code=item_code, + target="_Test Warehouse - _TC", + qty=5, + rate=500, + ) + + bundle = se.items[0].serial_and_batch_bundle + docstatus = frappe.db.get_value("Serial and Batch Bundle", bundle, "docstatus") + self.assertEqual(docstatus, 1) + + se.cancel() + docstatus = frappe.db.get_value("Serial and Batch Bundle", bundle, "docstatus") + self.assertEqual(docstatus, 2) + def get_batch_from_bundle(bundle): from erpnext.stock.serial_batch_bundle import get_batch_nos diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js index 7af5d1aa370..8da3e8fdd09 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.js +++ b/erpnext/stock/doctype/stock_entry/stock_entry.js @@ -512,7 +512,12 @@ frappe.ui.form.on('Stock Entry', { }, callback: function(r) { if (!r.exc) { - ["actual_qty", "basic_rate"].forEach((field) => { + let fields = ["actual_qty", "basic_rate"]; + if (frm.doc.purpose == "Material Receipt") { + fields = ["actual_qty"]; + } + + fields.forEach((field) => { frappe.model.set_value(cdt, cdn, field, (r.message[field] || 0.0)); }); frm.events.calculate_basic_amount(frm, child); diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 6521394eef3..bccbc28087e 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -24,8 +24,14 @@ from frappe.utils import ( import erpnext from erpnext.accounts.general_ledger import process_gl_map +from erpnext.buying.utils import check_on_hold_or_closed_status from erpnext.controllers.taxes_and_totals import init_landed_taxes_and_totals -from erpnext.manufacturing.doctype.bom.bom import add_additional_cost, validate_bom_no +from erpnext.manufacturing.doctype.bom.bom import ( + add_additional_cost, + get_op_cost_from_sub_assemblies, + get_scrap_items_from_sub_assemblies, + validate_bom_no, +) from erpnext.setup.doctype.brand.brand import get_brand_defaults from erpnext.setup.doctype.item_group.item_group import get_item_group_defaults from erpnext.stock.doctype.batch.batch import get_batch_qty @@ -203,7 +209,6 @@ class StockEntry(StockController): self.validate_bom() self.set_process_loss_qty() self.validate_purchase_order() - self.validate_subcontracting_order() if self.purpose in ("Manufacture", "Repack"): self.mark_finished_and_scrap_items() @@ -269,6 +274,7 @@ class StockEntry(StockController): return False def on_submit(self): + self.validate_closed_subcontracting_order() self.update_stock_ledger() self.update_work_order() self.validate_subcontract_order() @@ -289,6 +295,7 @@ class StockEntry(StockController): self.set_material_request_transfer_status("Completed") def on_cancel(self): + self.validate_closed_subcontracting_order() self.update_subcontract_order_supplied_items() self.update_subcontracting_order_status() @@ -1198,19 +1205,9 @@ class StockEntry(StockController): ) ) - def validate_subcontracting_order(self): - if self.get("subcontracting_order") and self.purpose in [ - "Send to Subcontractor", - "Material Transfer", - ]: - sco_status = frappe.db.get_value("Subcontracting Order", self.subcontracting_order, "status") - - if sco_status == "Closed": - frappe.throw( - _("Cannot create Stock Entry against a closed Subcontracting Order {0}.").format( - self.subcontracting_order - ) - ) + def validate_closed_subcontracting_order(self): + if self.get("subcontracting_order"): + check_on_hold_or_closed_status("Subcontracting Order", self.subcontracting_order) def mark_finished_and_scrap_items(self): if self.purpose != "Repack" and any( @@ -1908,11 +1905,22 @@ class StockEntry(StockController): def get_bom_scrap_material(self, qty): from erpnext.manufacturing.doctype.bom.bom import get_bom_items_as_dict - # item dict = { item_code: {qty, description, stock_uom} } - item_dict = ( - get_bom_items_as_dict(self.bom_no, self.company, qty=qty, fetch_exploded=0, fetch_scrap_items=1) - or {} - ) + if ( + frappe.db.get_single_value( + "Manufacturing Settings", "set_op_cost_and_scrape_from_sub_assemblies" + ) + and self.work_order + and frappe.get_cached_value("Work Order", self.work_order, "use_multi_level_bom") + ): + item_dict = get_scrap_items_from_sub_assemblies(self.bom_no, self.company, qty) + else: + # item dict = { item_code: {qty, description, stock_uom} } + item_dict = ( + get_bom_items_as_dict( + self.bom_no, self.company, qty=qty, fetch_exploded=0, fetch_scrap_items=1 + ) + or {} + ) for item in item_dict.values(): item.from_warehouse = "" @@ -2663,6 +2671,15 @@ def get_work_order_details(work_order, company): def get_operating_cost_per_unit(work_order=None, bom_no=None): operating_cost_per_unit = 0 if work_order: + if ( + bom_no + and frappe.db.get_single_value( + "Manufacturing Settings", "set_op_cost_and_scrape_from_sub_assemblies" + ) + and frappe.get_cached_value("Work Order", work_order, "use_multi_level_bom") + ): + return get_op_cost_from_sub_assemblies(bom_no) + if not bom_no: bom_no = work_order.bom_no diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py index 6e7af6815f4..277ca01320f 100644 --- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py @@ -111,16 +111,20 @@ class StockLedgerEntry(Document): "posting_date": self.posting_date, "posting_time": self.posting_time, "company": self.company, + "sle": self.name, } ) sle = get_previous_sle(kwargs, extra_cond=extra_cond) + qty_after_transaction = 0.0 + flt_precision = cint(frappe.db.get_default("float_precision")) or 2 if sle: - flt_precision = cint(frappe.db.get_default("float_precision")) or 2 - diff = sle.qty_after_transaction + flt(self.actual_qty) - diff = flt(diff, flt_precision) - if diff < 0 and abs(diff) > 0.0001: - self.throw_validation_error(diff, dimensions) + qty_after_transaction = sle.qty_after_transaction + + diff = qty_after_transaction + flt(self.actual_qty) + diff = flt(diff, flt_precision) + if diff < 0 and abs(diff) > 0.0001: + self.throw_validation_error(diff, dimensions) def throw_validation_error(self, diff, dimensions): dimension_msg = _(", with the inventory {0}: {1}").format( diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index e8d652e2b2c..6819968394d 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -171,7 +171,7 @@ class StockReconciliation(StockController): }, ) - if item_details.has_batch_no: + elif item_details.has_batch_no: batch_nos_details = get_available_batches( frappe._dict( { @@ -228,6 +228,9 @@ class StockReconciliation(StockController): def set_new_serial_and_batch_bundle(self): for item in self.items: + if not item.qty: + continue + if item.current_serial_and_batch_bundle and not item.serial_and_batch_bundle: current_doc = frappe.get_doc("Serial and Batch Bundle", item.current_serial_and_batch_bundle) diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py index 1ec99bf9a5b..70e9fb22056 100644 --- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py @@ -865,6 +865,66 @@ class TestStockReconciliation(FrappeTestCase, StockTestMixin): sr1.load_from_db() self.assertEqual(sr1.difference_amount, 10000) + def test_make_stock_zero_for_serial_batch_item(self): + from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry + + serial_item = self.make_item( + properties={"is_stock_item": 1, "has_serial_no": 1, "serial_no_series": "DJJ.####"} + ).name + batch_item = self.make_item( + properties={ + "is_stock_item": 1, + "has_batch_no": 1, + "batch_number_series": "BDJJ.####", + "create_new_batch": 1, + } + ).name + + serial_batch_item = self.make_item( + properties={ + "is_stock_item": 1, + "has_batch_no": 1, + "batch_number_series": "ADJJ.####", + "create_new_batch": 1, + "has_serial_no": 1, + "serial_no_series": "SN-ADJJ.####", + } + ).name + + warehouse = "_Test Warehouse - _TC" + + for item_code in [serial_item, batch_item, serial_batch_item]: + make_stock_entry( + item_code=item_code, + target=warehouse, + qty=10, + basic_rate=100, + ) + + _reco = create_stock_reconciliation( + item_code=item_code, + warehouse=warehouse, + qty=0.0, + ) + + serial_batch_bundle = frappe.get_all( + "Stock Ledger Entry", + {"item_code": item_code, "warehouse": warehouse, "is_cancelled": 0, "voucher_no": _reco.name}, + "serial_and_batch_bundle", + ) + + self.assertEqual(len(serial_batch_bundle), 1) + + _reco.cancel() + + serial_batch_bundle = frappe.get_all( + "Stock Ledger Entry", + {"item_code": item_code, "warehouse": warehouse, "is_cancelled": 0, "voucher_no": _reco.name}, + "serial_and_batch_bundle", + ) + + self.assertEqual(len(serial_batch_bundle), 0) + def create_batch_item_with_batch(item_name, batch_id): batch_item_doc = create_item(item_name, is_stock_item=1) diff --git a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py index 24650fde5fc..7e03ac33571 100644 --- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py +++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py @@ -9,7 +9,7 @@ from frappe.model.document import Document from frappe.query_builder.functions import Sum from frappe.utils import cint, flt -from erpnext.stock.utils import get_or_make_bin +from erpnext.stock.utils import get_or_make_bin, get_stock_balance class StockReservationEntry(Document): @@ -151,7 +151,7 @@ class StockReservationEntry(Document): """Validates `Reserved Qty` when `Reservation Based On` is `Qty`.""" if self.reservation_based_on == "Qty": - self.validate_with_max_reserved_qty(self.reserved_qty) + self.validate_with_allowed_qty(self.reserved_qty) def auto_reserve_serial_and_batch(self, based_on: str = None) -> None: """Auto pick Serial and Batch Nos to reserve when `Reservation Based On` is `Serial and Batch`.""" @@ -324,7 +324,7 @@ class StockReservationEntry(Document): frappe.throw(msg) # Should be called after validating Serial and Batch Nos. - self.validate_with_max_reserved_qty(qty_to_be_reserved) + self.validate_with_allowed_qty(qty_to_be_reserved) self.db_set("reserved_qty", qty_to_be_reserved) def update_reserved_qty_in_voucher( @@ -429,7 +429,7 @@ class StockReservationEntry(Document): msg = _("Stock Reservation Entry cannot be updated as it has been delivered.") frappe.throw(msg) - def validate_with_max_reserved_qty(self, qty_to_be_reserved: float) -> None: + def validate_with_allowed_qty(self, qty_to_be_reserved: float) -> None: """Validates `Reserved Qty` with `Max Reserved Qty`.""" self.db_set( @@ -448,12 +448,12 @@ class StockReservationEntry(Document): ) voucher_delivered_qty = flt(delivered_qty) * flt(conversion_factor) - max_reserved_qty = min( + allowed_qty = min( self.available_qty, (self.voucher_qty - voucher_delivered_qty - total_reserved_qty) ) - if max_reserved_qty <= 0 and self.voucher_type == "Sales Order": - msg = _("Item {0} is already delivered for Sales Order {1}.").format( + if self.get("_action") != "submit" and self.voucher_type == "Sales Order" and allowed_qty <= 0: + msg = _("Item {0} is already reserved/delivered against Sales Order {1}.").format( frappe.bold(self.item_code), frappe.bold(self.voucher_no) ) @@ -463,19 +463,33 @@ class StockReservationEntry(Document): else: frappe.throw(msg) - if qty_to_be_reserved > max_reserved_qty: + if qty_to_be_reserved > allowed_qty: + actual_qty = get_stock_balance(self.item_code, self.warehouse) msg = """ - Cannot reserve more than Max Reserved Qty {0} {1}.

- The Max Reserved Qty is calculated as follows:
+ Cannot reserve more than Allowed Qty {0} {1} for Item {2} against {3} {4}.

+ The Allowed Qty is calculated as follows:
""".format( - frappe.bold(max_reserved_qty), self.stock_uom + frappe.bold(allowed_qty), + self.stock_uom, + frappe.bold(self.item_code), + self.voucher_type, + frappe.bold(self.voucher_no), + actual_qty, + actual_qty - self.available_qty, + self.available_qty, + self.voucher_qty, + voucher_delivered_qty, + total_reserved_qty, + allowed_qty, ) frappe.throw(msg) @@ -509,7 +523,6 @@ def get_available_qty_to_reserve( """Returns `Available Qty to Reserve (Actual Qty - Reserved Qty)` for Item, Warehouse and Batch combination.""" from erpnext.stock.doctype.batch.batch import get_batch_qty - from erpnext.stock.utils import get_stock_balance if batch_no: return get_batch_qty( diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py index ef9b12eca27..07b354a4df7 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.py +++ b/erpnext/stock/doctype/warehouse/warehouse.py @@ -183,15 +183,20 @@ class Warehouse(NestedSet): @frappe.whitelist() -def get_children(doctype, parent=None, company=None, is_root=False): +def get_children(doctype, parent=None, company=None, is_root=False, include_disabled=False): if is_root: parent = "" + if isinstance(include_disabled, str): + include_disabled = frappe.json.loads(include_disabled) + fields = ["name as value", "is_group as expandable"] filters = [ ["ifnull(`parent_warehouse`, '')", "=", parent], ["company", "in", (company, None, "")], ] + if frappe.db.has_column(doctype, "disabled") and not include_disabled: + filters.append(["disabled", "=", False]) return frappe.get_list(doctype, fields=fields, filters=filters, order_by="name") diff --git a/erpnext/stock/reorder_item.py b/erpnext/stock/reorder_item.py index 907560826b3..a6f52f3731d 100644 --- a/erpnext/stock/reorder_item.py +++ b/erpnext/stock/reorder_item.py @@ -141,7 +141,7 @@ def create_material_request(material_requests): exceptions_list.extend(frappe.local.message_log) frappe.local.message_log = [] else: - exceptions_list.append(frappe.get_traceback()) + exceptions_list.append(frappe.get_traceback(with_context=True)) mr.log_error("Unable to create material request") diff --git a/erpnext/stock/report/reserved_stock/reserved_stock.js b/erpnext/stock/report/reserved_stock/reserved_stock.js index 68727411d5a..2b075e22765 100644 --- a/erpnext/stock/report/reserved_stock/reserved_stock.js +++ b/erpnext/stock/report/reserved_stock/reserved_stock.js @@ -149,34 +149,36 @@ frappe.query_reports["Reserved Stock"] = { formatter: (value, row, column, data, default_formatter) => { value = default_formatter(value, row, column, data); - if (column.fieldname == "status") { - switch (data.status) { - case "Partially Reserved": - value = "" + value + ""; - break; - case "Reserved": - value = "" + value + ""; - break; - case "Partially Delivered": - value = "" + value + ""; - break; - case "Delivered": - value = "" + value + ""; - break; + if (data) { + if (column.fieldname == "status") { + switch (data.status) { + case "Partially Reserved": + value = "" + value + ""; + break; + case "Reserved": + value = "" + value + ""; + break; + case "Partially Delivered": + value = "" + value + ""; + break; + case "Delivered": + value = "" + value + ""; + break; + } } - } - else if (column.fieldname == "delivered_qty") { - if (data.delivered_qty > 0) { - if (data.reserved_qty > data.delivered_qty) { - value = "" + value + ""; + else if (column.fieldname == "delivered_qty") { + if (data.delivered_qty > 0) { + if (data.reserved_qty > data.delivered_qty) { + value = "" + value + ""; + } + else { + value = "" + value + ""; + } } else { - value = "" + value + ""; + value = "" + value + ""; } } - else { - value = "" + value + ""; - } } return value; diff --git a/erpnext/stock/serial_batch_bundle.py b/erpnext/stock/serial_batch_bundle.py index a1874b84dc7..4cfe5d817e6 100644 --- a/erpnext/stock/serial_batch_bundle.py +++ b/erpnext/stock/serial_batch_bundle.py @@ -209,7 +209,7 @@ class SerialBatchBundle: frappe.db.set_value( "Serial and Batch Bundle", {"voucher_no": self.sle.voucher_no, "voucher_type": self.sle.voucher_type}, - {"is_cancelled": 1, "voucher_no": ""}, + {"is_cancelled": 1}, ) if self.sle.serial_and_batch_bundle: @@ -242,6 +242,12 @@ class SerialBatchBundle: if self.item_details.has_batch_no == 1: self.update_batch_qty() + if self.sle.is_cancelled and self.sle.serial_and_batch_bundle: + self.cancel_serial_and_batch_bundle() + + def cancel_serial_and_batch_bundle(self): + frappe.get_cached_doc("Serial and Batch Bundle", self.sle.serial_and_batch_bundle).cancel() + def submit_serial_and_batch_bundle(self): doc = frappe.get_doc("Serial and Batch Bundle", self.sle.serial_and_batch_bundle) self.validate_actual_qty(doc) diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index 9203f4570ad..a6206ac8dcf 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -25,6 +25,7 @@ from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry impor ) from erpnext.stock.utils import ( get_incoming_outgoing_rate_for_cancel, + get_incoming_rate, get_or_make_bin, get_stock_balance, get_valuation_method, @@ -841,14 +842,33 @@ class update_entries_after(object): get_rate_for_return, # don't move this import to top ) - rate = get_rate_for_return( - sle.voucher_type, - sle.voucher_no, - sle.item_code, - voucher_detail_no=sle.voucher_detail_no, - sle=sle, - ) + if self.valuation_method == "Moving Average": + rate = get_incoming_rate( + { + "item_code": sle.item_code, + "warehouse": sle.warehouse, + "posting_date": sle.posting_date, + "posting_time": sle.posting_time, + "qty": sle.actual_qty, + "serial_no": sle.get("serial_no"), + "batch_no": sle.get("batch_no"), + "serial_and_batch_bundle": sle.get("serial_and_batch_bundle"), + "company": sle.company, + "voucher_type": sle.voucher_type, + "voucher_no": sle.voucher_no, + "allow_zero_valuation": self.allow_zero_rate, + "sle": sle.name, + } + ) + else: + rate = get_rate_for_return( + sle.voucher_type, + sle.voucher_no, + sle.item_code, + voucher_detail_no=sle.voucher_detail_no, + sle=sle, + ) elif ( sle.voucher_type in ["Purchase Receipt", "Purchase Invoice"] and sle.voucher_detail_no diff --git a/erpnext/stock/tests/test_valuation.py b/erpnext/stock/tests/test_valuation.py index 05f153b4a0c..4d8990ae40b 100644 --- a/erpnext/stock/tests/test_valuation.py +++ b/erpnext/stock/tests/test_valuation.py @@ -195,7 +195,6 @@ class TestFIFOValuation(unittest.TestCase): total_value -= sum(q * r for q, r in consumed) self.assertTotalQty(total_qty) self.assertTotalValue(total_value) - self.assertGreaterEqual(total_value, 0) class TestLIFOValuation(unittest.TestCase): diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py index bd0d4697c94..4b0e2845c44 100644 --- a/erpnext/stock/utils.py +++ b/erpnext/stock/utils.py @@ -591,6 +591,13 @@ def scan_barcode(search_value: str) -> BarcodeScanResult: as_dict=True, ) if batch_no_data: + if frappe.get_cached_value("Item", batch_no_data.item_code, "has_serial_no"): + frappe.throw( + _( + "Batch No {0} is linked with Item {1} which has serial no. Please scan serial no instead." + ).format(search_value, batch_no_data.item_code) + ) + _update_item_info(batch_no_data) set_cache(batch_no_data) return batch_no_data diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js index 587a3b4ebfa..4c8a0ad60ed 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js +++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js @@ -101,9 +101,32 @@ frappe.ui.form.on('Subcontracting Order', { }, refresh: function (frm) { + if (frm.doc.docstatus == 1 && frm.has_perm("submit")) { + if (frm.doc.status == "Closed") { + frm.add_custom_button(__('Re-open'), () => frm.events.update_subcontracting_order_status(frm), __("Status")); + } else if(flt(frm.doc.per_received, 2) < 100) { + frm.add_custom_button(__('Close'), () => frm.events.update_subcontracting_order_status(frm, "Closed"), __("Status")); + } + } + frm.trigger('get_materials_from_supplier'); }, + update_subcontracting_order_status(frm, status) { + frappe.call({ + method: "erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order.update_subcontracting_order_status", + args: { + sco: frm.doc.name, + status: status, + }, + callback: function (r) { + if (!r.exc) { + frm.reload_doc(); + } + }, + }); + }, + get_materials_from_supplier: function (frm) { let sco_rm_details = []; diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json index 28c52c9272d..507e23365cc 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json +++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json @@ -370,7 +370,7 @@ "in_standard_filter": 1, "label": "Status", "no_copy": 1, - "options": "Draft\nOpen\nPartially Received\nCompleted\nMaterial Transferred\nPartial Material Transferred\nCancelled", + "options": "Draft\nOpen\nPartially Received\nCompleted\nMaterial Transferred\nPartial Material Transferred\nCancelled\nClosed", "print_hide": 1, "read_only": 1, "reqd": 1, @@ -454,7 +454,7 @@ "icon": "fa fa-file-text", "is_submittable": 1, "links": [], - "modified": "2023-06-03 16:18:17.782538", + "modified": "2024-01-03 20:56:04.670380", "modified_by": "Administrator", "module": "Subcontracting", "name": "Subcontracting Order", diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py index 0fe8c13efbd..daccbbbd0f9 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py +++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py @@ -7,7 +7,7 @@ from frappe.model.mapper import get_mapped_doc from frappe.utils import flt from erpnext.buying.doctype.purchase_order.purchase_order import is_subcontracting_order_created -from erpnext.buying.doctype.purchase_order.purchase_order import update_status as update_po_status +from erpnext.buying.utils import check_on_hold_or_closed_status from erpnext.controllers.subcontracting_controller import SubcontractingController from erpnext.stock.stock_balance import update_bin_qty from erpnext.stock.utils import get_bin @@ -68,6 +68,7 @@ class SubcontractingOrder(SubcontractingController): "Material Transferred", "Partial Material Transferred", "Cancelled", + "Closed", ] supplied_items: DF.Table[SubcontractingOrderSuppliedItem] supplier: DF.Link @@ -112,16 +113,10 @@ class SubcontractingOrder(SubcontractingController): def on_submit(self): self.update_prevdoc_status() - self.update_requested_qty() - self.update_ordered_qty_for_subcontracting() - self.update_reserved_qty_for_subcontracting() self.update_status() def on_cancel(self): self.update_prevdoc_status() - self.update_requested_qty() - self.update_ordered_qty_for_subcontracting() - self.update_reserved_qty_for_subcontracting() self.update_status() def validate_purchase_order_for_subcontracting(self): @@ -277,6 +272,9 @@ class SubcontractingOrder(SubcontractingController): self.set_missing_values() def update_status(self, status=None, update_modified=True): + if self.status == "Closed" and self.status != status: + check_on_hold_or_closed_status("Purchase Order", self.purchase_order) + if self.docstatus >= 1 and not status: if self.docstatus == 1: if self.status == "Draft": @@ -285,11 +283,6 @@ class SubcontractingOrder(SubcontractingController): status = "Completed" elif self.per_received > 0 and self.per_received < 100: status = "Partially Received" - for item in self.supplied_items: - if not item.returned_qty or (item.supplied_qty - item.consumed_qty - item.returned_qty) > 0: - break - else: - status = "Closed" else: total_required_qty = total_supplied_qty = 0 for item in self.supplied_items: @@ -304,13 +297,12 @@ class SubcontractingOrder(SubcontractingController): elif self.docstatus == 2: status = "Cancelled" - if status: - frappe.db.set_value( - "Subcontracting Order", self.name, "status", status, update_modified=update_modified - ) + if status and self.status != status: + self.db_set("status", status, update_modified=update_modified) - if status == "Closed": - update_po_status("Closed", self.purchase_order) + self.update_requested_qty() + self.update_ordered_qty_for_subcontracting() + self.update_reserved_qty_for_subcontracting() @frappe.whitelist() @@ -357,8 +349,8 @@ def get_mapped_subcontracting_receipt(source_name, target_doc=None): @frappe.whitelist() -def update_subcontracting_order_status(sco): +def update_subcontracting_order_status(sco, status=None): if isinstance(sco, str): sco = frappe.get_doc("Subcontracting Order", sco) - sco.update_status() + sco.update_status(status) diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order_list.js b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order_list.js index 7ca12642c5f..ec54944a849 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order_list.js +++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order_list.js @@ -10,7 +10,7 @@ frappe.listview_settings['Subcontracting Order'] = { "Completed": "green", "Partial Material Transferred": "purple", "Material Transferred": "blue", - "Closed": "red", + "Closed": "green", "Cancelled": "red", }; return [__(doc.status), status_colors[doc.status], "status,=," + doc.status]; diff --git a/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py b/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py index 37dabf1bfbe..6c0ee45d9c5 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py +++ b/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py @@ -95,14 +95,14 @@ class TestSubcontractingOrder(FrappeTestCase): self.assertEqual(sco.status, "Partially Received") # Closed - ste = get_materials_from_supplier(sco.name, [d.name for d in sco.supplied_items]) - ste.save() - ste.submit() - sco.load_from_db() + sco.update_status("Closed") self.assertEqual(sco.status, "Closed") - ste.cancel() - sco.load_from_db() + scr = make_subcontracting_receipt(sco.name) + scr.save() + self.assertRaises(frappe.exceptions.ValidationError, scr.submit) + sco.update_status() self.assertEqual(sco.status, "Partially Received") + scr.cancel() # Completed scr = make_subcontracting_receipt(sco.name) @@ -564,7 +564,6 @@ class TestSubcontractingOrder(FrappeTestCase): sco.load_from_db() - self.assertEqual(sco.status, "Closed") self.assertEqual(sco.supplied_items[0].returned_qty, 5) def test_ordered_qty_for_subcontracting_order(self): diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js index 575c4eda731..05357999a1b 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js @@ -93,7 +93,8 @@ frappe.ui.form.on('Subcontracting Receipt', { get_query_filters: { docstatus: 1, per_received: ['<', 100], - company: frm.doc.company + company: frm.doc.company, + status: ['!=', 'Closed'], } }); }, __('Get Items From')); diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py index 52bf13c78d9..7c2a1f12e2c 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py @@ -8,6 +8,7 @@ from frappe.utils import cint, flt, get_link_to_form, getdate, nowdate import erpnext from erpnext.accounts.utils import get_account_currency +from erpnext.buying.utils import check_on_hold_or_closed_status from erpnext.controllers.subcontracting_controller import SubcontractingController from erpnext.stock.stock_ledger import get_valuation_rate @@ -142,6 +143,7 @@ class SubcontractingReceipt(SubcontractingController): self.get_current_stock() def on_submit(self): + self.validate_closed_subcontracting_order() self.validate_available_qty_for_consumption() self.update_status_updater_args() self.update_prevdoc_status() @@ -165,6 +167,7 @@ class SubcontractingReceipt(SubcontractingController): "Repost Item Valuation", "Serial and Batch Bundle", ) + self.validate_closed_subcontracting_order() self.update_status_updater_args() self.update_prevdoc_status() self.set_consumed_qty_in_subcontract_order() @@ -175,6 +178,11 @@ class SubcontractingReceipt(SubcontractingController): self.update_status() self.delete_auto_created_batches() + def validate_closed_subcontracting_order(self): + for item in self.items: + if item.subcontracting_order: + check_on_hold_or_closed_status("Subcontracting Order", item.subcontracting_order) + def validate_items_qty(self): for item in self.items: if not (item.qty or item.rejected_qty): diff --git a/erpnext/tests/test_perf.py b/erpnext/tests/test_perf.py new file mode 100644 index 00000000000..fc17b1dcbda --- /dev/null +++ b/erpnext/tests/test_perf.py @@ -0,0 +1,24 @@ +import frappe +from frappe.tests.utils import FrappeTestCase + +INDEXED_FIELDS = { + "Bin": ["item_code"], + "GL Entry": ["voucher_type", "against_voucher_type"], + "Purchase Order Item": ["item_code"], + "Stock Ledger Entry": ["warehouse"], +} + + +class TestPerformance(FrappeTestCase): + def test_ensure_indexes(self): + # These fields are not explicitly indexed BUT they are prefix in some + # other composite index. If those are removed this test should be + # updated accordingly. + for doctype, fields in INDEXED_FIELDS.items(): + for field in fields: + self.assertTrue( + frappe.db.sql( + f"""SHOW INDEX FROM `tab{doctype}` + WHERE Column_name = "{field}" AND Seq_in_index = 1""" + ) + ) diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv index 2745d4da12b..84c71ba3670 100644 --- a/erpnext/translations/de.csv +++ b/erpnext/translations/de.csv @@ -103,6 +103,7 @@ Actual Qty is mandatory,Die tatsächliche Menge ist zwingend erforderlich, Actual Qty {0} / Waiting Qty {1},Tatsächliche Menge {0} / Wartezeit {1}, Actual Qty: Quantity available in the warehouse.,Tatsächliche Menge: Menge verfügbar im Lager., Actual qty in stock,Tatsächliche Menge auf Lager, +Actual Time (in Hours via Time Sheet), IST Zeit (in Stunden aus Zeiterfassung), Actual type tax cannot be included in Item rate in row {0},Tatsächliche Steuerart kann nicht im Artikelpreis in Zeile {0} beinhaltet sein, Add,Hinzufügen, Add / Edit Prices,Preise hinzufügen / bearbeiten, @@ -599,7 +600,7 @@ Course Code: ,Kurscode:, Course Enrollment {0} does not exists,Die Kursanmeldung {0} existiert nicht, Course Schedule,Kurstermine, Course: ,Kurs:, -Cr,Haben, +Cr,H, Create,Erstellen, Create BOM,Stückliste anlegen, Create Delivery Trip,Erstelle Auslieferungsfahrt, @@ -3400,7 +3401,7 @@ Do you want to submit the material request,Möchten Sie die Materialanfrage einr Doctype,DocType, Document {0} successfully uncleared,Dokument {0} wurde nicht erfolgreich gelöscht, Download Template,Vorlage herunterladen, -Dr,Soll, +Dr,S, Due Date,Fälligkeitsdatum, Duplicate,Duplizieren, Duplicate Project with Tasks,Projekt mit Aufgaben duplizieren, @@ -7369,6 +7370,7 @@ Default Stock UOM,Standardlagermaßeinheit, Sample Retention Warehouse,Beispiel Retention Warehouse, Default Valuation Method,Standard-Bewertungsmethode, Show Barcode Field,Anzeigen Barcode-Feld, +Show Balances in Chart Of Accounts,Saldo in Kontenplan anzeigen, Convert Item Description to Clean HTML,Elementbeschreibung in HTML bereinigen, Allow Negative Stock,Negativen Lagerbestand zulassen, Automatically Set Serial Nos based on FIFO,Automatisch Seriennummern auf Basis FIFO einstellen, @@ -8811,7 +8813,6 @@ Column {0},Spalte {0}, Field Mapping,Feldzuordnung, Not Specified,Keine Angabe, Update Type,Aktualisierungsart, -Dr,Soll, End Time,Endzeit, Fetching...,Abrufen ..., "It seems that there is an issue with the server's stripe configuration. In case of failure, the amount will get refunded to your account.","Es scheint, dass ein Problem mit der Stripe-Konfiguration des Servers vorliegt. Im Falle eines Fehlers wird der Betrag Ihrem Konto gutgeschrieben.", diff --git a/erpnext/utilities/bulk_transaction.py b/erpnext/utilities/bulk_transaction.py index df21b61139a..679d5bd348e 100644 --- a/erpnext/utilities/bulk_transaction.py +++ b/erpnext/utilities/bulk_transaction.py @@ -62,7 +62,7 @@ def retry_failed_transactions(failed_docs: list | None): task(log.transaction_name, log.from_doctype, log.to_doctype) except Exception as e: frappe.db.rollback(save_point="before_creation_state") - update_log(log.name, "Failed", 1, str(frappe.get_traceback())) + update_log(log.name, "Failed", 1, str(frappe.get_traceback(with_context=True))) else: update_log(log.name, "Success", 1) @@ -86,7 +86,7 @@ def job(deserialized_data, from_doctype, to_doctype): fail_count += 1 create_log( doc_name, - str(frappe.get_traceback()), + str(frappe.get_traceback(with_context=True)), from_doctype, to_doctype, status="Failed",